Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Андрей Бушман от 25-03-2015, 19:49:49

Название: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Андрей Бушман от 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 нет (разве что в реестр лезть)...
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Александр Ривилис от 25-03-2015, 20:25:49
Единстаенный вариант - сохранять "до" и восстанавливать "после" соответствующую ветку реестра.
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Алексей Кулик от 25-03-2015, 21:21:42
Ветку? По-моему, достаточно значения ветки HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-YYYY:YYYProfiles ; ключ "@" - вроде бы там записывается имя последнего активированного профиля. Правда, читать его лучше перед запуском ACAD'a, а менять обратно уже после закрытия процесса acad.exe.
NEXTFIBERWORLD, насколько я помню, хранится в профиле, так что тут будет проще.
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Дима_ от 25-03-2015, 21:25:39
Еще возможно подойдет консоль.
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Александр Ривилис от 25-03-2015, 21:28:59
Неа. Консоль исползует профиль AutoCAD.
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Андрей Бушман от 25-03-2015, 22:03:21
Я в курсе про вариант с реестром. Однако это ещё тот костыль.
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Алексей Кулик от 25-03-2015, 22:06:01
Подозреваю, что иного пути нет.
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Александр Ривилис от 25-03-2015, 22:11:21
В AutoCAD (а не в AcCoreConsole) можно переключать профиль через ActiveX (если не изменяет память, а проверить сейчас не могу).
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Александр Ривилис от 25-03-2015, 22:17:34
Точно: http://knowledge.autodesk.com/support/autocad/getting-started/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-ActiveX/files/GUID-948DA36B-F2BE-4A6D-9280-AB842C16CF76-htm.html
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Алексей Кулик от 25-03-2015, 22:20:07
И по-русски: http://autolisp.ru/2014/02/26/autocad-profiles-by-lisp/ (правда, на лиспе ;))
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Андрей Бушман от 25-03-2015, 22:21:24
В AutoCAD (а не в AcCoreConsole) можно переключать профиль через ActiveX.
Проблема в том, что запуская acad.exe с ключом /p я не имею возможности узнать, какой профиль был текущим до этого, дабы при завершении сеанса сделать его текущим снова. Чтобы узнать это придётся предварительно (до запуска acad.exe) лезть в реестр и запоминать имя текущего профиля - очень не хотелось бы из кода BAT-файла лезть в реестр. Переключить профиль из кода .net-расширения - не проблема, главное знать, на какой переключать.
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Александр Ривилис от 25-03-2015, 22:24:27
Проблема в том, что запуская acad.exe с ключом /p я не имею возможности узнать, какой профиль был текущим до этого
Именно. Внутри AutoCAD ты это не узнаешь.
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Александр Ривилис от 25-03-2015, 22:27:13
Напиши консольную утилиту, которая запускает AutoCAD, предварительно сохранив активный профиль, а по завершении восстановив его. Это будет самое надежное решение.
Название: Re: Как не запоминать профиль, переданный ключом /p по завершению сеанса?
Отправлено: Андрей Бушман от 25-03-2015, 22:31:19
Напиши консольную утилиту, которая запускает AutoCAD, предварительно сохранив активный профиль, а по завершении восстановив его. Это будет самое надежное решение.
это и так понятно. я уточнял, дабы не изобретать велосипед.