|
发表于 2022-7-6 21:59:25
|
显示全部楼层
“”“自动化AutoCAD的示例:
1) 运行autocad图形
2) 阅读一些图纸数据:
模型空间中的对象数;
AutoCAD系统变量的值;
2) 添加到图形:
指向
线
多段线。
本代码中提供了一些访问Autocad对象的示例。
我们必须处理用于传入和传出阵列数据的变体
AutoCAD COM的。使用comtypes可以实现不同的变体类型
(win32com.client包并非如此)。
这个例子应该改进,尤其是在用户界面方面。
"""
导入数组
导入comtypes。客户
#获取AutoCAD应用程序的运行实例
acad=通信类型。客户GetActiveObject(“AutoCAD.Application”)
#文档对象
doc=acad。活动文档
#获取模型空间对象
ms=文件。模型空间
#获取一些有用的数据
DwgName=文件。名称#文件名
count=ms.count#模型空间中的项数
#获取变量名
sysVarName='DWGPREFIX'#图形目录
varData=文件。GetVariable(sysVarName)
#空闲时查看
打印“文件:”,DwgName
打印“N.项目:”,计数
#>>>在模型空间中:
#添加点对象
#设置AutoCAD系统变量的值。
#PDMODE和PDSIZE系统变量控制点对象的外观
sysVarName=“PDMODE”#指定点形状
文件。SetVariable(sysVarName,3)#代码3表示X形状
sysVarName=“PDSIZE”#控制点的大小
文件。SetVariable(sysVarName,3)#绝对大小(3个单位图标点高度的一半)
pt=阵列。数组('d',[0,0,0])#在变量中转换
点=ms.AddPoint(pt)
#添加一行
pt1=阵列。数组('d',[0.0,0.0,0])#起点
pt2=阵列。数组('d',[20.0,20.0,0])#端点
line=ms.AddLine(pt1,pt2)
#添加多段线
#我们分配顶点
ptl=[]
pt=[20.0,20.0,0]
ptl=ptl+pt
pt=[40.0,30.0,0]
ptl=ptl+pt
pt=[70.0,40.0,0]
ptl=ptl+pt
ptlst=阵列。阵列(“d”,ptl)
pline=ms.AddPolyline(ptlst)
#选择项目
#用户通过在屏幕上拾取点来选择对象(多段线)
returnObj=文件。公用事业GetEntity(“选择对象:”)
“”“autocad中的每个图元都有一个唯一的值。
例如,对于line对象,ObjectName为AcDbLine,EntityType值为19”“”
#直线、多段线的通用代码
打印“DXF实体名称:”,returnObj[0]。EntityName#是对象的类名
打印returnObj[0]。实体类型#实体的类型
打印returnObj[0]。层
打印returnObj[0]。长
#仅多段线
retCoord=returnObj[0]。协调
num\u顶点=len(retCoord)/3
对于范围内的i(num_顶点):
打印returnObj[0]。坐标(一)
打印“>>>>>>” |
|