Определение локализации 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

Размещено в Код LISP, Функции LISP · Метки: , ,



Поделитесь своим мнением


Я не робот.