pyautocad
首部必须
#!/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的更多相关文章
- python操作cad
from pyautocad import Autocad # 自動連接上cad,只要cad是開着的,就創建了一個<pyautocad.api.Autocad> 對象.這個對象連接最近打開 ...
- 文件另存为——Autocad.doc.SaveAs
一.前言 使用pyautocad编辑好cad图纸后,往往涉及到一个保存的问题,但是官方文档并未提及,所以只能自己来了,测试了好久,终于是找到了保存的命令和参数说明. 二.方法介绍 Autocad.do ...
- Process Autocad by python
一.处理AutoCad模块 -pyautocad 1.安装 pip install pyautocad 注:1.该操作会自动安装 comtypes模块,如果其他方式安装,请自行安装comtypes模块 ...
- CAD
文件另存为——Autocad.doc.SaveAs 一.前言 使用pyautocad编辑好cad图纸后,往往涉及到一个保存的问题,但是官方文档并未提及,所以只能自己来了,测试了好久,终于是找到了保 ...
- 编程读写CAD文件验证
背景 B/S应用系统,根据用户上传数据:业务数据和CAD坐标数据,经过一系列运筹算法运算后,输出一批坐标数据,作为给用户的规划结果.此时需要方便直观的给用户展示坐标数据.可选方式有两个: web页面画 ...
随机推荐
- Redis事务与可分布式锁
1 Redis事务 1.1 Redis事务介绍 l Redis的事务是通过MULTI,EXEC,DISCARD和WATCH这四个命令来完成的. l Redis的单个命令都是原子性的,所以 ...
- python全栈学习 day04
列表基本操作: #!/usr/bin/env python # -*- coding:utf-8 -*- ''' li = ['alex', [1, 2, 3], 'wusir', 'godness' ...
- beautifulsoup4进阶学习笔记
requests库是可以找到想要的东西,基本上几行代码就搞定,但是进一步把有用的内容提取出来变成自己想要的格式来方便后续进行数据分析 正则表达式提取的话,需要一些时间成本,这个可以每天积累一点. 这里 ...
- Java锁机制深入理解
Java锁机制 背景知识 指令流水线 CPU的基本工作是执行存储的指令序列,即程序.程序的执行过程实际上是不断地取出指令.分析指令.执行指令的过程. 几乎所有的冯•诺伊曼型计算机的CPU,其工 ...
- springboot中返回值json中null转换空字符串
在实际项目中,我们难免会遇到一些无值.当我们转JSON时,不希望这些null出现,比如我们期望所有的null在转JSON时都变成“”“”这种空字符串,那怎么做呢? Jackson中对null的处理 @ ...
- java学习笔记之集合—ArrayList源码解析
1.ArrayList简介 ArrayList是一个数组队列,与java中的数组的容量固定不同,它可以动态的实现容量的增涨.所以ArrayList也叫动态数组.当我们知道有多少个数据元素的时候,我们用 ...
- 爬取豆瓣音乐TOP250的数据
参考网址:https://music.douban.com/top250 因为详细页的信息更丰富,本次爬虫在详细页中进行,因此先爬取进入详细页的网址链接,进而爬取数据. 需要爬取的信息有:歌曲名.表演 ...
- 51nod(1089 最长回文子串 V2)(hash 加二分)
1089 最长回文子串 V2(Manacher算法) 回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串. 输入一个字符串Str,输出Str里最长回文子串的长度. 输入 ...
- The Number of Inversions
For a given sequence A={a0,a1,...an−1}A={a0,a1,...an−1}, the number of pairs (i,j)(i,j) where ai> ...
- Linux之温故知新2
1.关于ssh免密码登陆的ssh-keygen, ssh-copy-id的使用, 然后使用ssh-copy-id user@remote将公钥传给服务器, 以及别名 1 C:\Users\linxmo ...