Добрый день.
Для того чтобы получить интерфейс ksDocument3D из ksPart я беру ksPart на редактирование так:
ksDocument3D kdoc = (ksDocument3D)part.BeginEdit();
А можно не беря на редактирование конвертнуть интерфейс?
KompasObject::Document3D, KompasObject::ActiveDocument3D
Методы описаны в SDK
Цитата: once от 12.02.19, 10:46:30
KompasObject::Document3D, KompasObject::ActiveDocument3D
Методы описаны в SDK
Он не активный. Это деталь в сборке, активная сборка. А KompasObject::Document3D это новый объект создаст
А зачем вам именно ksDocument3D?
Может то, что вы в итоге хотите можно сделать и по другому.
Цитата: #programmer от 12.02.19, 11:51:24
А зачем вам именно ksDocument3D?
Может то, что вы в итоге хотите можно сделать и по другому.
Потому что я хочу вставить деталь в деталь. Я нахожу в сборке деталь типа ksPart и в нее нужно вставить еще одну деталь. А функция SetPartFromFile есть только у ksDocument3D
Ок.
Посмотрите интерфейсы IPart7 и IParts7, где есть методы Add и AddFromFile.
Из справки:
От интерфейса 3D-документа IKompasDocument3D может быть получен верхний компонент IKompasDocument3D::TopPart, а от полученного верхнего компонента IPart7 может быть получена коллекция компонентов IParts7 с помощью свойства IPart7::Parts. Элементы коллекции-компоненты могут быть получены у коллекции с помощью свойства IParts7::Part. Либо с помощью свойства IModelObjects::Item как объекты типа IModelObject с последующим приведением к типу IPart7 через QueryInterface. От каждого элемента коллекции-компонента может быть получена вложенная коллекция компонентов c помощью свойства IPart7::Parts. И так далее, пока имеются вложенные коллекции компонентов.
А спасибо попробую
Наверное так нельзя, т.е. нельзя получить интерфейс документа не открывая (редактируя) его.
Как по мне так ф-я AddFromFile (LPCTSTR FileName, BOOL ExternalFile, BOOL Redraw) интерфейса
IParts7 делает то же что и SetPartFromFile интерфейса ksDocument3D.
Цитата: #programmer от 12.02.19, 14:01:34
Наверное так нельзя, т.е. нельзя получить интерфейс документа не открывая (редактируя) его.
Как по мне так ф-я AddFromFile (LPCTSTR FileName, BOOL ExternalFile, BOOL Redraw) интерфейса
IParts7 делает то же что и SetPartFromFile интерфейса ksDocument3D.
Да без редактирования нельзя.
На примере этого https://forum.ascon.ru/index.php/topic,31982.msg259083.html#msg259083 beginedit должен выдать правильный интерфейс. У вас через редактирование на месте работает добавление детали в деталь? Или в сборку кидает? Если не хотите наблюдать, как включается и выключается редактирование на месте, можно отключить временно обновление дерева и окна: https://forum.ascon.ru/index.php/topic,30640.msg259806.html#msg259806
Цитата: Вират Лакх от 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, реально ускоряет быстродействие.