Как добраться до фрагментов импортированного DXF?

Автор Andrei88, 25.05.23, 07:09:21

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Andrei88

Добрый день!
Пытаюсь работать с 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

Slaviation


Andrei88

А так получилось, что среди всех объектов None - в том числе и в Objects.MacroObjects