|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
NanoCAD: проблема с назначением на кнопку КОМАНДЫ
г. Норильск
Регистрация: 15.08.2005
Сообщений: 616
|
||
Просмотров: 4297
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Я бы попробовал для начала убрать ^P. И заменить пробелы на ";".
Может быть, сработает код типа Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Код
^C^C(progn (load "c:\\path\\file.lsp") (c:d_abc)) наверняка сработает (не проверял), но вся прелесть определения именно команды, а не функции состоит в возможности повторно вызвать её правой кнопкой мыши, а не повторным тычком в кнопку или пункт меню. А при данной конструкции, ПКМ наверняка вызовет не эту, а предыдущую команду. :-( Проверил. Работает, но ПКМ - как и предполагалось - вызывает предыдущую команду. Игры с ^P и ; тоже пока результата не дали.
__________________
Счастливо, Алексей! Последний раз редактировалось ===AAA===, 15.03.2024 в 12:50. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Ну дык определи команду напрямую в коде, если работает:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Эксперименты показали, что проблему вызывает именно связка
(load "файл_с_командой.lsp") вызов_команды Если делать лоад_функция или повесить на кнопку команду, определённую ранее, то проблем нет. Подозреваю, что это связано с неудержимым желанием нанокада после загрузки файла с определением команд обязательно вывести на экран имена этих новых команд. И как отключить этот безумный эхо-вывод я пока не знаю. :-(
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Цитата:
Цитата:
Можно попробовать поиграться с nomutt, но какой будет эффект - не представляю.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Цитата:
Вызов (c:d_abc) внутри (progn ...) действительно срабатывает. Не срабатывает, когда пытаешься вызвать команду, именно, как команду, т.е. просто D_ABC nomutt проверял - не помогает Самое забавное, что поведение такой кнопки (работает / не работает) нестабильно. Т.е. потыкал - не работает. Делаешь "нарисуй отрезок", "сотри", ещё какие-нибудь команды, снова тыкаешь в кнопку - работает, как часики. Потом снова не работает. И это в одном и том же сеансе с разницей в десятки секунд.
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Ну лично я под наником а) постарался забыть про лисп и б) при необходимости загружаю приложения руками. Ну и в) иногда все же пробую пользоваться их встроенным скрипторедактором. Ужас, конечно, но за неимением лучшего...
Offtop: Была в октябре мысля разрабам закинуть идею на разработку расширения для VSCode, но я вовремя остановился ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Позволяет. Мало того, под nc23+ она крайне желательна: там прошел переход на NET6, который в 2019 не поддерживается (по крайней мере "из коробки")
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Цитата:
просто ты регистрируешь одну команду, а вызывать хочешь другую и это емнип должны отличаться -------------------- имха проще лисп команды кинуть в автозагрузку для оперативной перезагрузки (отладка правка) в этом лиспе добавить команду Код:
регистрация команд нужна только если хочешь прицепить к меню или сделать кнопку а повтор и история будет работать и без регистрации
__________________
Мастерская СПДС |
||||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Про "кинуть в автозагрузку" и сделать "команду 33" - понятно.
Часть КОМАНД у меня и так сидит в автозагрузке, есть и команды "для быстрой перезагрузки" и прочих "отладочных действий". Целых четыре: 21, 22, 66, 99 - все на цифровой клавиатуре, чтобы Enter был рядом. :-) И выкрутиться конкретно из этой ситуации можно, но "цепануло" другое - почему повесить на кнопку загрузку не определённой ранее функции с последующим "тут же её выполнением" можно, а команды, именно, как команды, чтобы отрабатывалось потом по ПКМ - нет. В АвтоКАДе-то работает без вопросов, а здесь где собака порылась? :-) Вариант с: Intername=sID_SdVerDwg LocalName=sID_SdVerDwg должны отличаться интересный, попробую. То doctorraz: Если сочтёте возможным (всё понятно - другие дела, нет времени и желания и т.п.) написать и показать здесь кусочек *.cfg, позволяющий реализовать задачу: - повесить на кнопку загрузку файла с командой (а не функцией), тут же выполнить её, да так, чтобы последующий щелчок ПКМ вызвал её повторно думаю, что это интересно будет не только мне.
__________________
Счастливо, Алексей! Последний раз редактировалось ===AAA===, 17.03.2024 в 07:26. |
|||
![]() |
|
||||
Вряд ли, выше уже все написано и про использование макросов и как обойти.
Еще раз повторю, стремлюсь по максимуму отделять команды от cfg
__________________
Мастерская СПДС |
||||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Цитата:
У кого-нибудь есть контакты с разработчиками nanoCAD'а ? Если есть - спросите у них напрямую, плиз, такая задача решается (может быть, у меня проблема в синтаксисе, непонятно пока) или нет. Видимо, конструкцию типа: Keyword=s^C^C^P(progn(load"d:\\dreamn\\nd_abc.lsp")(princ)) ^PD_ABC nanoCAD отправляет на выполнение, как единое целое. Поэтому команда начинает выполняться, не дожидаясь, когда отработает предшествующая ей загрузка. Поэтому и результат нестабильный - то работает, то нет. А вот с функцией - другое дело. Т.к. загрузка и выполнение находятся внутри (progn ...), то и выполняются они шаг-за-шагом.
__________________
Счастливо, Алексей! Последний раз редактировалось ===AAA===, 18.03.2024 в 14:52. |
|||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Что ж оно так через одно место-то работает... :-(
Keyword=s^C^C(progn(load"d:\\dreamn\\nd_abc.lsp")(c:d_abc)(princ)) отрабатывает стабильно - вопросов нет. Кроме одного - прежде, чем отработать, она выводит на экран строку: (progn(load"d:\\dreamn\\nd_abc.lsp")(c:d_abc)(princ)) Пытаемся её спрятать: Keyword=s^C^C^P(progn(load"d:\\dreamn\\nd_abc.lsp")(c:d_abc)(princ)) ^P Всё вроде бы замечательно, если только не нажимать эту кнопку во время выполнения другой команды (например, _line), которая находится в режиме запроса "введите точку" Тогда после её завершения возобновляется прерванная команда (видимо, срабатывает "пробел" перед крайним справа ^P). Ну и как составить в таком случае строку "Keyword=", которая "навсегда" прерывала бы любую работающую команду, отрабатывала бы мою (уже неважно - функцию или команду, результат одинаковый) и выходила бы на приглашение Команда: ?
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
Там еще фича есть..
Код:
__________________
Мастерская СПДС |
||||
![]() |
|
||||
lisp
а в ключевом слове лисп выражение ----- мож сгодится)) в аттаче функция лисп которая вызывается для понимания Offtop: PS в нк22 еще такие штуки можно было добавлять через НПИ, начиная с нк23 сильно упростили, без бутылки с НПИ не разобраться, проще руками в блокноте править
__________________
Мастерская СПДС Последний раз редактировалось doctorraz, 19.03.2024 в 09:18. |
||||
![]() |
|
||||
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616
|
Ещё поэкспериментировал:
Цитата:
Это не команда возобновляется, а просто в командную строку выводится последнее "приглашение" прерванной команды. Поэтому, скажем, запрос "введите 2-й точку" в реальности ничего не запрашивает, а просто заменяет собой слово "Команда:" Т.е. Ожидали видеть: Команда: А видим: Укажите следующую точку: Которая по факту ничего не хочет, а является обычным приглашением командной строки.
__________________
Счастливо, Алексей! |
|||
![]() |
|
||||
с Keyword так работает(((
Вызови из меню: справка, лицензионное соглашение, а потом попробуй повторить по enter space или ПКМ(( ---------- короче поразбирался, в истории команд: (ПКМ) остается только команда Keyword в историю не попадает, выражения и функции тоже
__________________
Мастерская СПДС Последний раз редактировалось doctorraz, 19.03.2024 в 12:27. |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C#. nanoCAD, Autocad. Экспорт геометрии в позиционный проект Stark ES | Нубий-IV | Готовые программы | 2 | 27.05.2024 15:17 |
.Net TableAutoComplete2 - Автозаполнение строк спецификации. Поддержка баз оборудования Nanocad | valerik88 | Готовые программы | 5 | 19.06.2023 08:40 |
Вызов команды лиспа без скобок и запись команды в файле acad.pgp | Ingpro | LISP | 10 | 02.12.2022 15:12 |
Проблема с ксероксом Canon PC860 | _Oleg_ | Разное | 5 | 26.12.2007 10:18 |
Проблема при применении команды BHATCH | Torino | AutoCAD | 4 | 20.01.2004 18:06 |