Страница 1 из 1

команда на два документа

СообщениеДобавлено: 14 июл 2009 15:42
Artem
ну в макросе например для формы все равно что активно - документ из которого мы его вызвали или другой.....а вот в рейде как-нибудь такое можно сделать? Чтобы форма(команда) была завязана не на определенный экземпляр окна(документа)...а "висела" даже когда мы переключаемся между окнами?
Ps. Моя команда создает новое окно и там должна проделать определенные действия..........но толи я торможу, толи система...мои мессаджбоксы идущие после создания документа выскочили до появления нового окна......что в принципе вызвало сомнение в возможности осуществления этого простецкого (для макроса) дела? в цикле подождать?

Re: команда на два документа

СообщениеДобавлено: 14 июл 2009 17:29
booSter
Попробуй CATMultiDocumentCommand, CATBasicMultiDocumentCommand

Re: команда на два документа

СообщениеДобавлено: 15 июл 2009 08:44
Artem
Я так понял что мультидокументативность держиться на работающем агенте? без агентов форма все равно показывается только на родном окне...(( (CATMultiDocumentCommand)

Re: команда на два документа

СообщениеДобавлено: 15 июл 2009 14:22
Artem
два момента 1)Вот это НЕ создавало новый документ а вылетало с ошибкой, пока не добавил месседжбокс (как более адекватная и "незаметная" подмена - SetForegroundWindow тож прокатил)
Код: Выделить всё
.............
HRESULT r = ptApp->get_Documents(oDocuments);
HWND im = FindWindow(NULL, L"CATIA V5 - [Part1]");
SetForegroundWindow(im);
//Sleep(4000);
 //DoEvents();
//MessageBox (0,L"11111111111",L"222222",1);
CATBSTR bst(L"Drawing");
r=oDocuments->Add(bst, ptDoc );
..............

Кажись с CATIIniInteractiveSession такой проблемы не было, но на создание нового документа выкидывалось окошко с установками стандарта/размеров для чертежа...
2) ура..если создать новую панель ПОСЛЕ добавления документа то она уже принадлежит этому самому новому документу (а данные перенести не проблема)...кстати безо всяких CATMultiDocumentCommand....с обычным CATStateCommand

Re: команда на два документа

СообщениеДобавлено: 20 июл 2009 09:18
Artem
Возник ряд проблем и вопросов
1) Как активировать старое окно/документ при создании нового? Ощущение, что он до конца формируется только после завершения дейстия повешенного на кнопку (Хотя сделать что-либо в новом документе можно без проблем...вроде).В макросе тоже самое (но тут можно активацию на таймер повесить)
2)При активации другого окна мои агенты не работают (((((((( хоть CATStateCommand взять за парента для основной команды, хоть CATMultiDocumentCommand (((....(Заметил бонус от CATMultiDocumentCommand - при переключении между окошками команда продолжает работать в СТАРОМ окне - при CATStateCommand перестает работать даже в нем)
3)Насколько я понял если мы используем CATMultiDocumentCommand то это просто дает возможность запуска этой команды через другую не прерывая ее - через CATOtherDocumentAgent- при этом возникает ряд вопросов:
а)Как запустить этот агент?
б)Как получить результат выделения? - В примере у вызываемой команды один CATPathElementAgent и собственно с него и берется круг.....А если агентов несколько? или все равно? типа фильтр SetElementType (в примере почему то Add) сам определит с какого агента брать результат?Можно как-нибудь завязать действие на завершение вызываемой команды, а не на выделение фичера определенного типа?или собственно так оно и есть?
в) Возможен ли запуск родных команд CATIA?