首部必须
#!/usr/bin/env python
# -*- coding: utf-8 -*-

  

导入pyautocad
import pyautocad

  


import re

# 设置python的默认编码,只针对python2,python3不需要
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

  


# 打开cad文件
acad.ActiveDocument.Application.Documents.Open(path)

例子
acad.ActiveDocument.Application.Documents.Open(r"C:\Users\Administrator\Desktop\cad\南栅南冲口股份经济合作社-宴岗股份经济联合社土地权属界线核定书附图.dwg".decode("utf-8"))

  

# 新建cad文件
DrawingObj = acad.ActiveDocument.Application.Documents.Add("C:\Users\Administrator\Desktop\cad\南栅南冲.dwg")

  


# 连接及库导入
acad = Autocad( create_if_not_exists = True)
acad.ActiveDocument.Application.Documents.Open(r"C:\Users\Administrator\Desktop\cad\南栅南冲口股份经济合作社-宴岗股份经济联合社土地权属界线核定书附图.dwg".decode("utf-8")) print(acad.doc.Name) # 遍历cad文本,并且打印文本及点坐标,text.InsertionPoint[0]为y坐标,text.InsertionPoint[1]为x坐标,text.InsertionPoint为X,Y,Z元组
for text in acad.iter_objects('Text'):
# 如果遍历的文字包含 东莞市虎门镇,打印文本及点坐标
if re.findall(u"东莞市虎门镇",text.TextString):
print text.TextString,text.InsertionPoint[0] for text in acad.iter_objects('Line'):
# 遍历线,如果线颜色等于红色,text.layer打印线图层,text.color线的颜色,text.StartPoint线的开始点,text.EndPoint结束点
if text.color == 1:
print text.layer
print text.color
print text.StartPoint,text.EndPoint # 如果该线段是直线,打印线开始结束点
if text.StartPoint:
print text.StartPoint,text.EndPoint
# 否则可以判断为多段线,打印多段线端点
else:
print text.Coordiantes LayerObj = acad.ActiveDocument.Layers.Add("HIT_Layer1")
# 添加新图层,图层名称为"HIT_Layer"。y
acad.ActiveDocument.ActiveLayer = LayerObj
# 将"HIT_Layer"图层设置为当前图层。
ClrNum = 1
LayerObj.color = ClrNum
# ClrNum为颜色索引号,其取值范围为[0,256];
# 标准颜色的颜色索引号指定如下::1 红、2 黄、3 绿、4 青、5 蓝、6 洋红、7 白/黑;
# 0 ByBlock、256 ByLayer;
# 其他颜色索引号见 https://wenku.baidu.com/view/9d458b70195f312b3069a505.html。
# 打印图层总数打印并打印每个图层名字
layers_nums = acad.ActiveDocument.Layers.count
# 当前文件模型空间中所包含的图层总数
print layers_nums
layers_names = [acad.ActiveDocument.Layers.Item(i).Name for i in range(layers_nums)]
# print layers_names
for i in layers_names:
# 遍历图层名字并打印
print i.decode("utf-8") # 批量创建图层
clr_num = [1, 2, 3]
# 图层颜色列表
layers_name = ["HIT_图层_1", "HIT_图层_2", "HIT_图层_3"]
# 图层名称列表
try:
len(clr_num) == len(layers_name)
except:
print("图层颜色号个数与图层个数不匹配")
layers_obj = [acad.ActiveDocument.Layers.Add(i) for i in layers_name]
# 批量创建图层
for j in range(len(layers_obj)):
layers_obj[j].color = clr_num[j]
# 批量指定图层颜色
# —— # cad另存为,路径必须为绝对路径,而且不能是中文
for i in range(100):
try:
acad.doc.SaveAs(r'D:\asf\vad\fw%s'%i,i)
time.sleep(1)
except:
continue # (2)、指定文件另存为
acad.ActiveDocument.Application.Documents("PyAutoCAD.dwg").SaveAs("D:\AutoCAD\PyAutoCAD_SaveAs", 61)
# 关闭已存在文件
acad.ActiveDocument.Application.Documents("PyAutoCAD.dwg").Close(True, "PyAutoCAD_已变更.dwg")
# 关闭PyAutoCAD.dwg文件。
# True 布尔值,为系统默认,表示打开文件后关闭前文件若发生变更,则保存变更,并另存为PyAutoCAD_已变更.dwg
# 此时文件夹中同时存在未变更的"PyAutoCAD.dwg"和已变更的"PyAutoCAD_已变更.dwg"
# 若第二项空缺,则新文件名为"PyAutoCAD.dwg",覆盖之前未变更的文件。
# 已知文件名设为当前
acad.ActiveDocument.Application.Documents("PyAutoCAD.dwg").Activate()
# 将PyAutoCAD.dwg设为当前文件。 未知文件名设为当前
DrawingObj.Activate()
# 将New_Drawing设为当前文件。 关闭新建文件
DrawingObj .Close(True, "HIT.dwg")
# 关闭New_Drawing文件。
# 文件夹中仅存在"HIT.dwg"一个文件。 关闭当前文件
acad.ActiveDocument.Close()
# 关闭当前文档。 # 打印包含指定文本的坐标,文本,坐标基点为文本左基点
for text in acad.iter_objects('Text'):
# print text.TextString, text.InsertionPoint
if re.findall(u"东莞市虎门镇",text.TextString):
# 分别打印文本,点,点Y,点X
print text.TextString,text.InsertionPoint,text.InsertionPoint[0],text.InsertionPoint[1] import re
text.ObjectName # 移动文本
for text in acad.iter_objects('Text'):
text.move(APoint(38467756.90809752, 2519896.6068465607), APoint(100, 100)

pyautocad的更多相关文章

  1. python操作cad

    from pyautocad import Autocad # 自動連接上cad,只要cad是開着的,就創建了一個<pyautocad.api.Autocad> 對象.這個對象連接最近打開 ...

  2. 文件另存为——Autocad.doc.SaveAs

    一.前言 使用pyautocad编辑好cad图纸后,往往涉及到一个保存的问题,但是官方文档并未提及,所以只能自己来了,测试了好久,终于是找到了保存的命令和参数说明. 二.方法介绍 Autocad.do ...

  3. Process Autocad by python

    一.处理AutoCad模块 -pyautocad 1.安装 pip install pyautocad 注:1.该操作会自动安装 comtypes模块,如果其他方式安装,请自行安装comtypes模块 ...

  4. CAD

    文件另存为——Autocad.doc.SaveAs   一.前言 使用pyautocad编辑好cad图纸后,往往涉及到一个保存的问题,但是官方文档并未提及,所以只能自己来了,测试了好久,终于是找到了保 ...

  5. 编程读写CAD文件验证

    背景 B/S应用系统,根据用户上传数据:业务数据和CAD坐标数据,经过一系列运筹算法运算后,输出一批坐标数据,作为给用户的规划结果.此时需要方便直观的给用户展示坐标数据.可选方式有两个: web页面画 ...

随机推荐

  1. StarUML 2下载、安装、破解全过程

      StarUML官方下载地址:  http://staruml.io/download 破解: ​  1.使用Editplus或者Notepad++等特殊的文本编辑器打开 安装位置下/www/lic ...

  2. thinkphp3.2短信群发项目实例

    项目功能是企业给客户群发短信,我就写这么多,也不知道你能不能运行成功,如果有问题可以在QQ上问我:605114821 项目文件SMS_V2.zip下载地址,百度云:http://yun.baidu.c ...

  3. 使用ADO.NET 访问数据库

    一.ADO.NET :用于连接数据库的技术 1.ADO.NET分为两大组件 DataSet:数据集 .NET FRAMWORK :用于连接到数据库,发送命令,检索结果 2.ADO.NET四大核心对象 ...

  4. CSS: inline、block和inline-block的区别

    block 块级元素特点: 1.每个块级元素都从新的一行开始,并且其后的元素也另起一行.(很霸道,一个块级元素独占一行) 2.元素的高度.宽度.行高以及顶和底边距都可设置. 3.元素宽度在不设置的情况 ...

  5. [Python]爬取CSDN论坛 标题 2020.2.8

    首先新建一个Lei.txt 内容为: CloudComputingParentBlockchainTechnologyEnterpriseDotNETJavaWebDevelopVCVBDelphiB ...

  6. 多线程的sleep、yield、join用法及sleep与wait的区别

    Thread类的方法列表:sleep.yield.join用于线程的协作,围绕线程的调度 1.join()等待线程结束:调用join方法的线程,执行结束后才会释放锁.主线程main中调用启动线程(调用 ...

  7. MapReduce第一个项目 WordCount

    参考自林子雨大数据教学:     http://dblab.xmu.edu.cn/blog/hadoop-build-project-using-eclipse/ 创建一个文件夹:放入一个文本文件:填 ...

  8. PHP实现导出Excel文件

    实现代码: private function exportExcel($params) { $arr = $this->getExportData($params); // 获取需要导出的信息( ...

  9. Selenium3+python自动化009- 截图

    一.断言 assert cur_title=='百度一下,你就知道1','title断言失败' 'title断言失败':自定义报错 二.截图 # 调用截屏方法(路径+截图名称)driver.get_s ...

  10. docker镜像相关的常用操作

    1.保存镜像 #docker save 镜像名称 -o 保存的完整地址和文件名 docker save zhoushiya/zhiboyuan -o d:/zhiboyuan.tar 2.载入镜像 # ...