Тема: AutoCAD и COM

Работаю с Acadом через COM.
Такая ситуация:
вызываем, что-то типа (startapp "prog.exe" "args").
Как в prog.exe определить из какого документа или экземпляра Acad выполнена команда startapp?
Т.е. нужно определить указатель IAcadApplication * на тот объект приложения (Acad) из которого выполнена команда startapp (или указатель IAcadDocument *).

Re: AutoCAD и COM

HRESULT hr;
IAcadApplication *pApp;
hr = pApp.GetActiveObject(CLSID_AcadApplication);
if (FAILED(hr)) { // Error handling }
IAcadDocument *pDoc;
hr = pApp->get_ActiveDocument(&pDoc);
if (FAILED(hr)) { // Error handling }
....
IAcadModelSpace *pMS;
....

Re: AutoCAD и COM

> evgenyon
Это будет работать только если запущен один экземпляр AutoCAD. Если их несколько, то все значительно сложнее, если вообще возможно.

Re: AutoCAD и COM

В принципе это выход, хотя Александр прав. Но откуда взялась GetActiveObject?

Re: AutoCAD и COM

> pavel
Смотри исправленный пример evgenyon или здесь: https://www.caduser.ru/forum/topic30083.html и здесь: https://www.caduser.ru/forum/topic19195.html