Локализация и команды
Просто захотелось дать полный ответ на такой вопрос: “Как в русском / немецком / китайском etc AutoCAD написать лисп / DIESEL / макрос, не зависящий от локализации?
Все достаточно просто (на первый взгляд): ставим подчеркивание перед английским именем команды и перед каждой опцией – и все.
Но! Вызывать команды надо с полными именами, т.е. _pline, а не pl или пл. С опциями такого требования нет, т.е. можно указывать и полное имя опции, и ее сокращение.
Но и это не все. Никто не знает, какие расширения “навешаны” на AutoCAD конечного пользователя. А среди этих “довесков” может оказаться достаточно зловредный код, который переопределяет команды (о переопределении команд и командных реакторах как-нибудь в другой раз). Чтобы вызвать стандартную “чистую” команду AutoCAD’a, достаточно перед именем команды поставить не только подчеркивание, но и точку.
Поэтому лично я при неизбежности использования команд (бывает такое, бывает) делаю таким образом:
- Имя команды – полностью на английском языке, перед именем устанавливается знак подчеркивания и точка (например, _.-purge)
- Каждая опция команды предваряется знаком подчеркивания (например, _r). Точка не устанавливается – она будет только мешаться.
Как пример:
;;
(command "_.-purge" "_r" "" "*")
P.S. Это касается не только лисп-кода, но и макросов, вызываемых по кнопкам.
Материалы для проектирования, работы и разработки (и не только в AutoCAD)
Стоит добавить, что точку можно писать и в опции функции выбора, предполагающие запросы в командной строке:
(ssget "_+.:e" '((0 . "line")))
В этом случае, перед точкой необходимо ставить плюс.
Плюс необходим при комбинации нескольких ключей. А так-то его можно и пропустить (сколько раз уже делал, все работало без особых вопросов).
Другой момент – это то, что внутри (ssget) каждый символ должен находиться в строго определенном месте (то есть менять местами символы ‘+’, ‘.’, ‘_’ нельзя, в отличие от команд, где точка и подчеркивание могут идти в любом порядке).