Добрый день!
Пытаюсь работать с DXF-файлом, сгенерированным DeltaDesign (разводка платы). Файл удалось открыть - Компас его воспринимает, как фрагмент. Получается извлечь слои, плюс параметр ILayer.ObjectCount для каждого слоя показывает ненулевое число.
Командой
Objects = kompas_api7_module.IDrawingContainer(Layer)
Пытаюсь преобразовать слой в контейнер, но при попытке получить примитивы получаю сообщение "Член группы не найден". На всякий случай привожу весь текст
DocViews=kompas_document_2d.ViewsAndLayersManager.Views
for Item in DocViews:
View=kompas_api7_module.IView(Item)
if View.Name=='Системный вид':
#Сохраняем вид для последующего возвращения на лист
ReferView=View
break
FilePath=kompas_object.ksChoiceFile('dxf', "DXF-файлы (*.dxf)|*.dxf|Все файлы (*.*)|*.*||", True)
if not FilePath=='':
Converter=application.Converter('ImpExp\\dwgdxfImp.rtw')
Converter.Convert(FilePath, 'DeltaTemp', 0, False)
#DXFDoc=kompas_object.ActiveDocument2D()
DXF_doc=kompas_api7_module.IKompasDocument2D(application.ActiveDocument) #Присваиваем переменной появившийся фрагмент
DXFView=DXF_doc.ViewsAndLayersManager.Views.ActiveView #DXF-файл преобразован в фрагмент, где единственный вид - его и присваиваем переменной
#DXFObjects = kompas_api7_module.IDrawingContainer(DXFView)
#DXFMacro=DXFObjects.LineSegments
DXFLays=DXFView.Layers
for Item in DXFLays:
Layer=kompas_api7_module.ILayer(Item)
rezstr=str(Layer.Name)+' '+str(Layer.ObjectCount)
print(rezstr)
if Layer.Name=='BOARD_OUTLINE':
Objects = kompas_api7_module.IDrawingContainer(Layer)
MacroObjects=Objects.MacroObjects
print(MacroObjects)
BRDView=DocViews.Add
iDocument2D.ksOpenView(ReferView.Number)
В самом Компасе показывается, что слой BOARD_OUTLINE содержит объект Макро:1
Objects = kompas_api7_module.IDrawingContainer(DXFView)
А так получилось, что среди всех объектов None - в том числе и в Objects.MacroObjects