【发布时间】:2013-02-18 17:49:20
【问题描述】:
这是一个以前用VBA写的真实项目。
我想将其移至 Python 并使用“带有 Python 的 AutoCAD 的 ActiveX 自动化脚本”方法。这是我的代码:
# -*- coding: utf-8 -*-
from pyautocad import Autocad, APoint, aDouble
acad = Autocad(False, True)
acad.prompt("Hello, Autocad from Python\n")
print acad.doc.Name
xx = acad.model.AddCircle(APoint(0, 0), 10)
print(xx)
yy = acad.model.Add3Dpoly(aDouble([0, 0, 0, 10, 10, 10, 30, 20, 30, 0, 0, 0]))
print(yy.ObjectName)
print(yy.PlotStyleName)
# How to contruct an objectlist for AddRegion?
#regions = acad.model.AddRegion([yy])
#acad.model.AddExtrudedSolid(regions[0], 20, 0)
我的问题是,如何为AddRegion 构造一个对象列表?也许comtypes 有一些关于 VARINT 的话题。 COM之类的我真的没有经验……
【问题讨论】:
-
不幸的是,我还没有找到如何正确地将对象数组传递给 Autocad。 Related issue
-
直接从 COM 调用函数的简单解决方法是使用
acad.SendCommand('xxxx')。 pyCOM 传递字符串没有问题(数组是你遇到麻烦的地方)。这可以让你从 python 做一些自动化,但并不是每个 AutoCAD 函数都有一个简单的命令行界面,所以这是一个有限的解决方案。
标签: python com automation activex autocad