Jump to content

Выполнение LISP по кнопке в меню


Recommended Posts

Только начинаю разбираться с NanoCAD, посему прошу сильно не пиннать) Форум прочел, но ответа на свой вопрос не нашел(

Есть файл .lsp, добавлен в автозагрузку, для запуска функций из него - нужно в командной строке LSP - О - функция

Хотелось бы этот процесс упростить, путем добавления пользовательского меню, с кнопками вызывающими функии из моего файла.

Как это делать с JS и VBS - посмотрел в примерах, все работает, а вот с LISP как быть?

 

Помогите пожалуйста, может быть примером кто поделиться? :rolleyes:

Link to comment
Share on other sites

Только начинаю разбираться с NanoCAD, посему прошу сильно не пиннать) Форум прочел, но ответа на свой вопрос не нашел(

Есть файл .lsp, добавлен в автозагрузку, для запуска функций из него - нужно в командной строке LSP - О - функция

Хотелось бы этот процесс упростить, путем добавления пользовательского меню, с кнопками вызывающими функии из моего файла.

Как это делать с JS и VBS - посмотрел в примерах, все работает, а вот с LISP как быть?

 

Помогите пожалуйста, может быть примером кто поделиться? :rolleyes:

Добрый день!

Есть статья на эту тему:

https://habrahabr.ru/company/nanosoft/blog/239533/

  • Like 1
Link to comment
Share on other sites

Статью читал, но ответа на свой вопрос в ней не нашел(

По vbs и js вопросов нет, но как быть с lisp? Тоже в nsf файл?

Edited by netscape
Link to comment
Share on other sites

Статью читал, но ответа на свой вопрос в ней не нашел(

По vbs и js вопросов нет, но как быть с lisp? Тоже в nsf файл?

 

Оборачивать LISP не нужно.

Сделал небольшой пример c использованием lisp, где COOR,COORN - имена команд из Lisp.

 

 

Создаём в C:\Program Files\Nanosoft\nanoCAD x64 Plus 7.0 текстовый файл userdata.cfg и копируем следующее.

 

[\configman\commands\COOR]
weight=i30   |cmdtype=i0   |CapsDisable = W0xFF
intername=sCOOR
BitmapDll=snewbtns.dll |BitmapId=i155   |ButtonId=i2   |TotalButtons=i6
DispName=sЭкспорт координат
StatusText=sЭкспорт координат

[\configman\commands\COORN]
weight=i30   |cmdtype=i0   |CapsDisable = W0xFF
intername=sCOORN
BitmapDll=snewbtns.dll |BitmapId=i155   |ButtonId=i2   |TotalButtons=i6
DispName=sЭкспорт координат с нумерацией
StatusText=sЭкспорт координат с нумерацией

[\menu\mycommands]									   |name=sМои команды
[\menu\mycommands\exportcoor]				   |name=sЭкспорт координат
[\menu\mycommands\exportcoor\COOR]	 |name=sЭкспорт координат |InterName=sCOOR
[\menu\mycommands\exportcoor\COORN]   |name=sЭкспорт координат с нумерацией |intername=sCOORN

[\toolbars\mycommands] |InitialVisible=f1 |name=sМои команды
[\toolbars\mycommands\COOR] |intername=sCOOR
[\toolbars\mycommands\COORN] |intername=sCOORN
[\toolbarspos\mycommands] |DockPosition=stop |row=i0 |pos=i2

[\menu\View\toolbars\My_toolbars] |Name=sМои панели
[\menu\View\toolbars\My_toolbars\ShowToolbar_mycommands] |Name=sМои команды |InterName=sShowToolbar_mycommands

[\ToolbarPopupMenu\My_toolbars] |Name=sМои панели
[\ToolbarPopupMenu\My_toolbars\ShowToolbar_mycommands] |Name=sМои команды |InterName=sShowToolbar_mycommands

[\configman\commands\sShowToolbar_MyCommands]
weight=i10   |cmdtype=i0  |CapsDisable = W0xFF
intername=sShowToolbar_MyCommands
StatusText=sПоказать/скрыть панель Мои команды
ToolTipText=sПоказать/скрыть панель Мои команды
DispName=sПоказать/скрыть панель Мои команды

[\Accelerators]
COOR=sCtrl+B
COORN=sCtrl+G

 

Запустите nanoCAD и сбросьте настройки интерфейса

Перезапустите nanoCAD и добавьте приложенный лисп - coorn.lsp в автозагрузку.

У вас появились пункты меню при нажатии на которые происходит запуск команд из lisp.

coorN.LSP

Безымянный.png

  • Like 2
Link to comment
Share on other sites

Сделал небольшой пример c использованием lisp, где COOR,COORN - имена команд из Lisp.

Огромное спасибо, что все разжевали мне)

Обязательно попробую!

Link to comment
Share on other sites

Проще всего сделать лисп-функцию командой, приписав к её имени C: и прописать её в меню, как любую другую.

 

В nanoCAD в меню/на тулбар можно поместить только команду, строку поместить нельзя. Если же нужно вызывать именно лисп-выражение, то следует описать в .cfg файле новую команду, выполняющую это лисп выражение, и добавить эту команду в меню.

 

nApp.cfg:

[\menu\MyBlocks]				 |name=s&Мои команды
[\menu\MyBlocks\InsertMyBlock01] |name=s&Вставить блок 01 |intername=sInsertMyBlock01

[\configman\commands\InsertMyBlock01]
weight=i30   |cmdtype=i1   |Caps = W0x34
intername=sInsertMyBlock01
RealCommandName=sLSP
Keyword=sE^M(progn (setq p (getpoint)) (command "-INSERT" "C:\\MyFile.dwg" p 1 1 1))^M

 

intername -- имя новой команды

RealCommandName -- имя существующей команды, в данном случае LSP

Keyword -- параметры существующей команды

 

Файл nApp.cfg следует положить рядом с NCad.exe.

Link to comment
Share on other sites

  • 4 years later...

Нанокад 21. Создал файл userdata.cfg с текстом в выше приведенном примере. Вчера все работало корректно (компьютер не перезагружался). Сегодня обнаружил что размер кнопок увеличился (вчера размер кнопок был одинаковый со всеми другими кнопками).

Попытка сбросить интерфейс ничего не поменяла. Также попробовал такие действия: удалил файл userdata.cfg из папки с нанокадом и сбросил настройки. После этих действий я так понимаю у меня должна была пропасть вкладка и панель Мои команды, но этого не произошло. При отсутствующем файле все осталось на месте.

Вопрос: почему не произошло сброса панелей (нанокад дополнительно копирует себе настройки еще куда-то) и как вернуть размер кнопок?

Кнопки.png

Link to comment
Share on other sites

Чтобы убрать надписи с панели инструментов: запустите команду НПИ. Перейдите в диалоговом окне НПИ во вкладку Панели инструментов

287592465_.png.1219468512b3d9e069861705fcee5fd5.png

Выберите свою панель и ниже в свойствах уберите флажок напротив Показывать надписи:

1813606049_2.png.05c22bd3b172b8ff3e871a5384347ef8.png

Как правильно заметили, nanoCAD копирует настройки. Перейдите по следующему пути (для 21 версии nanoCAD): %AppData%\Nanosoft\nanoCAD x64 21.0\Config

и удалите файл userdata.cfg 

Link to comment
Share on other sites

Спасибо за ответ.

nanoCAD копирует файл userdata.cfg только один раз или он периодически это делает (к примеру раз в сутки, неделю и т.д.)?

Вопрос к разработчикам: могу ли я добавлять новые bmp для кнопок в файл newbtns.dll или лучше делать свои dll?

Link to comment
Share on other sites

В 17.05.2021 в 10:13, tareto сказал:

Спасибо за ответ.

nanoCAD копирует файл userdata.cfg только один раз или он периодически это делает (к примеру раз в сутки, неделю и т.д.)?

Вопрос к разработчикам: могу ли я добавлять новые bmp для кнопок в файл newbtns.dll или лучше делать свои dll?

1. Копирование настроек предлагается только при первом запуске свеже установленной версии nanoCAD.

2. Не вносите правки в базовые файлы. При следующем обновлении все ваши правки сотрут. Для добавления своих иконок не обязательно создавать файлы MAPI (.dll). В своем *.cfg вы можете прописать относительный или абсолютный путь к bmp картинке максимальный размер насколько помню 32х32 pix.

[\configman\commands\Checker]
weight=i30 
cmdtype=i1
intername=sStatistic 
BitmapDll=sC:\ProgramData\Config_files\Icons\Statistic.bmp 
DispName=sСбор данных о внешних элементах DWG
StatusText=sмодуль для создания файла .info в котором прописываются основные данные по внешним ссылкам, прокси и словарям.

Если вам удобней работать с одним ресурсным файлом, то можно указывать путь к dll и имя иконки.

iconname=sGRIDSETUP_DARK
BitmapDll=sC:\ProgramData\Config_files\Icons\Newbtns.dll  

 

Edited by Narumarus
Опечатка
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...