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

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

Нужно повесить лисп программу на кнопку

Ответ
Поиск в этой теме
Непрочитано 05.11.2009, 13:57 #1
Нужно повесить лисп программу на кнопку
Нитонисе
 
Регистрация: 05.11.2009
Сообщений: 4,360

Есть лисп-программа, загружать ее постоянно через меню Сервис-Приложения постоянно не удобно. Хотелось бы повесить ее на какую нибудь кнопку, размещенную на панелях инструментов. Как это можно сделать?
И второй вопрос. Тоже на кнопку хотелось бы повесить запуск из автокада другого приложения.

Добавлено.
С первым вопросом разобрался. Осталось выяснить как на кнопку повесить запуск другого приложения. Точнее сказать узнать какой командой это делается.

Добавлено.
Ну вот и со вторым вопросом разобрался) Спасибо)

Последний раз редактировалось Нитонисе, 05.11.2009 в 14:57.
Просмотров: 14224
 
Непрочитано 05.11.2009, 15:41
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,890
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Нитонисе, Приведи здесь решения, раз разобрался. Для потомков
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 05.11.2009, 19:56
1 | #3
Нитонисе


 
Регистрация: 05.11.2009
Сообщений: 4,360


Ну тогда расскажу)

Вешаю лисп-программу на кнопку.
Создаю файл acad.lsp, в котором определяю функцию, запускающую действия из моей лисп-программы. Эта функция вызывается по имени. Захожу в автокаде (2008) в меню "Адаптация", создаю там новую панель и новую команду. Прописываю макрос ^C^C(<имя функции>), где <имя функции> - это как раз название функции, определенной в файле acad.lsp. Далее выбираю для своей новой команды пиктограмму для кнопки и затаскиваю ее на свою панель инструментов.

Вешаю на кнопку запуск приложения из автокада.
Опять же в меню "Адаптация" создаю новую команду. Макрос выглядит так - ^C^C(startapp "C://Program Files//AutoCAD 2008//MyProg.exe"), тутуказан путь к нужной мне программе MyProg.exe, которую я поместил в директории автокада. Снова же подбираю подходящую пиктограмму для кнопки и размещаю ее на моей панели инструментов.

Кажется ничего не забыл)
Нитонисе вне форума  
 
Непрочитано 20.04.2017, 13:53
#4
d.mOnII

Проектирование
 
Регистрация: 22.01.2013
Минск
Сообщений: 123
Отправить сообщение для d.mOnII с помощью Skype™


Добрый день. прошу помочь в следующем:
Пытаюсь повесить на кнопку лисп.
Название команды XA$ (в лиспе запись: defun C:XA$)
Автокад 2017
Lisp команды подгружены
открываю панель: "Адаптация пользовательского интерфейса"
сознаю новую команду
прописываю макрос: ^C^C(XA$)
вешаю на свою панель
кликаю на кнопку (пиктограмму) и получаю в командной строке запись "(XA"
переписываю макрос: ^C^CXA$
кликаю на кнопку (пиктограмму) и получаю в командной строке запись "XA"
переписываю макрос: ^C^CXAdollar
кликаю на кнопку (пиктограмму) и получаю в командной строке запись "Команда: XAdollar Неизвестная команда "XADOLLAR". Для вызова справки нажмите F1."
переписываю макрос: ^C^C_XA$
кликаю на кнопку (пиктограмму) и получаю в командной строке запись "_XA"
Подскажите, плиз, правильную маску для записи макроса, перепробовал кучу всего, править лисп - не вариант либо данной команде повесить дополнительную команду, если вся проблема в спец символе "$"

Учитывая что LISPы подгружены, выполнил проверку по команде без спецсимвола
прописал макрос ^C^CMA, где команда в LISP "MA" - и все работает

Последний раз редактировалось d.mOnII, 20.04.2017 в 14:04. Причина: уточнение о подгруженных LISP
d.mOnII вне форума  
 
Непрочитано 20.04.2017, 14:01
#5
Кулик Алексей aka kpblc
Moderator

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


А лисп точно загружен? Вызов с ком.строки срабатывает? Если оба ответа "да", попробуй так:
^C^Cxa$;
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.04.2017, 14:12
#6
limonuwka


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


что бы не создавать нового..
есть ли возможность назначить команду макросу?
создал макрос очистки (очистка от прокси+пурдж+аудит), повесил все на кнопку, все работает, я счастлив, но вот как ее с клавиатуры запустить?
limonuwka вне форума  
 
Непрочитано 20.04.2017, 14:18
#7
d.mOnII

Проектирование
 
Регистрация: 22.01.2013
Минск
Сообщений: 123
Отправить сообщение для d.mOnII с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
А лисп точно загружен? Вызов с ком.строки срабатывает? Если оба ответа "да", попробуй так:
^C^Cxa$;
Алексей, да, все подгружено, с ком строки работает.
переписываю макрос по Вашей маске: ^C^CXA$;
кликаю на кнопку (пиктограмму) и получаю в командной строке запись "XA"
d.mOnII вне форума  
 
