12/12/2013
Переменные окружения
Предлагаю поговорить насчет такой простой и элементарной вещи, как функция getenv. Достаточно простая функция, но у нее есть свои особенности.Все, что написано ниже, касается AutoCAD для Windows (т.к. у меня нет MacOS ни в каком виде, то проверить состояние дел для этой ОС я не могу).
Если мы работаем внутри AutoCAD, то все переменные окружения (т.н. Environment Variables) можно поделить на 2 класса: переменные для Windows и переменные для AutoCAD.
Перечень переменных для Windows получить достаточно просто: вызываем окно cmd (Win+R, cmd) и в ней вбиваем строку set, жмем Enter. Получим перечень вида (приведен пример для Windows 7 Prof x64):
Код - Auto/Visual LISP: [Выделить]
В любой момент из-под лиспа мы можем обратиться к любой из этих переменных. При этом регистр имени переменной никакой роли не играет: (getenv "TEMP") вернет то же самое, что (getenv "temp").
- ALLUSERSPROFILE
- AMDAPPSDKROOT
- APPDATA
- CommonProgramFiles
- CommonProgramFiles(x86)
- CommonProgramW6432
- COMPUTERNAME
- ComSpec
- DXROOT
- FP_NO_HOST_CHECK
- HOMEDRIVE
- HOMEPATH
- ILBDIR
- LOCALAPPDATA
- LOGONSERVER
- NUMBER_OF_PROCESSORS
- OS
- Path
- PATHEXT
- PROCESSOR_ARCHITECTURE
- PROCESSOR_IDENTIFIER
- PROCESSOR_LEVEL
- PROCESSOR_REVISION
- ProgramData
- ProgramFiles
- ProgramFiles(x86)
- ProgramW6432
- PSModulePath
- PUBLIC
- SESSIONNAME
- SystemDrive
- SystemRoot
- TEMP
- TMP
- USERDNSDOMAIN
- USERDOMAIN
- USERNAME
- USERPROFILE
- windir
Что каждая из этих строк означает - расписывать не буду, все есть и в справке по Windows, и так углядеть можно.
Но есть и вторая, более интересная часть переменных окружения - переменные для AutoCAD. Их перечень можно посмотреть в реестре, в ветке HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-YYYY:YYY\Profiles\ИмяПрофиля\General. И тут уже надо будет учитывать регистр символов.
Например, есть в указанной ветке реестра ключ ACAD (хранит пути поиска для AutoCAD). Так вот, (getenv "ACAD") вернет вполне нормальное значение, а (getnev "acad") - пустое значение (nil).
При работе приходится это постоянно учитывать...
Обсуждение: http://adn-cis.org/forum/index.php?topic=393
Опубликовано 12.12.2013Отредактировано 12.12.2013 в 22:11:22