Определение локализации AutoCAD.
Как было сказано в теме на dwg.ru AutoCad 2013 En, проблемы с кодировкой в программах., при попытке использования в английском AutoCAD файлов dcl (в том числе и динамически созданных) с русскими символами в label, мы получаем "крякозябры" вместо более-менее читаемого текста.
Комментарий от А.Ривилиса:
Удар под дых лиспописателям. Для того, что бы использовать файлы dcl в AutoCAD 2013 приходится их сохранять в UTF-8. В предыдущих версиях AutoCAD этот формат не воспринимается.
Для нормальной обработки подобных шуток можно использовать функцию примерно такого плана:
1 2 3 4 5 6 7 8 9 | (defun _lispru-is-acad-rus () ;| * Проверяет, является ли AutoCAD русским. Для версий AutoCAD до 2012 включительно возвращает t * независимо от локализации. В версии 2013 обрабатывает язык AutoCAD'a |; (or (<= (_lispru-acad-version) 18.2) (= (vla-get-localeid (vlax-get-acad-object)) 1049) ) ;_ end of or ) ;_ end of defun |
Функция вернет для всех версий до 2012 включительно t независимо от локализации AutoCAD, а для 2013 уже будет смотреть - русский там или английский вариант запущен.
Соответственно можно запросто писать нечто типа
1 | (alert (if (_lispru-is-acad-rus) "Ошибка!" "Error!")) |
Конечно, потребуется переделывать старые лиспы, но... Но выбора пока нет
Используются функции:
_lispru-acad-version
_lispru-is-acad-rus