Непрочитано 20.04.2017, 14:20
1 | #8
Кулик Алексей aka kpblc
Moderator

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


d.mOnII, код приведи.
limonuwka, через лисп определяешь свою команду и ее вызываешь. Самое простое решение
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.04.2017, 14:24
#9
limonuwka


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Самое простое решение
логично, спасибо!
limonuwka вне форума  
 
Непрочитано 20.04.2017, 14:32
#10
d.mOnII

Проектирование
 
Регистрация: 22.01.2013
Минск
Сообщений: 123
Отправить сообщение для d.mOnII с помощью Skype™


при вводе в ком. строке нажимаем ENTER затем еще раз ENTER открывается диалоговое окно для подгрузки внешней ссылки
работает при условии:
1. файл сохранен в параллельной папке
2. в файле присутствует сервисный слой ZS_STDL_XREF
3. файл ссылки расположен в папке xrefs (в том же корневом каталоге)

Последний раз редактировалось d.mOnII, 20.04.2017 в 22:39.
d.mOnII вне форума  
 
Непрочитано 20.04.2017, 14:53
#11
Кулик Алексей aka kpblc
Moderator

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


d.mOnII, а у тебя слои-то есть в файле? Именно те, которые нужны? Посмотри, что тебе ACAD в ком.строке говорит (клавиша F2). Качество кода не оцениваю. Так, вроде бы, должен быть рабочий
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.04.2017, 15:10
#12
d.mOnII

Проектирование
 
Регистрация: 22.01.2013
Минск
Сообщений: 123
Отправить сообщение для d.mOnII с помощью Skype™


Алексей, еще раз)))
с командной строки все работает на ура
т.е. я ввожу команду ручками и все ок.
Но когда вешаю на кнопку, акад не хавает спецсимвол "$"
d.mOnII вне форума  
 
Непрочитано 20.04.2017, 15:27
#13
Profan


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


А убрать (заменить) этот спецсимвол разве нельзя?
Profan вне форума  
 
Непрочитано 20.04.2017, 15:29
#14
d.mOnII

Проектирование
 
Регистрация: 22.01.2013
Минск
Сообщений: 123
Отправить сообщение для d.mOnII с помощью Skype™


Цитата:
Сообщение от Profan Посмотреть сообщение
А убрать (заменить) этот спецсимвол разве нельзя?

Цитата:
Сообщение от d.mOnII Посмотреть сообщение
править лисп - не вариант либо данной команде повесить дополнительную команду, если вся проблема в спец символе "$"
2 Profan - можно прежде чем писать - прочитать?
d.mOnII вне форума  
 
Непрочитано 20.04.2017, 15:44
#15
Profan


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


Действительно, я не читал твою исповедь в #4, я проглядел код и увидел, что символ $ упоминается только в имени функции (команды). А раз так, то и заменить его. Да еще и локализовать программу можно. Но если нельзя, тогда на фиг.
P.S. Почему это Profan - 2? А не 522?
Profan вне форума  
 
Непрочитано 20.04.2017, 15:48
#16
baksconstructor


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


https://dwg.ru/pub/6
$, $M= Специальный символ, служащий для ввода выражений, написанных на языке DIESEL.
baksconstructor вне форума  
 
Непрочитано 20.04.2017, 15:58
#17
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
 (defun c:call-xa () (c:xa$))
Код:
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.04.2017, 17:09
#18
d.mOnII

Проектирование
 
Регистрация: 22.01.2013
Минск
Сообщений: 123
Отправить сообщение для d.mOnII с помощью Skype™


Алексей, уточните, пожалуйста, это в моем коде необходимо переписать данную часть?
тогда получается, я смогу в командной строке вводить XA$, а на кнопку повесить макрос ^C^Ccall-xa; ?
d.mOnII вне форума  
 
Непрочитано 20.04.2017, 17:17
#19
Кулик Алексей aka kpblc
Moderator

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


Первая часть определяет новую команду, поскольку менять название команды нельзя. Вызывается в меню именно "новая", вот и все.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.04.2017, 17:19
#20
d.mOnII

Проектирование
 
Регистрация: 22.01.2013
Минск
Сообщений: 123
Отправить сообщение для d.mOnII с помощью Skype™


Кад опять пишет: "Неизвестная команда "CALL-XA". Для вызова справки нажмите F1."
тем не менее с командной строки по-прежнему работает на ура XA$
d.mOnII вне форума  
 
Непрочитано 20.04.2017, 17:25
#21
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550


зачем так глупо называть команды?
gomer вне форума  
 
Непрочитано 20.04.2017, 17:26
#22
Кулик Алексей aka kpblc
Moderator

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


Блин, у меня идеи кончились. У меня в 2009, 2013, 2016 работало.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.04.2017, 19:37
#23
d.mOnII

Проектирование
 
Регистрация: 22.01.2013
Минск
Сообщений: 123
Отправить сообщение для d.mOnII с помощью Skype™


