我使用Python语言和comtypes库处理AutoCAD绘图。这是我的代码片段:
from comtypes.client import *
from comtypes.automation import *
def connect_acad(self):
self.acad = GetActiveObject("AutoCAD.Application")
self.dwg = self.acad.ActiveDocument
self.mspace = self.dwg.ModelSpace
def mark_point(self, xy, num, lay):
def point(*args):
lst = [0.]*3
if len(args) < 3:
lst[0:2] = [float(x) for x in args[0:2]]
else:
lst = [float(x) for x in args[0:3]]
return VARIANT(array("d",lst))
def variant(data):
return VARIANT(VT_VARIANT, data)
def vararr(*data):
if ( len(data) == 1 and
isinstance(data, collections.Iterable) ):
data = data[0]
return map(variant, data)
p1 = point(xy[0], xy[1])
ent = self.mspace.AddCircle(p1, 0.3)
htch = self.mspace.AddHatch(0, 'SOLID', False)
htch.AppendOuterLoop(vararr([ent,]))
htch.Evaluate()
如果有兴趣,请在此处填写完整代码:https://github.com/nsedenkov/py_acadcoord/blob/master/acadcoord.py
任何工作都正常,但命令htch.AppendOuterLoop会引发异常“ComTypeError”。可能有人知道从AutoCAD图形实体为方法AppendOuterLoop制作变体数组的正确方法吗?谢谢!
答案 0 :(得分:0)
预期的类型是:
类型:变体(弧形,圆形,椭圆形,直线,折线,区域,样条线对象的数组)
我还建议仔细检查条件:
上的完整文档形成封闭边界的对象数组。该数组可以包含一个或多个对象。如果使用多个对象,则它们的端点必须重合才能正确创建循环。