Я работаю с чертежом AutoCAD, используя библиотеку языков и языков программирования Python. Это фрагмент моего кода:Создайте объект Hatch в AutoCAD с помощью COM
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? Спасибо!
Спасибо, Augusto! Разумеется, я уже прочитал эту статью в базе знаний Autodesk. Я также видел это и многие другие примеры VBA и LISP. Но как насчет Python? Native Python поддерживает только числовые типы массивов, но для AppendOuterLoop мне нужен вариантный массив графических объектов AutoCAD (Arc, Line, Circle и др.) - в моем скрипте только 1 круг (( – nsedenkov
Я не эксперт по Python ... но несколько статей, в которых упоминается win32com.client.VARIANT, вы пробовали? Извините, что не помогли. –