Теперь с открытием объекта ясно.
Новый вопрос: у меня мой копилятор отказывается принимать имя функции acdbGetCurViewportObjectId(), хотя в хелпе эта функция описана (находится в dbmain.h).
Может быть кто-нибудь может поробовать использовать эту функцию. Если это удасться, то значит эта функция все таки существует (а то я и в файле dbmain.h не нашел определения этой функции).
Может есть другой способ получить текущий UCS, чтобы сохранить его, переключиться на свой собственный (именованный) UCS, а затем восстановить прежний UCS.
Пока я планировал делать это следующим образом:
// Получаю текущий Viewport
AcDbObjectId OldViewportId = acdbGetCurViewportObjectId();
// Получаю через OldViewportId AcDbViewport.
// Получаю имя UCS через AcDbViewport::ucsName;
// Устанавливаем UCS.
AcDbUCSTable* pUCSTable;
acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pUCSTable, AcDb::kForRead);
AcDbObjectId NewViewportId;
pUCSTable->getAt("PRF_UCS1",NewViewportId);
pUCSTable->close();
// AcDbViewport::setUCS(NewVieportId);
//.......
// Восстанавливаю UCS:
// AcDbViewport::setUCS(OldViewportId);
Но у меня не работатет (просто отсутствует в dbmain.h) acdbGetCurViewportObjectId().
/* тут я сделал перерыв и поискал по *.h файлам */
Поиском по файлам в \INC нашел лишь
#define acdbGetCurViewportObjectId acedGetCurViewportObjectId
А поиск по acedGetCurViewportObjectId дал мне файл aced.h со строчкой
extern AcDbObjectId acedGetCurViewportObjectId();
Т.е. то, что нужно.
Таким образом проблема поиска acdbGetCurViewportObjectId решалась включением
#include
про который в файле помощи не было ни слова.
Осталось только это проверить. Если все получиться - сообщу.