|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Подавить подсказку "Команда:"
г. Норильск
Регистрация: 15.08.2005
Сообщений: 616
|
||
Просмотров: 4234
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
ИМХО:
Перед (initget ...) подавить cmdecho и nomutt, а потом восстановить. Потребуется запрет по выходу Esc или отлов ошибок. Если без этого, то Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Дык, это-то все уже сделано... Я же говорю - "nomutt"
подавляет не только слово "Команда: ", но и повтор подсказки функции (getkword p) на неверный ввод, чего не хотелось бы. Переиначу вопрос: "Есть ли средство (например, системная переменная), позволяющее временно заменить подсказку "Команда" на что-то другое - в моем случае на "". Сообщения других команд/функций при этом должны выводиться в обычном режиме" ?
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
(prompt ...) пробовал?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Я, конечно, дико извиняюсь, но что-то не догоняю... :-(
Вечер, наверное... Еще раз - медленно и печально. Конструкция: ======================================= (command "_.VSLIDE" "*d:\\dream\\news") (command "_.VSLIDE") (setq p (strcat "\nЕсли Вы все прочитали и - главное! - запомнили, то ..." "\nВведите Ключевое Слово: " )) ($modes '("nomutt"))(setvar "nomutt" 1) (princ p) (initget 1 "LASER щит 5100")(getkword p) (setvar "nomutt" 0) ======================================= работает нормально. Функция ($modes) - защита от ESC. Не отображается лишь повтор подсказки на неверный ввод ключевого слова. Я, конечно, могу все это безобразие завернуть в (while ...), даже отказавшись от (getkword), но хочется более красивого решения.
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Так, я ничего не понимаю. Конструкция
Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Привет!
Спасибо, что проверили на своем 2002. У меня на 14-м тоже все работало нормально. :-) Значит, списываю на глюк конкретно моей версии АКАД'а и оформляю это все красивым (while...). Всем спасибо.
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
Должен Вас огорчить. Когда выполняется S::STARTUP AutoCAD еще не полностью инициализирован и функции типа (getxxx ...) отрабатывают не совсем "красиво". Простыми методами выкрутиться здесь врядли удастся.
Можно попробовать так (я не проверял): 1)Оформить нужный код с показом слайдов и вводом ключевых слов в виде отдельной функции (например, ShowSlides) 2) В самом конце S::STARTUP вставить код: Код:
|
||||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Александр Ривилис прав. В S::STARTUP еще много подлостей скрывается, например с установкой переменных. Лучше вообще от нее отказаться, а обязательный код выполнять в ACADxxx.lsp или acaddoc.lsp
|
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Привет!
Все решилось достаточно просто: ============================================= (command "_.VSLIDE" "*d:\\dream\\news") (command "_.VSLIDE") (princ "\nЕсли Вы все прочитали и - главное! - запомнили, то ...") ($modes '("nomutt"))(setvar "nomutt" 1) (setq p0 t) (while p0 (princ "\nВведите Ключевое Слово: ") (setq p3 (strcase(getstring))) (if (or (= p3 "LASER")(= p3 "5100"))(setq p0 nil) (princ "\nК сожалению, Вы не внимательно прочитали сообщение!")) ) (setvar "nomutt" 0) ============================================= А "S::STARTUP" - это "тяжкое наследие прошлого", когда при старте (command ...) можно было выполнять только в ней. :-) В любом случае - всем спасибо за отзывы. Кстати, раз пошла такая пьянка. Кто как знакомит пользователей с новыми наработками? У меня, допустим, это типичная многолетняя проблема - хелп не читают, новых возможностей не знают, а когда случайно кому-нибудь из пользователей их покажешь - "А где ты раньше-то был! А мы так мучились..." :-)
__________________
Счастливо, Алексей! |
|||
![]() |