连接CAD:
import pythoncom
import win32com.client
import math
#连接Python与CAD
cad=win32com.client.Dispatch("AutoCAD.Application")#"AutoCAD.Application.18",默认打开的CAD,也可在后指定版本18
doc=cad.ActiveDocument #连接活动文档
doc.Utility.Prompt("HELLO,Autocad from pywin32.")#向CAD输入HELLO,CAD
print(doc.Name)#打印文档名称
#转换数据类型函数
def vtpnt(x, y, z=0):
"""坐标点转化为浮点数"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x, y, z))
def vtobj(obj):
"""转化为对象数组"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_DISPATCH, obj)
def vtfloat(lst):
"""列表转化为浮点数"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, lst)
def vtint(lst):
"""列表转化为整数"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_I2, lst)
def vtvariant(lst):
"""列表转化为变体"""
return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_VARIANT, lst)
#定义模型空间
msp=doc.ModelSpace
使用示例:
函数适用对象:All Drawing Objects (Except Pviewport and PolygonMesh)
#创建两直线
startPoint=vtpnt(0,0)
endPoint=vtpnt(49,50)
lineT=msp.AddLine(startPoint,endPoint)
startPoint=vtpnt(50,0)
endPoint=vtpnt(50,30)
lineS=msp.AddLine(startPoint,endPoint)
#获取交点
point=lineS.IntersectWith(lineT,3)#3表示两条直线都延伸的交点,详见下表
print(point)
参数对照表
成员名 | 描述 | 参数 |
ExtendBoth | 两个图元对象都延伸 | 3 |
ExtendArgument | 只延伸作为参数的图元对象 | 2 |
ExtendThis | 只延伸调用该方法的图元对象 | 1 |
OnBothOperands | 都不延伸 | 0 |