acad.exe D:\1.dwg /b D:\1.scr
/b D:\1.scr
- путь к скрипту следующего содержания:netload
"D:/Мой_плагин.dll"
Сделал это исходя из соображений, что создавать запись в реестре для автозагрузки dll - не очень хорошая идея, поскольку плагин необходимо запускать, в том числе, на ПК без права на внесение изменений в реестр.Так как автозагрузку можно реализовать через HKEY_CURRENT_USER, то это должно быть доступно всегда (иначе сам AutoCAD работать не будет).
Итак, основной вопрос - каким образом можно передать строковый параметр своему плагину? Возможно, с помощью того же скрипта?Пользуйся поиском. Пример: http://adn-cis.org/forum/index.php?topic=1036.msg4843#msg4843
._setvar
USERS1
"параметр"
netload
"D:\мой_плагин.dll"
(setenv "MyCoolPluginParameter1" "Параметр")
_.netload
"d:\MYCoolPlugin.dll"
А в плагинеМетода Application.GetEnvironmentVariable нет..System.Environment.GetEnvironmentVariable
Их перечень можно посмотреть в реестре, в ветке HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-YYYY:YYY\Profiles\ИмяПрофиля\GeneralУ меня так:
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-YYYY:YYY\FixedProfile\General
Кстати, Алексей, то ли изначально тут не совсем точная информация: http://autolisp.ru/2013/12/11/environtment-variables/, то ли в уже новых версиях все поменялось.
В том плане, что вместо этого:
Цитировать
Их перечень можно посмотреть в реестре, в ветке HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-YYYY:YYY\Profiles\ИмяПрофиля\General
У меня так:
Код: [Выделить]
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-YYYY:YYY\FixedProfile\General
Но если вручную создать в реестре параметр в Profiles\ИмяПрофиля\General, то его не читает ни getenv, ни HostApplicationServices.Current.GetEnvironmentVariableЭто если у параметра нестандартное имя. Если имя стандартное, но в силу того что у него было значение по-умолчанию в реестре его не было, и создать его вручную в правильном формате, то (getenv ...) его читает.
После завершения сессии (после закрытия автокада), наша переменная остаётся в реестре. Неплохо бы, наверно, подчистить за собой?В AutoCAD API нет средств для стирания, так что (если будешь "подчищать") придётся удалять непосредственно в реестре. Я бы не стал с этим заморачиваться. Просто придумай уникальные имена для своих переменных, чтобы не было пересечения со стандартными и чужими.
Пробежался по форумам, но везде сказано, как записать и считать переменную, но нигде не сказано, что она остаётся в реестре и как с этим бороться. Может, это не так важно, не знаю..
Просто придумай уникальные имена для своих переменных, чтобы не было пересечения со стандартными и чужими.Хорошо, так и поступлю, спасибо
Подскажите, пожалуйста, setenv и getenv это команды LISP?Это не команды, а функции lisp, но в ObjectARX есть их аналог и соответственно при помощи P/Invoke можно их вызывать и в AutoCAD .NET