首部必须
#!/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. 基于TCP协议Socket通信

    服务器线程处理类 package demo4; import java.io.*; import java.net.Socket; /** * 服务器线程处理类 * @ClassName Server ...

  2. Git的精简用法

    作为一名开发人员,提交代码那是家常便饭,那如何有效地利用Git进行提交代码呢?在这里介绍一些常用.必要的命令,几乎够工作中使用了. (1)git pull 命令:拉取代码,这条命令没啥说的了,在提交代 ...

  3. cocos studio 中交互性

    cocos studio 属性->常规->交互性,勾选之后相当于代码中的setTouchEnabled(true)

  4. mybatis插入嵌套对象

    今晚做项目遇上了一个需求,需要插入嵌套对象. 对象结构是这样的: public class RegisterMsg{ private  Header header; private short pro ...

  5. Wannafly Winter Camp 2020 Day 5H Geometry PTSD - 构造,计算几何

    Solution 考虑如何计算点到平面的距离,我们可以用行列式算出锥形的体积和底面的面积,来得到距离 考虑构造一个等边三角形,这样基本是满足 \(\geq 1.7\) 的条件的 于是我们对它的坐标枚举 ...

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

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

  7. Dalsa 8K彩色相机Camera link C#采图

    一个采图工具,所以界面做的很简单. private SapAcquisition m_Acquisition; private SapBuffer m_Buffers; private SapAcqT ...

  8. laravel中{{}}和{!! !!}的区别

    1.{{}}和{!! !!} 中{{}}支持转义     一段html代码只是被当成普通的字符串输出 ,{!! !!} 不支持转移  一段html代码可以被正常的解析 1.2具体什么意思呢我们上代码演 ...

  9. pod has unbound immediate PersistentVolumeClaims : statefulset挂载不上pv的另一种情况

    大家都直到当volumeClaimTemplates匹配不上pv时,会出现statefulset挂载不到pv的问题.错误提示如下: error while running "VolumeBi ...

  10. Windows Server多用户同时远程登录

    因为工作需要,需要使用windwos作为一个远程登录跳板机,管理员对登录windwos机器再windwos的基础上连接别的机器,普通用户也可以连接windwos机器再连接别的机器,关于管理员普通用户连 ...