- 积分
- 2220
- 明经币
- 个
- 注册时间
- 2021-11-14
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|

楼主 |
发表于 2022-4-20 22:15:28
|
显示全部楼层
本帖最后由 landsat99 于 2022-4-20 22:17 编辑
改了一下,用的AddExtrudedSolid,可以生成。
 - import win32com.client
- import pythoncom
- ProgramID = "Autocad.Application" # 程序ID
- cadapp = win32com.client.Dispatch(ProgramID) # 获取CAD程序
- cadapp.Visible = True # 程序可见
- doc = cadapp.ActiveDocument # 当前文档
- print(doc.Name) # 当前文档的名称
- doc.Utility.Prompt("Hello! Autocad from pywin32com.")
- msp = doc.ModelSpace # 模型空间
- def ConvertArrays2Variant(inputdata, vartype="Variant"):
- if vartype == "ArrayofObjects": # 对象数组
- outputdata = win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_DISPATCH, inputdata)
- if vartype == "Double": # 双精度
- outputdata = win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, inputdata)
- if vartype == "ShortInteger": # 短整型
- outputdata = win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_I2, inputdata)
- if vartype == "LongInteger": # 长整型
- outputdata = win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_I4, inputdata)
- if vartype == "Variant": # 变体
- outputdata = win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_VARIANT, inputdata)
- return outputdata
- a = (0, 0, 0)
- Center = ConvertArrays2Variant(a, 'Double')
- Radius = 10
- obj = msp.AddCircle(Center, Radius)
- list_obj = []
- list_obj.append(obj)
- reval_region = msp.AddRegion(ConvertArrays2Variant(list_obj, "ArrayofObjects"))
- # PointsArray = ConvertArrays2Variant((0,10,10,10,10,10,10,10,10), 'Double')
- # StartTangent = ConvertArrays2Variant((10,10,10), 'Double')
- # EndTangent =ConvertArrays2Variant((10,10,10), 'Double')
- # RetVal_1 = msp.AddSpline(PointsArray, StartTangent, EndTangent)
- # RetVal = msp.AddExtrudedSolidAlongPath(reval_region[0], RetVal_1)
- height = 18
- taperAngle = 0.1
- RetVal = msp.AddExtrudedSolid(reval_region[0], height, taperAngle)
如果使用 AddExtrudedSolidAlongPath,在vba下好像有Bug。。 因为用Acad官方的AddExtrudedSolidAlongPath 的VBA源码(2020版源码-2020acad)都无法运行!
AddExtrudedSolid 则没有问题。 vba、python都可以运行。
|
|