ksTransferInterface не возвращает объект

Автор Неоненко, 19.02.15, 09:23:18

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

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

Неоненко

ЦитироватьПредлагаю так же получить интерфейс KompasObject (интерфейс API5 КОМПАС) и использовать KompasObject::ТransferInterface.
такой вариант обсуждался выше в теме, не работает

ЦитироватьТест на Python в прицепе. Работает не из под КОМПАС. Запускать на активной детали или сборке.
Насколько я понимаю, у Вас компас запускается пользователем, при запуске компас инициализирует себя должным образом и Вы подключаетесь к уже запущенному процессу.
Если же создавать экземпляр компас в своем приложении TransferInterface не работает.

Slaviation

ЦитироватьНасколько я понимаю, у Вас компас запускается пользователем, при запуске компас инициализирует себя должным образом и Вы подключаетесь к уже запущенному процессу.
Если же создавать экземпляр компас в своем приложении TransferInterface не работает.

Необязательно. Проверил скрипт без запущенного КОМПАС. Компас запускается скриптом. Добавил только строчку api5.LoadDSK() (ниже) чтобы загрузился активный документ. КОМПАС остается невидимым, TransferInterface работает.


module5, api5, const5 = get_kompas_api5()
module7, api7, const7 = get_kompas_api7()
app = api7.Application
api5.LoadDSK()

doc = app.ActiveDocument
doc3D = module7.IKompasDocument3D(doc._oleobj_.QueryInterface(module7.IKompasDocument3D.CLSID, pythoncom.IID_IDispatch))
part7 = doc3D.TopPart

part5 = api5.TransferInterface(part7, const5.ksAPI5Auto, 0)
if part5 != None:
    print part5.name.encode('cp1251')
+ Благодарностей: 1

Неоненко

Спасибо огромное!!! нашла рабочий вариант!!! позже напишу, в чем была моя проблема

не могу сказать, что приведенный код мне помог. Помогла уверенность, что это должно работать