Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => C# => Тема начата: bbb от 12.02.19, 10:32:26

Название: Получить ksDocument3D из ksPart
Отправлено: bbb от 12.02.19, 10:32:26
Добрый день.
Для того чтобы получить интерфейс ksDocument3D из ksPart я беру ksPart на редактирование так:

ksDocument3D kdoc = (ksDocument3D)part.BeginEdit();

А можно не беря на редактирование конвертнуть интерфейс?
Название: Re: Получить ksDocument3D из ksPart
Отправлено: once от 12.02.19, 10:46:30
KompasObject::Document3D, KompasObject::ActiveDocument3D
Методы описаны в SDK
Название: Re: Получить ksDocument3D из ksPart
Отправлено: bbb от 12.02.19, 10:49:49
Цитата: once от 12.02.19, 10:46:30
KompasObject::Document3D, KompasObject::ActiveDocument3D
Методы описаны в SDK

Он не активный. Это деталь в сборке, активная сборка. А KompasObject::Document3D это новый объект создаст
Название: Re: Получить ksDocument3D из ksPart
Отправлено: #programmer от 12.02.19, 11:51:24
А зачем вам именно ksDocument3D?
Может то, что вы в итоге хотите можно сделать и по другому.
Название: Re: Получить ksDocument3D из ksPart
Отправлено: bbb от 12.02.19, 13:22:53
Цитата: #programmer от 12.02.19, 11:51:24
А зачем вам именно ksDocument3D?
Может то, что вы в итоге хотите можно сделать и по другому.

Потому что я хочу вставить деталь в деталь. Я нахожу в сборке деталь типа ksPart и в нее нужно вставить еще одну деталь. А функция SetPartFromFile есть только у ksDocument3D
Название: Re: Получить ksDocument3D из ksPart
Отправлено: #programmer от 12.02.19, 13:33:38
Ок.
Посмотрите интерфейсы IPart7 и IParts7, где есть методы Add и AddFromFile.

Из справки:

От интерфейса 3D-документа IKompasDocument3D может быть получен верхний компо­нент IKompasDocument3D::TopPart, а от полученного верхнего компонента IPart7 может быть получена коллекция компонентов IParts7 с помощью свойства IPart7::Parts. Эле­менты коллекции-компоненты могут быть получены у коллекции с помощью свойства IParts7::Part. Либо с помощью свойства IModelObjects::Item как объекты типа IModelObject с последующим приведением к типу IPart7 через QueryInterface. От каждого элемента коллекции-компонента может быть получена вложенная коллекция компонен­тов c помощью свойства IPart7::Parts. И так далее, пока имеются вложенные коллекции компонентов.
Название: Re: Получить ksDocument3D из ksPart
Отправлено: bbb от 12.02.19, 13:52:21
А спасибо попробую
Название: Re: Получить ksDocument3D из ksPart
Отправлено: #programmer от 12.02.19, 14:01:34
Наверное так нельзя, т.е. нельзя получить интерфейс документа не открывая (редактируя) его.
Как по мне так ф-я AddFromFile (LPCTSTR FileName, BOOL ExternalFile, BOOL Redraw) интерфейса
IParts7 делает то же что и SetPartFromFile интерфейса ksDocument3D.
Название: Re: Получить ksDocument3D из ksPart
Отправлено: bbb от 12.02.19, 15:19:25
Цитата: #programmer от 12.02.19, 14:01:34
Наверное так нельзя, т.е. нельзя получить интерфейс документа не открывая (редактируя) его.
Как по мне так ф-я AddFromFile (LPCTSTR FileName, BOOL ExternalFile, BOOL Redraw) интерфейса
IParts7 делает то же что и SetPartFromFile интерфейса ksDocument3D.

Да без редактирования нельзя.
Название: Re: Получить ksDocument3D из ksPart
Отправлено: Вират Лакх от 13.02.19, 05:34:34
На примере этого https://forum.ascon.ru/index.php/topic,31982.msg259083.html#msg259083 beginedit должен выдать правильный интерфейс. У вас через редактирование на месте работает добавление детали в деталь? Или в сборку кидает? Если не хотите наблюдать, как включается и выключается редактирование на месте, можно отключить временно обновление дерева и окна: https://forum.ascon.ru/index.php/topic,30640.msg259806.html#msg259806
Название: Re: Получить ksDocument3D из ksPart
Отправлено: bbb от 13.02.19, 08:24:38
Цитата: Вират Лакх от 13.02.19, 05:34:34
На примере этого https://forum.ascon.ru/index.php/topic,31982.msg259083.html#msg259083 beginedit должен выдать правильный интерфейс. У вас через редактирование на месте работает добавление детали в деталь? Или в сборку кидает? Если не хотите наблюдать, как включается и выключается редактирование на месте, можно отключить временно обновление дерева и окна: https://forum.ascon.ru/index.php/topic,30640.msg259806.html#msg259806
Да сначала в сборку кидало, сейчас разобрался. Спасибо за needRebuild, реально ускоряет быстродействие.