Получить оригинальное имя команды
Иногда требуется в локализованной версии AutoCAD узнать "оригинальное" имя команды.
Ничего сложного, уже много раз обсуждалось. Так, чтобы самому не забыть: есть функция getcname:
1 | (getcname "отрезок") ; "_LINE" |
И так далее
А нельзя ли прикрутить лисп (getcname "nnn") ; "zzz" с сокращением до пользовательского ввода и на кнопку его повесить.
Т.е. вызов
вбил команду
получил перевод
Есть еще способ
алгоритм: набираем на клаве "_box", затем жмем Esc, после "Enter", читаем перевод - "ЯЩИК")
Прекрасно... Задача обратная - находясь в локализованной версии, не зная оригинального имени команды, вычислить его.
P.S. Прикрутить лисп можно, почему нет:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
(if (= (vla-get-localeid (vlax-get-acad-object)) 1049)
(if (and (= (type
(setq
str
(vl-catch-all-apply
(function
(lambda ()
(getstring "\nВведите имя команды <Отмена> : ")
) ;_ end of lambda
) ;_ end of function
) ;_ end of vl-catch-all-apply
) ;_ end of setq
) ;_ end of type
'str
) ;_ end of =
(= (type (setq cmd (vl-catch-all-apply
(function
(lambda ()
(getcname str)
) ;_ end of lambda
) ;_ end of function
) ;_ end of vl-catch-all-apply
) ;_ end of setq
) ;_ end of type
'str
) ;_ end of =
) ;_ end of and
(princ (strcat "\nВведенное имя команды : "
str
"\nОригинальное имя команды : "
cmd
) ;_ end of strcat
) ;_ end of princ
(princ "\nУказанное имя команды не найдено")
) ;_ end of if
(princ
"\nYou can't get original command name within not Russian version!"
) ;_ end of princ
) ;_ end of if
(princ)
) ;_ end of defun
По старой привычке добавил массу проверок и отловов ошибок
P.S. Код особо не проверял.