Какая функция в Autocad пишет "Unknown command"?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Какая функция в Autocad пишет "Unknown command"?

Какая функция в Autocad пишет "Unknown command"?

Ответ
Поиск в этой теме
Непрочитано 14.10.2009, 14:46 #1
Какая функция в Autocad пишет "Unknown command"?
Nihilant
 
инженер
 
Регистрация: 14.10.2009
Сообщений: 3

В Autocad есть функция *error*, для которой можно написать свой обработчик ошибок. Именно она пишет сообщения типа "; error: too few arguments". А какая функция пишет "Unknown command" и можно ли её переопределить? Хотел сделать простой англификатор для команд, который переводил бы Автокаду, например "дшту" в "line".
Просмотров: 4368
 
Непрочитано 14.10.2009, 15:01
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Идея фикс, IMHO.
Profan вне форума  
 
Непрочитано 14.10.2009, 15:05
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Код:
[Выделить все]
(defun c:дшту()
(command "_.line")
)
Так, что ли?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.10.2009, 12:49
#4
Nihilant

инженер
 
Регистрация: 14.10.2009
Сообщений: 3


2 Kpblc:
Неа, не так. А чтобы ВСЕ слова с клавиатуры перехватывала. Типа PuntoSwither'a. Но в Автокаде. Алгоритм работы такой:
1. Перехватить исключение (?) "Unknown command".
2. Попытаться сказать Автокаду то же, что ему ввел пользователь, но по-английски.
3. Если снова "Unknown command", то ничего не делать.
4. Если он понял - пусть исполняет.

Хотя, может и автопереключалка типа PuntoSwither'a сработает неплохо.
Nihilant вне форума  
 
Непрочитано 15.10.2009, 13:08
#5
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Можно воспользоваться файлом acad.pgp. Однако, ты упустил из виду, что в большинстве команд присутствуют опции. Их тоже будешь модифицировать по типу "дшту" в "line"?
Profan вне форума  
 
Непрочитано 15.10.2009, 13:13
#6
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Такое реально сделать только на ObjectARX. Но смысла в этом я не вижу.
Александр Ривилис вне форума  
 
Непрочитано 15.10.2009, 13:17
#7
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Вот как будет выглядить в acad.pgp вышеупомянутая модификация:
Код:
[Выделить все]
 
ДШТУ, *ОТРЕЗОК
Profan вне форума  
 
Непрочитано 15.10.2009, 13:37
#8
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Думаю, проще не париться с перехватом исключений, а отслеживать запуск команды и сразу переключать язык ввода, возможно с возвратом обратно, после окончания. Повысится надежность и можно будет использовать на любых локализациях акада.
__________________
Чем гениальнее ваш план, тем меньше людей с ним будут согласны.
/Сунь Цзы/
Елпанов Евгений вне форума  
 
Непрочитано 15.10.2009, 19:24
#9
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


для русской раскладки клавиатуры
Код:
[Выделить все]
(vl-load-com)
(vlr-command-reactor "StartCommand" (list (cons :vlr-commandWillStart 'StartCommand)))
(vlr-command-reactor "TranslateCommand"
		     (list (cons :vlr-unknownCommand 'TranslateCommand))
)
(defun StartCommand (reactor_object obj) (setq *UnknownCommand* nil))
(defun TranslateCommand	(reactor_object obj)
  (if (and (car obj) (not *UnknownCommand*))
    (progn
      (setq *UnknownCommand* t)
      (vla-SendCommand (vla-get-ActiveDocument (vlax-get-acad-object))
		       (strcat "._"
			       (vl-string-translate "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ"
						    "QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,./"
						    (strcase (car obj))
			       )
			       " "
		       )
      )
    )
  )
)
Vov.Ka вне форума  
 
Автор темы   Непрочитано 16.10.2009, 09:34
#10
Nihilant

инженер
 
Регистрация: 14.10.2009
Сообщений: 3


Спасибо всем. Код Vov.Ka работает. Однако хотелось бы, чтобы Автокад и дальше понимал строки типа "3б40 (вместо @3,40), т.е. нужен реактор на сообщение "Point or option keyword required." Наверное, нужен ":vlr-commandFailed".
Nihilant вне форума  
 
Непрочитано 16.10.2009, 11:11
#11
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Nihilant, мне кажется, что для набора цифр проще пользоваться нумпадом чем писать дополнительный ректор
Vov.Ka вне форума  
 
Непрочитано 16.10.2009, 11:56
#12
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Nihilant Посмотреть сообщение
т.е. нужен реактор на сообщение "Point or option keyword required." Наверное, нужен ":vlr-commandFailed".
Реактора на это сообщение не существует, а ":vlr-commandFailed" - это совсем из другой оперы.
Александр Ривилис вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Какая функция в Autocad пишет "Unknown command"?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какая прелесть, эти наши ПРОСТРАНСТВО ЛИСТА и AutoCad! BM60 AutoCAD 554 20.02.2024 06:23
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
О создании темы (раздела) для новичков в AutoCAD. Profan Разное 110 23.10.2008 10:01
Функция статистики в AutoCAD? Jerald AutoCAD 13 17.08.2007 18:00