Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Андрей Бушман от 25-03-2015, 19:49:49
-
BAT-файл последовательно выполняет Unit Tests в нужных мне версиях AutoCAD и в специальном каталоге сохраняет отчёты по результатам тестов (по каждому AutoCAD свой HTML-отчёт). Во время работы происходит запуск каждого AutoCAD следующим образом:
call "%ProgramFiles%\Autodesk\AutoCAD 2015\acad.exe" /b startup-2015.scr /p ".\acad-test-profile.arg" /nologo
В подключаемом профиле переменная NEXTFIBERWORLD установлена в 0 (это необходимо для возможности запуска тестов NUnit в AutoCAD 2011-2014; тесты Gallio обходятся без этого).
Мне нужно, чтобы AutoCAD не сохранял обозначенный профиль текущим по завершению сеанса работы. Сейчас, если я открываю AutoCAD, то текущим является acad-test-profile. Насколько я понимаю, иного способа заблаговременно изменить переменную NEXTFIBERWORLD нет (разве что в реестр лезть)...
-
Единстаенный вариант - сохранять "до" и восстанавливать "после" соответствующую ветку реестра.
-
Ветку? По-моему, достаточно значения ветки HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-YYYY:YYYProfiles ; ключ "@" - вроде бы там записывается имя последнего активированного профиля. Правда, читать его лучше перед запуском ACAD'a, а менять обратно уже после закрытия процесса acad.exe.
NEXTFIBERWORLD, насколько я помню, хранится в профиле, так что тут будет проще.
-
Еще возможно подойдет консоль.
-
Неа. Консоль исползует профиль AutoCAD.
-
Я в курсе про вариант с реестром. Однако это ещё тот костыль.
-
Подозреваю, что иного пути нет.
-
В AutoCAD (а не в AcCoreConsole) можно переключать профиль через ActiveX (если не изменяет память, а проверить сейчас не могу).
-
Точно: http://knowledge.autodesk.com/support/autocad/getting-started/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-ActiveX/files/GUID-948DA36B-F2BE-4A6D-9280-AB842C16CF76-htm.html
-
И по-русски: http://autolisp.ru/2014/02/26/autocad-profiles-by-lisp/ (правда, на лиспе ;))
-
В AutoCAD (а не в AcCoreConsole) можно переключать профиль через ActiveX.
Проблема в том, что запуская acad.exe с ключом /p я не имею возможности узнать, какой профиль был текущим до этого, дабы при завершении сеанса сделать его текущим снова. Чтобы узнать это придётся предварительно (до запуска acad.exe) лезть в реестр и запоминать имя текущего профиля - очень не хотелось бы из кода BAT-файла лезть в реестр. Переключить профиль из кода .net-расширения - не проблема, главное знать, на какой переключать.
-
Проблема в том, что запуская acad.exe с ключом /p я не имею возможности узнать, какой профиль был текущим до этого
Именно. Внутри AutoCAD ты это не узнаешь.
-
Напиши консольную утилиту, которая запускает AutoCAD, предварительно сохранив активный профиль, а по завершении восстановив его. Это будет самое надежное решение.
-
Напиши консольную утилиту, которая запускает AutoCAD, предварительно сохранив активный профиль, а по завершении восстановив его. Это будет самое надежное решение.
это и так понятно. я уточнял, дабы не изобретать велосипед.