Warning
Этот текст не претендует на полную полноту и абсолютную абсолютность.
Информация собрана из разных источников, как правило противоречащих друг другу.
Несмотря на это, статья написана
При появлении новых источников информации чуть менее чем совсем отрицающих предыдущий опыт
Текст будет переработан.
Но не точно
Рассмотрим на примере регистрации команды:
[\configman\commands\drz_block_home_link]
weight=i10
cmdtype=i0
InterName=sdrz_block_home_link
DispName=sО программе
StatusText=sДомашняя страница blockFix
ToolTipText=sДомашняя страница программы
LocalName=sОбсуждение_PlotSPDS
RealCommandName=sshell_exec
Keyword=sopen,https://doctorraz.blogspot.com/2022/10/PlotSPDS.NET.html
BitmapDll=snewbtns.dll
Icon=sAbout
Note
буковки после знака равно (в значении параметра)
ни что иное как Венгерская нотация 😎i
- integer, числоs
- string, строкаf
- bool, булево, встречается в назначении видимости (панелей, контролов, вкладок или групп ленты и т.п.)
Note
ниже по тексту: по умолчанию , относится только к утилите MenuFilesGen (fork)
В ленту (ribbon) можно подключить только те кнопки, которые описаны в разделе [\configman\commands].
Привязка кнопок к ленте осуществляется через параметрMenuMacroID
, который указывается в файле с расширением .cui.
Значение параметраMenuMacroID
в файле .cui должно соответствовать имени команды в файле меню (.cfg).
Например:Если
[\configman\commands\DRZ_BLOCK_HOME_LINK]
тогдаMenuMacroID="DRZ_BLOCK_HOME_LINK"
.
по умолчанию 10 (не знаю на , что влияет, надо будет у разработки поинтересоваться 💌
по умолчанию 1
- 0 - контекст приложения
- 1- контекст документа
Может быть внутренним именем команды или определенным в dll, nrx, lsp
Important
InterName
не обязательно команда загруженная из dll, nrx, lsp и т.п.
к пунктам меню, панелям команды, привязываются по значению параметра InterName
,
в примере выше значение параметра InterName
- внутренняя команда создается/регистрируется в момент загрузки файла конфигурации
т.е. если не загрузить *.cfg команда будет недоступна для вызова
по InterName
команду можно вызвать из ком строки.
Если определены параметры RealCommandName и Keyword, значениеInterName
может быть произвольным (см. ниже)
Warning
InterName
- nanoCAD не принимает значение на кириллице!!!
Допустимы символы латинского алфавита и (или) цифры без пробелов
Название может начинаться или состоять из одних цифр
Кириллица в значении параметра приводит к невозможности регистрации в UI, соответственно не будет показываться в меню, панелях на кнопках ленты.
Если команда с символами кириллицы загружена из dll, nrx, lsp... (CommandMethod
), то команду можно вызвать из ком строки, но зарегистрирована она не будет.
Локализованное имя команды прописывается в параметре LocalName
Костылик привязки команды на кириллице описан в Keyword
Отображаемое имя обязательный параметр
; DispName=sDispName ;
Меню Лента [\menu\...
;для меню задан параметр
name=sDispName
Надпись при наведении мышью
; DispName=sDispName StatusText=sStatusText ;
Панель Лента
Надпись при наведении мышью
; DispName=sDispName ToolTipText=sToolTipText ;
Панель Лента
Important
если заданы одновременно StatusText
и ToolTipText
, то в всплывающей подсказке DispName
показан не будет \
;
DispName=sDispName
StatusText=sStatusText
ToolTipText=sToolTipText
;

в значении параметра задается имя ресурсной dll
или имя иконки с расширением *.BMP, *.ICO
подробнее о BitmapDll
в значении параметра задается имя иконки в ресурсной dll. подробнее о Icon
Note
Icon
- используется только если задано значение для BitmapDll
(*.dll)
Фактически это второе необязательное название команды (alias)
произвольное уникальное значение в любой раскладке, буквы и (или) цифры без пробелов
Warning
при использовании RealCommandName и (или) Keyword
InterName это не реальная команда!!!
Это произвольное уникальное значение латинскими буквами и (или) цифрами без пробелов
В этом случае задавать для InterName реальную команду нельзя, nanoCAD'у может сильно поплохеть 💀
в любой раскладке, допустимы цифры
всегда применяется совместно с Keyword
InterName произвольное уникальное значение латинскими буквами и (или) цифрами без пробелов;откроет URL в браузере InterName=sdrz_block_home_link LocalName=sОбсуждение_PlotSPDS RealCommandName=sshell_exec Keyword=sopen,https://doctorraz.blogspot.com/2022/10/PlotSPDS.NET.html ;
в любой раскладке, допустимы цифры
Применяется:
- Как параметр команды, в этом случае используется совместно с RealCommandName
примеры и не спрашивайте меня что они делают и как это работает)
[\configman\commands\UCSX] weight=z40,30 cmdtype=i1 intername=sUCSX RealCommandName=sUCS Keyword=sX DispName=sX StatusText=sПоворот пользовательской системы координат вокруг оси X BitmapDll=snewbtns.dll LocalName=sПскx[\configman\commands\1111] weight=i10 cmdtype=i1 intername=s1111 DispName=sDispName StatusText=sStatusText ToolTipText=sToolTipText RealCommandName=sshell_exec LocalName=s`00000000 Keyword=s"open,regedit" BitmapDll=sic\power.ico[\configman\commands\nanocad_forum_link] weight=i30 cmdtype=i0 intername=snanocad_forum_link RealCommandName=sshell_exec Keyword=s"open,http://forum.nanocad.ru/" DispName=sФорум поддержки nanoCAD BitmapDll=snewbtns.dll LocalName=sФорум_поддержки[\configman\commands\DIR] weight=i10 cmdtype=i0 intername=sDIR RealCommandName=sshell_exec_param Keyword=s*>params^Mcmd.exe,/K dir,DIR,1^M[\configman\commands\DEL] weight=i10 cmdtype=i0 intername=sDEL RealCommandName=sshell_exec_param Keyword=s*>params^Mcmd.exe,/K del,DEL,1^M[\configman\commands\TYPE] weight=i10 cmdtype=i0 intername=sTYPE RealCommandName=sshell_exec_param Keyword=s*>params^Mcmd.exe,/K type,TYPE,1^M[\configman\commands\SH] weight=i10 cmdtype=i0 intername=sSH RealCommandName=sshell_exec_param Keyword=s*>params^M,,Команда ОС,1^M
- Как параметр командной строки, (RealCommandName не используется)
В этом случае:
- может принимать значение реальной команды ( dll, nrx, lsp)
- макрокоманда
- lisp выражение (не проверял но уверен может, это же просто ком строка)))
- еще что то умеет 100% уверен)))
пример
[\configman\commands\Isorectangle] weight=i30 cmdtype=i1 intername=sIsorectangle Keyword=s$M=$(if,$(eq,$(getvar,SNAPSTYL),0),^C^CSNAPSTYL 1 rectangle i,^C^Crectangle i) BitmapDll=snewbtns.dll StatusText=sВключение режима изометрического проектирования и построение прямоугольника в текущей плоскости изометрии DispName=sИзопрямоугольник LocalName=sИзопрямоугольники даже такая красота)))
[\configman\commands\CADLibPublish] weight=i10 cmdtype=i1 intername=sCADLibPublish BitmapDll=sCADLibEnabler\CADLibRes.dll Icon=sIDI_ViewerSmallG StatusText=sОпубликовать модель в CADLib ToolTipText=sОпубликовать модель в CADLib DispName=sОпубликовать модель в CADLib Keyword=s(RUN_CADLIBENABLER_COMMAND "CLP_DOC_CHECK_IN")
; Панели [\toolbars] [\toolbars\BlockFix] name=sBlockFix [\toolbars\BlockFix\drz_test] Intername=sdrz_test [\toolbars\BlockFix\drz_test2] Intername=sdrz_test2 [\toolbars\BlockFix\drz_save] Intername=sdrz_save [\toolbars\BlockFix\1111] Intername=s1111
MenuMacroID
идентификатор панели, в данном случае для команды ее показа/скрытияMenuMacroID
- BlockFix
Без него тут не обошлось
SHOWTOOLBAR
- ключевое слово которое вместе сMenuMacroID
образуют команду показа скрытия панелиIntername=sShowToolbar_BlockFix
[\configman\commands\ShowToolbar_BlockFix] weight=i10 cmdtype=i0 Intername=sShowToolbar_BlockFix StatusText=sОтображение панели BlockFix ToolTipText=sОтображение панели BlockFix DispName=sОтображение панели BlockFix LocalName=sПанель_BlockFix BitmapDll=snewbtns.dll Icon=sBEDITcmdtype=i0
в случае вызова панели, контекст приложения, скрыть показать панель можно независимо от наличия открытого документа
любое слово в любой раскладке с цифрами без пробелов
для примераПанель_Имя
на самом деле хоть100500_Вася_пупкин_999
, локализация будет работать
В общем случае
MenuMacroID
может содержать символы в любых раскладках, цифры и даже символы пробела
Все будет работать
В случае сMenuMacroID
для панели это часть команды -InterName
, т.е. из меню команду с пробелами вызвать получится, а из ком строки затруднительно
Конфигурация игнорирует регистр, цифры и раскладку (кроме выше оговоренных случаев)
Комментариев нет :
Отправить комментарий