Я использовал Autocad API для заполнения атрибутов блока на основе (предварительно определенного) идентификатора дескриптора. Вот пример реализации:
frame1 = acad.ActiveDocument.HandleToObject('18CA1')
frame2 = acad.ActiveDocument.HandleToObject('77CE9')
frames = [frame1, frame2]
for i in range(len(frames)):
for attrib in frames[i].GetAttributes():
if attrib.TagString == 'DATE':
attrib.TextString = datasource.date
if attrib.TagString == 'CLIENT_NAME':
attrib.TextString = datasource.client_name
attrib.Update()
Теперь я хочу реализовать ту же функциональность, используя библиотеку ezdxf. Я просто не смог найти метод, похожий на .HandleToObject ("xxx") . Основываясь на следующем коде, я определил, что идентификаторы идентификатора действительно такие же, как в реализации autocad.
modelspace = dxf.modelspace()
for e in modelspace:
if e.dxftype()== 'TEXT':
print("text: %s\n" % e.dxf.text)
print("handle: %s\n" % e.dxf.handle)
Возможно ли это в ezdxf? Я составил списки всех описанных дескрипторов c, которые мне нужно изменить, и в идеале я бы предпочел перебирать этот список, а не перебирать все сущности, чтобы проверить их дескриптор.