python操作cad

摘要:
#如果此时尚未打开cad,则AutocadfromPython“)#acad.prompt()用于在cad控制台打印(acad.doc.Name)#acad.doc.NName中打印文本。该名称存储最新打开的cad图形名称的运行结果:#如果此时未打开cad,cad软件将自动打开acad=Autocad(create_If_not_exists=True)acad.promp(“您好,
from pyautocad import Autocad

# 自動連接上cad,只要cad是開着的,就創建了一個<pyautocad.api.Autocad> 對象。這個對象連接最近打開的cad文件。
# 如果此時還沒有打開cad,將會創建一個新的dwg文件,並自動開啓cad軟件
acad = Autocad(create_if_not_exists=True)
acad.prompt("Hello, Autocad from Python")# acad.prompt() 用來在cad控制台中打印文字
print (acad.doc.Name) # acad.doc.Name儲存着cad最近打開的圖形名

运行结果:

Hello, Autocad from Python
Drawing2.dwg

from pyautocad import Autocad

# 自動連接上cad,只要cad是開着的,就創建了一個<pyautocad.api.Autocad> 對象。這個對象連接最近打開的cad文件。
# 如果此時還沒有打開cad,將會創建一個新的dwg文件,並自動開啓cad軟件
acad = Autocad(create_if_not_exists=True)
acad.prompt("Hello, Autocad from Python")# acad.prompt() 用來在cad控制台中打印文字
print (acad.doc.Name) # acad.doc.Name儲存着cad最近打開的圖形名

#導入APoint類是非常必要的,畫圖都是靠點來畫,而且CAD中所有的點都必須用APoint類進行包裹。APoint(10,30),
# 其中10代表點的x座標,30代表點的y座標。
from pyautocad import APoint
import math
acad.model.AddLine(p1,p2) # 畫直線,p1是畫線的第一個點,p2是第二個點
text = acad.model.AddText("{0}".format(text), p, 15) # 添加文本,第一個參數就是添加的文本字符串,第二p是被APoint類包裹的點,也就是說在哪個座標下顯示文本,15是文本字體大小
text.move(p1, p2) # 文本從p1點移動到p2點
acad.model.AddCircle(p, 10) # 畫圓,第一個參數p就是APoint類包裹的點,也就是圓心位置,第二參數10是半徑大小
acad.model.AddArc(p, radius, math.radians(90), math.radians(270)) # 畫圓弧,第一個參數是在哪個點畫圓弧,第二個參數是半徑,第三個是開始弧(弧度制,不是角度制),第四個點是結束弧。
# 保存cad圖到指定位置,第一個參數一定是保存的絕對路徑!!,64是保存的一種格式,筆者從1到100都試了一遍,
# 有一些是可以生成圖的,都是CAD可以打開的文件類型格式。其實跟着筆者寫64就好!
acad.doc.SaveAs("{0}".format('cadtest.dwg'), 64)

上面这个例子不可以运行,因为没有初始化点的坐标。

from pyautocad import Autocad, APoint
acad = Autocad(create_if_not_exists=True)
acad.prompt("Hello, Autocad from Python
")
print(acad.doc.Name)
p1 = APoint(0, 0)
p2 = APoint(50, 25)
for i in range(5):
    text = acad.model.AddText('Hi %s!' % i, p1, 2.5)
    acad.model.AddLine(p1, p2)
    acad.model.AddCircle(p1, 10)
    p1.y += 10

dp = APoint(10, 0)
# !!!!!!!遍歷cad圖形對象以及訪問/修改對象屬性
for text in acad.iter_objects('Text'):
    print('text: %s at: %s' % (text.TextString, text.InsertionPoint))
    text.InsertionPoint = APoint(text.InsertionPoint) + dp

for obj in acad.iter_objects(['Circle', 'Line']):
    print(obj.ObjectName)

运行结果:

python操作cad第1张

C:UsersQinAppDataLocalProgramsPythonPython36python.exe D:/statistics_chenqichao/20180313同济大学嘉定校区/parse1/wuyong_2.py
Hello, Autocad from Python

Drawing3.dwg
text: Hi 0! at: (0.0, 0.0, 0.0)
text: Hi 1! at: (0.0, 10.0, 0.0)
text: Hi 2! at: (0.0, 20.0, 0.0)
text: Hi 3! at: (0.0, 30.0, 0.0)
text: Hi 4! at: (0.0, 40.0, 0.0)
AcDbLine
AcDbCircle
AcDbLine
AcDbCircle
AcDbLine
AcDbCircle
AcDbLine
AcDbCircle
AcDbLine
AcDbCircle

Process finished with exit code 0

from pyautocad import Autocad, APoint
acad = Autocad(create_if_not_exists=True)
for item in acad.iter_objects("PolyLine"):
    print(item.Coordinates)

上面的代码提取多段线的各顶点坐标。

https://www.smwenku.com/a/5bc0b8b62b717711c923e688/


免责声明:文章转载自《python操作cad》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ESXI虚拟机配置公网IP之后,出现重启机器之后,网络出现问题NVIDIA深度架构下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

day9-Python学习笔记(二十二)多线程,多进程

多线程,多进程 多线程: 咱们打开的程序都一个进程。 线程是包含在进程里的。 进程里面最少有一个线程 线程之间是互相独立的 主线程 cpu是几核的,就只能同时运行几个进程 python的多线程是利用不了多核cpu的,GIL 全局解释器锁的 如果想利用多核cpu的话,就是用多进程 I0密集型任务 使用io比较多的 多线程 cpu密集型任务 多进程 能使...

python(3)- 循环语句:从最内层跳出多层循环

跳出多层循环:三层循环,最里层直接跳出3层方法一: 在Python中,函数运行到return这一句就会停止,因此可以利用这一特性,将功能写成函数,终止多重循环 def work(): #定义函数 for i in range(5): print("i=", i)...

python dlib学习(六):训练模型

前言前面的博客都是使用dlib官方提供的训练好的模型,进行目标识别。- python dlib学习(一):人脸检测- python dlib学习(二):人脸特征点标定- python dlib学习(三):调用cnn人脸检测- python dlib学习(四):单目标跟踪- python dlib学习(五):比对人脸直接进入主题吧,这次我们要自己训练一个模型...

AutoCAD批量导出点坐标

需求背景: 需要批量导出DWG文件中的散点树的位置信息,以Excel文件格式存储。 实现方法: 在AutoCAD2012打开dwg文件,点击“插入”选项卡中的“提取数据”工具(或输入DATAEXTRACTION命令): 选择“创建新数据提取” 选择需要导出的对象 设置导出参数 选择输出Excel文件保存路径 导出结果: 总结: 该工具...

EF Core 难道不支持GroupBy吗?

   最近在修改一个.NET Core的项目,其中ORM用的EF Core,在一次查询分页中,遇到了一个很奇怪的问题,每次查询都很慢,明明已经按照某个编号字段Group By并且还做了分页,为啥查询还这么的慢呢? 首选我想当的解决方案就是为 每个条件查询字段添加索引,但是依然无效,还是很慢;然后查看log日志,仔细核对EF生成的sql,发现了生成的sql根...

Oracle EBS OM 创建订单

DECLARE l_header_rec OE_ORDER_PUB.Header_Rec_Type; l_line_tbl OE_ORDER_PUB.Line_Tbl_Type; l_action_request_tbl OE_ORDER_PUB.Request_Tbl_Type; l_header_adj_tbl OE_ORDER_PUB.Hea...