• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

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

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

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

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

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