подскажите, пожалуйста, как можно сделать двойное название на одну и ту же функцию Ru/En (полагаю мне поможет), например, моя ф-ция называется "XA$", а желательно добавить вызов и по "ЧФ;"
d.mOnII вне форума  
 
Непрочитано 20.04.2017, 20:50
#24
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,890
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Переименуй c:xa$ на xa_function
И добавь перед ним 2 строчки
Код:
[Выделить все]
(defun C:XA$ ()(xa_function))
(defun С:XA ()(xa_function))
Было
Цитата:
(defun c:xa$ ()
(setq layerfound nil)
(if (tblsearch "LAYER" "XREF")
... далее по тексту
Должно стать
Цитата:
(defun C:XA$ ()(xa_function))
(defun С:XA ()(xa_function))
(defun xa_function () ;_Убрали c:xa$
(setq layerfound nil)
(if (tblsearch "LAYER" "XREF")
... далее по тексту
В меню используй ^C^CXA
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.04.2017, 21:13
#25
d.mOnII

Проектирование
 
Регистрация: 22.01.2013
Минск
Сообщений: 123
Отправить сообщение для d.mOnII с помощью Skype™


большое спасибо.
Утром опробую с использованием кирилицы

----- добавлено через ~11 ч. -----
доброго утра.
попробовал вариант VVA теперь один лисп работает, а все другие из этого же файла все как один выбрасывают ERROR: "; ошибка: неверный тип аргумента: stringp nil". совпадением по именам функций проверил - не пересекаются

Последний раз редактировалось d.mOnII, 21.04.2017 в 10:24.
d.mOnII вне форума  
 
Непрочитано 21.04.2017, 19:33
#26
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,890
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от d.mOnII Посмотреть сообщение
все другие из этого же файла все как один выбрасывают ERROR:
Файл секретный? Если нет - выложи, посмотрим в чем дело
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 22.04.2017, 17:05
#27
d.mOnII

Проектирование
 
Регистрация: 22.01.2013
Минск
Сообщений: 123
Отправить сообщение для d.mOnII с помощью Skype™


Доброго дня.
Секретный(((
может в личку?
Устранение ошибки решил методом переустановки Акада и полной очистки реестра
d.mOnII вне форума  
 
Непрочитано 22.04.2017, 20:01
#28
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,550


Цитата:
Сообщение от d.mOnII Посмотреть сообщение
может в личку?
судя по симптомам даже за деньги не советовал бы лезьть втудой
gomer вне форума  
 
Непрочитано 23.04.2017, 05:07
#29
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от d.mOnII Посмотреть сообщение
все другие из этого же файла все как один выбрасывают ERROR: "; ошибка: неверный тип аргумента: stringp nil"
Пошаговая отладка и вперед.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.06.2021, 12:33
#30
Coochi


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


Приветствую, коллеги. Вешаю исполнение 2х лиспов в 1 макросе на кнопку

^C^C^P_DWG-PURGE ^C^C^P_dr
(чистка от мусора+удаление библиотек из файла), все бы хорошо но остается открытым "Текстовое окно" кое открывается\закрывается клавишей F2, вопросы:

а) можно ли его закрытие прописать в этом макросе? "F2" вставлял в конце строчки макроса пишет ошибка
б) как следует разделять 2 лиспа в строке макроса если первый лисп, обычно, исполняется некоторое время (1-5 секунд?)
Coochi вне форума  
 
Непрочитано 16.06.2021, 12:56
1 | #31
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,229


Цитата:
Сообщение от Coochi Посмотреть сообщение
^C^C^P_DWG-PURGE ^C^C^P_dr
А в чем сакральный смысл многократного ^C^C...^C^C. Макрос, НЯП, тот же скрипт и выполняется в очередности записи команд, неважно какой длительности в отдельности.
А для включения-отключения текстового окна можно использовать команду _TEXTSCR
AlexCondor вне форума  
 
Непрочитано 16.06.2021, 13:06
#32
Coochi


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


_TEXTSCR сработал, спасибо, а ^C^C во всех наставлениях пишут ну и я написал))
Coochi вне форума  
 
Непрочитано 16.06.2021, 13:18
#33
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,229


Цитата:
Сообщение от Coochi Посмотреть сообщение
^C^C во всех наставлениях пишут ну и я написал))
Заметьте, в начале пишут, для правильного запуска макроса.
AlexCondor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Нужно повесить лисп программу на кнопку

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как на кнопку клавиатуры повесить выполнение команды kol AutoCAD 12 14.09.2016 10:30
Повесить Esc на боковую кнопку мыши BM60 AutoCAD 37 18.01.2012 00:14
Повесить свою ПСК на кнопку postbudka AutoCAD 6 08.02.2009 10:54
Как на самодельную кнопку повесить комбинацию клавиш? Neznayka AutoCAD 5 17.09.2005 13:02
Как повесить на кнопку Включение определенного набора слоев ilka_t AutoCAD 6 16.06.2005 15:50