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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Принудительный повтор команды.

Принудительный повтор команды.

Ответ
Поиск в этой теме
Непрочитано 18.11.2007, 19:23 #1
Принудительный повтор команды.
Makartetsky
 
Регистрация: 18.11.2007
Сообщений: 11

Здравствйте. Хотелось бы решить следующую проблемку. Почему-то Autocad принимает любое "" в лисп-программе за повтор предыдущей команды. Прямо во время исполнения. Например, при включении слоя:
(command "Layer" "On" "Axled" "") .

Здесь "" по змаслу означает окончание команды Layer.
Раньше такого не было. Поскажите, пожалуйста, в чем дело.
Просмотров: 3189
 
Непрочитано 18.11.2007, 19:53
#2
Кулик Алексей aka kpblc
Moderator

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


AutoCAD воспринимает "" как нажатие Enter (или пробел, как больше нравится). Так что смотри команду подробно. Так, например, вариант
Код:
[Выделить все]
(command "_.-layer" "_m" "qwer" "_c" 16 "" "")
будет воспринят как "создать и активировать слой qwer, задав ему цвет №16; после этого выйти из команды.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.11.2007, 20:14
#3
Profan


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


В том случае, когда конкретный слой надо включить или отключить, достаточно одной пары кавычек. Так что у Makartetsky выражение правильно записано. Но это только одна строка, может повторный вызов команды происходит в коде дальше? Не помешал бы пример с другой командой.
Profan вне форума  
 
Автор темы   Непрочитано 18.11.2007, 20:21
#4
Makartetsky


 
Регистрация: 18.11.2007
Сообщений: 11


Спасибо. Я понял свою ошибку.
Makartetsky вне форума  
 
Автор темы   Непрочитано 18.11.2007, 20:25
#5
Makartetsky


 
Регистрация: 18.11.2007
Сообщений: 11


А нельзя ли сделать так, чтобы нажатие на Enter в режиме ожидания не влекло за собой предыдущей комманды?
Makartetsky вне форума  
 
Непрочитано 18.11.2007, 20:35
#6
Кулик Алексей aka kpblc
Moderator

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


Не понял вопроса.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.11.2007, 20:42
#7
Profan


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


Для Makartetsky.
А в чем ошибка-то?
Profan вне форума  
 
Автор темы   Непрочитано 18.11.2007, 20:46
#8
Makartetsky


 
Регистрация: 18.11.2007
Сообщений: 11


Деталь задается многими параметрами, которые вводит пользователь в ответ на запросы. При тестировании неудобно, когда ты принимаешь запросы по умолчанию и нажимаешь Enter и держишь. Когда запросы кончились - автокад переходит в режим ожидания и на шальной Enter выдает предыдущую команду, запущенную непосредственно из графической среды автокада.
Но это лечится Esc.
Makartetsky вне форума  
 
Автор темы   Непрочитано 18.11.2007, 20:47
#9
Makartetsky


 
Регистрация: 18.11.2007
Сообщений: 11


Для Profan.
В том, что понаставил лишние "" в простановке размеров.
Наример:
(command "dimlinear" pt0 pt1 pt2 "")
Makartetsky вне форума  
 
Автор темы   Непрочитано 18.11.2007, 20:48
#10
Makartetsky


 
Регистрация: 18.11.2007
Сообщений: 11


Для Кулик Алексей aka kpblc
То есть, наоборот, удобно.
Makartetsky вне форума  
 
Непрочитано 18.11.2007, 20:53
#11
Profan


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


Может, лучше сделать диалоговое окно для задания параметров?
Profan вне форума  
 
Автор темы   Непрочитано 18.11.2007, 20:57
#12
Makartetsky


 
Регистрация: 18.11.2007
Сообщений: 11


Эти вещи я еще не освоил.
Makartetsky вне форума  
 
Непрочитано 18.11.2007, 21:04
#13
Кулик Алексей aka kpblc
Moderator

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


Есть несколько вариантов:
1. Нарисовать dcl и обрабатывать его.
2. Отказаться от использования командных методов. Вообще.
3. Комбинировать пп.1 и 2.
---
Не исключающие предыдщущие:
- смотреть в ком.строку.
- оформить выполняемые действия отдельной командой, с обработчиком ошибок и т.п.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Принудительный повтор команды.

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение полей (fields) RomanM AutoCAD 20 24.08.2016 22:39
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Прозрачные команды Vova AutoCAD 17 21.06.2006 05:33
Заперт на стандартные команды автокада Александер Программирование 22 12.07.2005 14:28
Повтор команды <break at point> wo! AutoCAD 4 17.06.2005 16:25