Запуск AutoCAD для своего arx а также в исходном варианте

Автор Тема: Запуск AutoCAD для своего arx а также в исходном варианте  (Прочитано 9790 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн WingАвтор темы

  • ADN Club
  • Сообщений: 17
  • Карма: 0
Здравствуйте.

Есть приложение ARX, которое имеет свое меню и тулбары, ленту пока не используем. Пользователям его представляли как отдельное приложение на базе AutoCAD, и меню и тулбары и ленту автокада скрывали. Примерно 30 пользователей. Запуск автокада с его собственным интерфейсом раньше редко использовался.
Сейчас есть задача для всех 30 пользователей обеспечить 2 варианта запуска автокада: как он устанавливается по умолчанию, т.е. с лентой и интерфейсом AutoCAD, а 2й вариант это с нашими ARX меню, и тулбарами, без ленты.
Не получается настроить это так, чтобы пользователь только запускал 2 разных ярлыка и больше ничего не делал.

Приложение ARX лежит в %userprofile%\AppData\local\MyApp, там есть файлы *mns, *.shx, *lin, *.pat, acad.lsp, myapp.arx, а также всякие ico, bmp , cfg и т.д.

Запуск автокада ярлыком приложения:
"C:\Program Files\AutoCAD 2010\acad.exe" /nologo /s "%userprofile%\AppData\Local\MyApp";"C:\Program Files\AutoCAD 2010\UserDataCache\Support" /ld myapp.arx

Основная трудность в том, что меню автокада грузится командой
acedCommand(RTSTR, L"_MENU", RTSTR, cs2ws("mymenu.mns"), RTNONE);
и запоминается в настройках автокада, затем запоминается в настройках, и при запуске ярлыка автокада заменяет собой дефолтный интерфейс автокада, а этого не нужно.
попытки загрузить меню через параметры запуска /w и /p не удались.

вторая проблема в том, что после того как через acad.lsp такого содержания
(defun S::STARTUP()
 (command "myinit")
)
в конце команды myinit выполнится _ribbonclose, автокад сам вызывает _ribbon, и пустая панель появляется с сообщением о том, что в нее ничего не загружено.
Можно как-то отключить этот вызов _ribbon?

У меня есть идеи "протезных" решений этих проблем.
Для восстановления меню можно инсталлятором приложения запоминать путь к оригинальному меню, а затем после загрузки меню восстанавливать это каждый раз в реестре.
Для ликвидации проблемы с лентой можно создать таймер, который сработает после завершения команды myinit через долю секунды и вызовет _ribbonclose после _ribbon.

Но хочется надеяться, что можно справиться и средствами настройки запуска, но пока не получилось, помогите, пожалуйста.
AutoCAD 2010 x64, Win7 x64.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Первое, что пришло в голову - для своего приложения создать и настроить свой профиль AutoCAD и запускать AutoCAD с параметром профиля.
Второе, что пришло в голову - это написать exe-файл, который будет производить настройки профиля AutoCAD для твоего приложения.
Перед запуском AutoCAD он запомнит текущий профиль AutoCAD и запустит AutoCAD с твоим профилем. По завершении AutoCAD он восстановит профиль AutoCAD, который был до его запуска.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн WingАвтор темы

  • ADN Club
  • Сообщений: 17
  • Карма: 0
Цитировать
Первое, что пришло в голову - для своего приложения создать и настроить свой профиль AutoCAD и запускать AutoCAD с параметром профиля.

как правильно использовать профиль? как файл (не получилось)? или как ветвь в реестре? если как ветвь в реестре (содержимое *.arg), то этот файл надо выполнять на всех машинах пользователей? они же могут изменить/сбросить профиль, значит, надо каждый раз при запуске восстанавливать?

Раньше были попытки восстанавливать меню по умолчанию через ветку и путь (примерно)
"SOFTWARE\Autodesk\AutoCAD\R18.0\R18.0\Profiles\<<Профиль без имени>>\General"
"%USERPROFILE%\application data\autodesk\autocad 2010\r18.0\rus\support\acad"

мне представляется проще использовать восстановление этих параметров сразу после "myinit", чем делать отдельный exe-файл.

но, может быть, все же можно обойтись настройками?

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
они же могут изменить/сбросить профиль, значит, надо каждый раз при запуске восстанавливать?
А кто сказал что будет просто?  ;)
мне представляется проще использовать восстановление этих параметров сразу после "myinit", чем делать отдельный exe-файл.
Не проще и вполне возможно, что вообще не получится это сделать когда AutoCAD уже запущен. Тут возникает сразу огромное количество ограничений.
Для запуска AutoCAD с заданным профилем используй ключ командной строки /p (смотри в документации AutoCAD)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение