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

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

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

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

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

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

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

Получить ksDocument3D из ksPart

Автор bbb, 12.02.19, 10:32:26

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

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

bbb

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

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

А можно не беря на редактирование конвертнуть интерфейс?

once

KompasObject::Document3D, KompasObject::ActiveDocument3D
Методы описаны в SDK

bbb

Цитата: once от 12.02.19, 10:46:30
KompasObject::Document3D, KompasObject::ActiveDocument3D
Методы описаны в SDK

Он не активный. Это деталь в сборке, активная сборка. А KompasObject::Document3D это новый объект создаст

#programmer

А зачем вам именно ksDocument3D?
Может то, что вы в итоге хотите можно сделать и по другому.

bbb

Цитата: #programmer от 12.02.19, 11:51:24
А зачем вам именно ksDocument3D?
Может то, что вы в итоге хотите можно сделать и по другому.

Потому что я хочу вставить деталь в деталь. Я нахожу в сборке деталь типа ksPart и в нее нужно вставить еще одну деталь. А функция SetPartFromFile есть только у ksDocument3D

#programmer

12.02.19, 13:33:38 #5 Последнее редактирование: 12.02.19, 13:44:40 от #programmer
Ок.
Посмотрите интерфейсы IPart7 и IParts7, где есть методы Add и AddFromFile.

Из справки:

От интерфейса 3D-документа IKompasDocument3D может быть получен верхний компо­нент IKompasDocument3D::TopPart, а от полученного верхнего компонента IPart7 может быть получена коллекция компонентов IParts7 с помощью свойства IPart7::Parts. Эле­менты коллекции-компоненты могут быть получены у коллекции с помощью свойства IParts7::Part. Либо с помощью свойства IModelObjects::Item как объекты типа IModelObject с последующим приведением к типу IPart7 через QueryInterface. От каждого элемента коллекции-компонента может быть получена вложенная коллекция компонен­тов c помощью свойства IPart7::Parts. И так далее, пока имеются вложенные коллекции компонентов.

bbb


#programmer

Наверное так нельзя, т.е. нельзя получить интерфейс документа не открывая (редактируя) его.
Как по мне так ф-я AddFromFile (LPCTSTR FileName, BOOL ExternalFile, BOOL Redraw) интерфейса
IParts7 делает то же что и SetPartFromFile интерфейса ksDocument3D.

bbb

Цитата: #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

bbb

Цитата: Вират Лакх от 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, реально ускоряет быстродействие.