CS Интегратор для AutoCAD. Документация
CS Интегратор для AutoCAD (далее CS Интегратор) предназначен для связывания приложений с профилями AutoCAD. Каждому профилю может быть поставлено в соответствие одно или несколько приложений, которые загружаются при активизации профиля, и выгружаются при его деактивизации. Переход от одной группы приложений к другой происходит путем переключения соответствующих профилей.
CS Интегратор существует в виде двух программ, первая является приложением Windows, вторая же представляет собой приложение AutoCAD 2002/2004/2005/2006/2007/2008/LT 2002/LT 2004/LT 2005/2006/2007.
CS Интегратор под Windows и под AutoCAD имеют общую часть – управление приложениями и профилями. Диалог управления содержит список профилей и список приложений, установленных под данную версию AutoCAD. Пользователь может ассоциировать приложение с профилем путем установки соответствующих «галочек», а также изменять порядок загрузки приложений в профиле. Кроме того, CS Интегратор позволяет создавать, удалять и переименовывать профили.
Помимо изложенных в п. 2.1 функций, CS Интегратор под Windows имеет следующие функции:
· Запуск AutoCAD в определенном профиле
· Создание ярлыков для запуска AutoCAD в определенном профиле.
Запуск AutoCAD в определенном профиле производится при помощи командной строки вида:
CsAcIngegrator.exe [-r -a "ACAD_ID" -p
"Профиль" [-с -g
"Приложение" -g "Приложение"]
-AcCL ACAD_CMDLINE]
Опции:
-r Запустить AutoCAD (необходимы опции -a и -p)
-a AutoCAD Id (например, AutoCAD\R16.0\ACAD-201:409)
-p Название профиля
-AcCL Все аргументы командной строки,
идущие далее, передаются в командную строку AutoCAD.
-AcSSE Исполнить строку (SendStringToExecute) при запуске АвтоКАДа после загрузки приложений. Перед вызовом SendStringToExecute(), для строки вызывается функция CAcUiString::ConvertMenuExecString(). Первый запущенный Интегратор с этой командой запускает АвтоКАД, все последующие пробрасывают команды в уже запущенный АвтоКАД.
-c Создать профиль, если не существует (обычно используется вместе с –g)
-g Ассоциировать приложение с
вновь созданным профилем
Опции -c
-g применяются
для создания профиля приложения, если его не создал инсталлятор, или
инсталляция производилась другим пользователем (например, Администратором). Начиная
с версии 1.0.64, при использовании опций -c -g проверяется наличие в разделе HKCU пользователя
профилей соответствующей версии AutoCAD.
Если профили не найдены, пользователю выдаётся сообщение, что перед запуском
продукта необходимо запустить AutoCAD как минимум один раз.
Пример:
CsAcIntegrator.exe -r -a “AutoCAD\R15.0\ACAD-1:409”
-p “MyProfile” -c -g MyApp -AcCL
-t MyTemplate.dwt
Автоматический запуск CS Интегратора под AutoCAD осуществляется только при запуске AutoCAD при помощи CS Интегратора для Windows.
Для создания ярлыков с командной строкой, вид которой описан в предыдущем пункте, необходимо использовать операцию перетаскивания (Drag’n’Drop) из списка профилей. При создании ярлыка просматривается список приложений, ассоциированных с профилем. Первое встреченное значение шаблона или иконки ярлыка (см. п. 3.1) используются для создания ярлыка.
Модуль расширения AutoCAD управляет загрузкой и выгрузкой приложений. Кроме того, модуль позволяет переключать профили в AutoCAD и AutoCAD LT. CS Интегратор позволяет изменять соответствие профилей и приложений под текущей версией AutoCAD.
Изменение настроек CS Интегратора в AutoCAD происходит в странице расширения диалога Настройки. Под AutoCAD LT диалоговое окно CS Интегратор вызывается при помощи команды DERU0003_CsAcIntegrator (CsAcIntegrator).
Выгрузка и загрузка приложений происходит как при стандартном переключении профилей, так и при переключении при помощи команды переключения профилей.
CS Интегратор регистрирует
команду DERU0003_ChangeProfile (CsChangeProfile) в группе команд DERU0003_CsApm, позволяющую
переключать профили и загружать соответствующие приложения.
Внимание! Автоматический поиск (обновление конфигурации по результатам поиска) не работает в Windows Vista, т.к. CsAcIntegrator.exe работает в режиме asInvoker в котором запрещена запись в область HKLM. Если запустить CsAcIntegrator.exe в режиме “as administrator”, обновление конфигурации произойдёт успешно.
При каждом запуске CS Интегратор проверяет установленные в системе версии AutoCAD. В случае обнаружения вновь установленной версии AutoCAD осуществляется ее автоматическая регистрация в CS Интеграторе. Список версий AutoCAD, для которых поддерживается автоматический поиск, приведен в файле Products.ini, расположенном в папке SYSDRIVE:\Program Files\Common Files\Consistent Software\CsAcIntegrator.
CS Интегратор при каждом запуске проверяет установленные под каждую из версий AutoCAD приложения. В случае обнаружения вновь установленного приложения, осуществляется его автоматическая регистрация в CS Интеграторе. Список приложений, для которых поддерживается автоматический поиск, приведен в файле Products.ini, расположенном в папке SYSDRIVE:\Program Files\Common Files\Consistent Software\CsAcIntegrator.
Каждое приложение, поддерживающее CS Интегратор, должно содержать загрузочный модуль. Модуль представляет собой arx- или alx-модуль, загружающий все остальные модули приложения в необходимом порядке.
На загрузочный модуль налагаются следующие требования:
· Загрузочный модуль не должен зависеть ни от одной не-системной библиотеки,
· Загрузочный модуль не должен полагаться на наличие директории продукта в PATH.
· Загрузочный модуль должен позволять загружать приложение при любой текущей директории.
Примечание: Если по каким-либо соображениям существование единого загрузочного модуля нежелательно, просьба об этом сообщить разработчикам CS Интегратора.
Приложения должны загружаться, не требуя наличия директории приложения в SupportPath профиля. В противном случае CS Интегратор может не суметь загрузить приложение в какой-либо отличный от «родного» профиль.
При наличии файла acad.rx в директории, указанной в SupportPath профиля, порядок загрузки приложений может отличаться от указанного в CS Интеграторе для данного профиля.
Приложение не должно требовать наличия заранее подготовленного профиля. При загрузке в профиле, в котором приложение ранее не загружалось, приложение должно выставлять установки по умолчанию.
В AutoCAD 2006, при загрузке меню через IAcadMenuGroups::loadMenu(), панели инструментов и пункты меню добавляются во все профили и рабочие пространства (workspaces). Это просходит, если у панелей инструментов выставлен флажок «_Show», а пункты меню добавляются через MNL файл.
Для того, чтобы панели инструментов и пункты меню добавлялись только в текущий профиль, необходимо отказаться от использования MNL файла и заменить флажок «_Show» на «_Hide». CS Интегратор при загрузке меню делает панели инструментов видимыми и добавляет пункты меню в конец панели меню. В настоящей версии делаются видимыми все панели инструментов и добавляются все пункты меню (**POP1-**POP499).
При первом запуске приложения в AutoCAD (LT) 2006 Интегратор создает рабочее пространство (workspace) с именем, совпадающим с именем профиля. В этом рабочем пространстве включаются пункты меню и панели инструментов. При дальнейших запусках проверяется какое рабочее пространство является текущим, при несовпадении имени с именем профиля текущим устанавливается одноименное рабочее пространство.
При переключении профиля во время работы АвтоКАДа, проверка рабочего пространства не производится.
Для регистрации приложений в CS Интеграторе в реестре создаются следующие ключи:
HKLM\Software\Autodesk\AutoCAD\Version\Locale\(CSApps | Applications)\CsAcIntegrator
Applications
My Application1
My Application2
My Application3
…
В каждом ключе создаются следующие значения:
Description писание приложения
Loader путь к загрузочному модулю приложения
Loader1, Loader2,... путь к дополнительным модулям приложения, если их не загружает загрузочный модуль
MenuFile файл меню (*.mnu), ассоциированный с данным приложением
MenuGroup название группы меню
Unloadable =1, если приложение выгружаемое
Profile название профиля, с
которым необходимо ассоциировать приложение
KeepProfileApps =1, не удалять уже существующие ассоциации с приложениями
Template шаблон AutoCAD, ассоциированный с приложением. При создании ярлыка передается в командную строку запуска AutoCAD.
Modules список кодированных модулей (для AutoCAD LT)
CommandGroups список групп команд (для AutoCAD LT)
LargeIconPath путь к файлу в формате BMP с изображением большой (32х32) кнопки на панели инструментов. (Пока не используется. В будущем будет использоваться для автоматического заполнения одноименного поля в секции ToolbarItem см. п. 3.4)
SmallIconPath путь к файлу в формате BMP с изображением маленькой (16х16) кнопки на панели инструментов. (Пока не используется)
ShortcutIconPath путь к файлу в формате ICO, который будет ассоциироваться с ярлыком при создании его при помощи перетаскивания из списка профилей.
Начиная с версии 1.0.64
Publisher название компании—автора продукта. Используется для создания директории %AppData%\Publisher\My Application
PerUserMenu =1,
копировать меню перед первой загрузкой в %AppData%\Publisher\My Application\ACAD_KEY\MenuFile
Примечание 1:
Все значения, кроме значения Loader являются не обязательными
Примечание 2:
Здесь и далее запись (CSApps | Applications)
означает, что для версий AutoCAD
(LT) 15.0 используется
ключ CSApps,
а для версий 16.0 и выше используется ключ Applications.
Для связи приложений с профилем, внутри ключа профиля в реестре создаются следующие ключи.
HKCU\Software\Autodesk\AutoCAD\Version\Locale\Profiles\My
Profile\CsAcIntegrator
Applications
My Application1
My Application2
В каждом ключе создаются следующие значения:
LoadOrder – индекс порядка загрузки приложения. Если 0 – автоматическое управление порядком загрузки.
CS Интегратор может автоматически загружать приложения в определенном порядке, для чего в реестре создан стандартный список приложений CS с соответствующими порядковыми номерами загрузки.
HKLM\Software\Autodesk\AutoCAD\Version\Locale\(CSApps | Applications)\CsAcIntegrator
StdLoadOrders
My Application 1=2
My Application 2=4
…
Данная область реестра не предназначена для изменения пользовательскими программами и обновляется при установке обновленных версий CS Интегратора. Данные для обновления находятся в секции LoadOrder файла Product.ini
Порядок
загрузки может быть переопределен в каждом профиле, для чего значение LoadOrder приложения
в профиле (п. 3.2) должно быть отлично от нуля. В случае наличия в
профиле приложений с переопределенным порядком загрузки, в начале загружаются
они, затем же оставшиеся приложения со стандартным порядком загрузки. Если
стандартный порядок загрузки приложения отсутствует, приложение загружается
последним, причем порядок загрузки нескольких таких приложений не определен.
CS Интегратор под AutoCAD загружается только при запуске AutoCAD-а при помощи CS Интегратор под Windows (см. п. 2.2.1).
Загрузчик CS Интегратора стартует при каждом запуске AutoCAD-а и проверяет в реестре значение RunPM (REG_DWORD) в подветви CsAcIntegrator ветви текущего профиля. Если RunPM=1, то значение удаляется и загружается CS Интегратор. Значение RunPM=2 используется для отладочных целей, в этом случае загружается CS Интегратор, но значение не удаляется.
По завершении операций по загрузке CS Интегратор, стартер выгружается.
В целом, механизм загрузки под AutoCAD
LT, такой же, как и под AutoCAD. В AutoCAD LT перед загрузкой CS Интегратора стартер загружает Application Enabler (yalae.dbx для LT 2002, yalae4.dbx для LT 2004 или yalae5.dbx для LT 2005) и Command Enabler (yalce.arx для LT 2002, yalce4.arx для LT 2004 или yalce5.arx для LT 2005) .
Ini-файл Application Enabler-а (для LT 2004 и выше) имеет вид:
[Modules]
yalceX.arx (где X=4 для LT 2004 и X=5 для LT 2005)
CsAcIntegrator.alx
Все остальные кодированные модули динамически включаются CS Интегратором в списки Application Enabler-а на основании ключа реестра:
HKLM\Software\Autodesk\AutoCAD\Version\Locale\(CSApps | Applications)\CsAcIntegrator
Applications
My
Application1
Modules=”MyArx.arx MyDll.dll”
Ini-файл Command Enabler-а имеет вид:
[CommandGroups]
Group0=DERU0003_CSAPM
Все остальные группы команд динамически включаются CS Интегратором в списки Command Enabler-а на основании ключа реестра:
HKLM\Software\Autodesk\AutoCAD\Version\Locale\(CSApps | Applications)\ CsAcIntegrator
Applications
My Application1
CommandGroups=”MYGROUP1 MYGROUP2”
Модули и группы команд разделяются пробелами.
Модуль устанавливается при
установке CS Интегратора и расположен в папке
SYSDRIVE:\Program Files\Common Files\Consistent Software\CsAcIntegrator. Модуль
содержит ряд функций, упрощающих регистрацию приложений в CS Интеграторе.
struct
PMAN_REG_DATA
{
DWORD dwSize; размер структуры PMAN_REG_DATA в байтах
DWORD dwRegIndex; ключ реестра, 1-HKCU, 2-HKLM. Должно быть 2.
LPTSTR pszKey; ключ AutoCAD,
например
“AutoCAD\\R16.0\\ACAD-201:409”
LPTSTR pszLogicalName; название приложения
LPTSTR pszLoader; путь к
загрузочному модулю
LPTSTR pszDescription; описание приложения
LPTSTR pszModules; список кодированных модулей
LPTSTR pszCommandGroups; список групп команд
LPTSTR pszMenuGroup; группа меню
LPTSTR pszMenuFile; путь к
файлу меню
LPTSTR pszTemplate; шаблон чертежа
DWORD dwUnloadable; выгружаемое
ли приложение (BOOL)
LPTSTR pszLargeIconName; путь
к большой (32x32) картинке кнопки в формате BMP
LPTSTR pszSmallIconName; путь
к маленькой (16x16) картинке кнопки в формате BMP
LPTSTR pszShortcutIconName; путь к иконке ярлыка приложения в формате ICO
// dwSize==60
LPTSTR pszSupportPath; путь,
который будет добавлен в SupportPath
// dwSize==64
// Build
1.0.64
LPCSTR pszPublisher; // E.g. Consistent Software
DWORD dwPerUserMenu; // Copy menu files to AppData\...
LPCSTR pszReserved; //
Not implemented yet
// dwSize==76
};
BOOL
RegisterAppInPMan(const PMAN_REG_DATA *pRegData);
Регистрация приложения в CS Интеграторе
BOOL RegisterAppInPManIniEx(DWORD dwRegIndex, LPTSTR pszKey, LPTSTR pszIniFile,
LPTSTR pszSection, DWORD dwForceRegister);
Регистрация приложения в CS Интеграторе. Информация о регистрации задается секцией ini файла.
pszIniFile путь к ini файлу
pszSection название секции
dwForceRegister регистрировать ли заново уже зарегистрированное приложение (BOOL)
Подробное описание формата секции ini файла см. в п. 3.5.3. При использовании функции RegisterAppInPManIniEx название секции может быть произвольным.
BOOL RegisterAppInPManIni(DWORD dwRegIndex, LPTSTR pszKey, LPTSTR pszIniFile);
Регистрация приложения в CS Интеграторе. Информация о регистрации задается секцией “\CsAcIntegrator” ini файла. Зарегистрированные приложения регистрируются заново.
BOOL UnregAppInPMan (LPTSTR pszKey, LPTSTR pszLogicalName);
Удаление регистрации приложения в CS Интеграторе в .
pszKey ключ AutoCAD, например “AutoCAD\\R16.0\\ACAD-201:409”
lpszLogicalName название приложения
BOOL UnregAppInPManAllAcads(LPTSTR pszLogicalName);
Удаление регистрации приложения в CS Интеграторе во всех версиях AutoCAD.
lpszLogicalName название приложения
BOOL RegisterAppInProfileEx(LPTSTR pszKey, LPTSTR lpszProfile, LPTSTR pszLogicalName, BOOL bUnregOldApps);
Ассоциация приложения с
профилем.
pszKey ключ AutoCAD, например “AutoCAD\\R16.0\\ACAD-201:409”
lpszProfile название профиля
pszLogicalName название приложения
bUnregOldApps деассоциирвать ли ранее ассоциированные приложения
BOOL RegisterPManToolbarItem(LPTSTR pszKey, LPTSTR lpszProfile,
LPTSTR pszName, LPTSTR pszHelpString,
LPTSTR pszLargeIconPath, LPTSTR pszSmallIconPath);
pszKey ключ AutoCAD, например “AutoCAD\\R16.0\\ACAD-201:409”
lpszProfile название профиля
pszName название кнопки, подсказка (ToolTip)
pszHelpString название кнопки, строка в строке состояния
pszLargeIconPath путь к большой (32x32) картинке кнопки в формате BMP
pszSmallIconPath путь к маленькой (16x16) картинке кнопки в формате BMP
REG15_API BOOL CreateProfile(LPTSTR pszKey, LPCTSTR lpszNewProfile,
LPCTSTR lpszNewProfileDescription);
pszKey ключ AutoCAD, например “AutoCAD\\R16.0\\ACAD-201:409”
lpszNewProfile название создаваемого профиля
lpszNewProfileDescription описание
создаваемого профиля
Функция копирует текущий профиль. Если текущий профиль не
существует, копирутся первый профиль по алфавиту
REG15_API BOOL DeleteProfile(LPTSTR pszKey, LPCTSTR lpszProfile);
pszKey ключ AutoCAD, например “AutoCAD\\R16.0\\ACAD-201:409”
lpszProfile название удаляемого профиля
Функция удаляет указанный профиль.
REG15_API BOOL DeleteProfileAllAcads(LPCTSTR
lpszProfile);
lpszProfile название удаляемого профиля
Функция удаляет указанный профиль во всех установленных
верисях AutoCAD
REG15_API BOOL DeleteAppDataIniEx(LPCSTR pszIniFile, LPCSTR pszSection);
Удаление директории AppData данного приложения. Информация о регистрации задается секцией ini файла.
pszIniFile путь к ini файлу
pszSection название
секции
Внимание, для работы функции необходимо наличие в ini файле значения Publisher (см. п. 3.5.3).
REG15_API BOOL DeleteAppDataIni(LPCSTR pszIniFile); // Use [\CsAcIntegrator]
section
Удаление директории AppData данного приложения. Информация о регистрации задается секцией “\CsAcIntegrator” ini файла.
pszIniFile путь
к ini файлу
Файл Products.ini предназначен для поиска и автоматической регистрации в CS Интеграторе старых приложений, не поддерживающих CS Интегратор.
Примечание:
Вновь выходящие приложения должны регистрироваться в CS Интеграторе
при помощи модуля CsApmReg.dll (см.
п. 3.7). Кроме того, приложения должны выполнять правила
совместимости с CS Интегратором (см. п. 3.1).
Секция содержит общие данные
Version версия файла. Если номер версии больше, чем установленной ранее, секция LoadOrder переносится в реестр.
Секция содержит стандартный порядок загрузки приложений
LoadOrder1=My Application 1
LoadOrder2=My Application 2
…
В секциях вида [\Products\ACAD_ID\PRODUCT_NAME] содержатся данные для автоматической регистрации вновь установленных приложений.
Части названия секции:
ACAD_ID ключ AutoCAD, например “AutoCAD\R16.0”
PRODUCT_NAME название приложения
Например:
[\Products\AutoCAD\R16.0\RasterDesk
Pro 6.0]
Определение загрузочного модуля. Вариант 1:
LoaderPathRegKey ключ реестра, в котором находится значение LoaderPathRegValue. Последовательность %ACAD_KEY% заменяется на ключ соответствующей версии AutoCAD.
LoaderPathRegValue название значения, содержащее путь (без имени файла) к загрузочному модулю
LoaderFileSubDir подпапка относительно LoaderPathRegValue, содержащая загрузочный модуль
LoaderFileName имя файла загрузочного модуля
Например:
[\Products\AutoCAD\R16.0\RasterDesk Pro 6.0]
Description=RasterDesk Pro 6.0 (c) 2004
Consistent Software
LoaderPathRegKey=HKEY_LOCAL_MACHINE\SOFTWARE\Consistent Software\RasterDesk
Pro 6.0\6.0
LoaderPathRegValue=AppPath
LoaderFileName=RasterDesk.arx
LoaderFileSubDir=AC2004 MenuGroup=RasterDesk
MenuFile=%LOADER_PATH%\menu\large.mnu
Определение загрузочного модуля. Вариант 2:
LoaderFullPathRegKey ключ реестра, в котором находится значение LoaderFullPathRegValue. Последовательность %ACAD_KEY% заменяется на ключ соответствующей версии AutoCAD
LoaderFullPathRegValue название значение, содержащее полный путь к загрузочному модулю
Например:
[\Products\AutoCAD\R16.0\СПДС Graphics 2.5]
Description=СПДС Graphics 2.5 (c) 2003 Consistent Software
LoaderFullPathRegKey=HKEY_LOCAL_MACHINE\SOFTWARE\Consistent Software\СПДС
Graphics\2.5\SPDSGraphiCS\Loader
LoaderFullPathRegValue=MODULE
Определение загрузочного модуля. Вариант 3. Используется, только если загрузочный модуль не определен по вариантам 1 или 2.
LoaderIniRelPath Путь к загрузочному модулю относительно пути ini файла. Последовательность %INI_PATH% заменяется на путь ini файла. Например, %INI_PATH%\RasterDesk.arx
Ключи:
ProductName название приложения (переопределяет PRODUCT_NAME)
MenuFile файл меню (*.mnu), ассоциированный с данным приложением
MenuGroup название группы меню
Unloadable =1, если приложение выгружаемое
Profile название профиля, с которым необходимо ассоциировать приложение
KeepProfileApps =1, не удалять уже существующие ассоциации с приложениями
Template шаблон AutoCAD, ассоциированный с приложением. При создании ярлыка передается в командную строку запуска AutoCAD.
Modules список кодированных модулей (для AutoCAD LT)
CommandGroups список групп команд (для AutoCAD LT)
LargeIconPath путь к файлу в формате BMP с изображением большой (32х32) кнопки на панели инструментов. (Пока не используется. В будущем будет использоваться для автоматического заполнения одноименного поля в секции ToolbarItem см. п. 3.4)
SmallIconPath путь к файлу в формате BMP с изображением маленькой (16х16) кнопки на панели инструментов. (Пока не используется)
ShortcutIconPath путь к файлу в формате ICO, который будет ассоциироваться с ярлыком при создании его при помощи перетаскивания из списка профилей.
SupportPath пути, которые будут добавлены в SupportPath при вызове функции RegisterAppInProfile()
Начиная с версии 1.0.64
Publisher название компании—автора продукта. Используется для создания директории %AppData%\Publisher\My Application
PerUserMenu =1,
копировать меню перед первой загрузкой в %AppData%\Publisher\My Application\ACAD_KEY\MenuFile
Примечание. Во всех ключах, в которых используются пути, могут быть использованы макропеременные:
%ACAD_KEY% ключ соответствующей версии AutoCAD, например, AutoCAD\R16.0\ACAD-201:409
%INI_PATH% путь к ini файлу
%LOADER_PATH% путь к загрузочному модулю
1. Установить CS Интегратор
2. Зарегистрировать приложение при помощи одной из функций RegisterAppInPMan (п. 3.7)
3. Ассоциировать приложение с профилем при помощи функции RegisterAppInProfile (п. 3.7)
4. Создать ярлык на CsAcIntegrator.exe (п.2.2.2)
5. Запустить приложение при помощи созданного ярлыка