Задача в общих чертах следующая:
1. Есть AutoCAD с ARX-приложением внутри
2. Есть сторонняя система, которая может обрабатывать документы AutoCAD(сохранять внутрь себя, выгружать из себя и т.д.). Система имеет набор интерфейсных функций(через IDispatch) для осуществления этих операций.
Предположим, что я хочу выгрузить документ из сторонней системы с помощью соответствующей интерфейсной функции. Но эта функция не сможет выгрузить документ, если он, например, был выгружен ранее и открыт в данный момент в AutoCAD.
Поэтому предпринимается такой порядок действий:
1. Проверяется наличие документа в каталоге выгрузки
2. Если да, то проверяется, открыт ли данный документ в AutoCAD
3. Если да, то его необходимо закрыть
4. Документ(если он есть) удаляется
5. Вызывается функция выгрузки
6. Открывается только что выгруженный документ
Аналогично может быть описано помещение документа из AutoCAD в стороннюю систему - тоже документ сначала надо закрыть, потом поместить, потом заново открыть.
Таким образом в ARX-приложении я имею несколько функций типа OpenFromExternal, SaveToExternal, которые привязаны, например, к элементам интерфейса через зарегестрированные пользовательские команды. Ну это не так важно.
Так вот я бы и рад работать из контекста приложения. Меня он устраивает Но AutoCAD против Он за меня решает в каком контексте мне работать. В одной функции, скажем SaveToExternal проверка
acDocManager->isApplicationContext() дает true, а скажем в OpenFromExternal - false. Почему так - я не понимаю.
Что влияет на переключения контекста - какие действия с моей стороны?