04 августа, 2025

nanoCAD. Автоматическое создание меню и ленты

Генератор файлов меню и ленты (.cfg & .cuix) для nanoCAD на основе таблицы xls с описанием команд

В nanoCAD имеется штатная Настройка пользовательского интерфейса для добавления своих команд и редактирования классического меню.

  • С простым редактированием меню типа: (Добавить пару тройку команд, перетащить их в новый пункт меню) вполне справляется, проблем нет.
  • собрать свою ленту не может, только руками в блокноте
  • API для программного (на лету) создания меню и ленты в nanoCAD'e то же пока нет.
  • Добавить пару десятков команд в меню штатными средствами или редактировать ленту XML в блокноте, очень долго и неудобно.

Значительно проще все данные внести в таблицу *.xls и в один клик зарегистрировать команды, получить меню и привязанную к нему ленту.

Собственно чем я и озаботился, немного доработав оригинальный MenuFilesGen под себя

Important

Оригинальная статья разработчиков MenuFilesGen 

Последняя версия утилиты
Расширенная справка

Быстрый старт

Tip

Утилита умеет генерировать конфигурации из *.xls напрямую, без промежуточного текстового файла.
Наличие Excel на машине не требуется.

Important

Сохранена возможность генерации конфигов из текстовых файлов *.tsv (файл в кодировке юникод разделитель табуляция)
Добавлена возможность создания конфигов из *.csv (файл в кодировке ANSI, разделитель, точка с запятой.
Тип файла определяется по расширению:

  • *.xls, *.xlsm - Excel;
  • *.csv - ANSI, разделитель, точка с запятой;
  • остальные расширения программа будет пытаться читать как: юникод, разделитель табуляция

  1. В шаблоне заполняем обязательные поля В всплывающих подсказках написано, какой столбец, для чего предназначен
image

Warning

InterName - допускаются только символы латиницы, без пробелов!!!.
nanoCAD не понимает команды на кириллице
Команда в которой есть символы кириллицы не зарегистрируется!!!
если требуется локализованное имя команды, то оно задается в столбце LocalName см . дополнительные поля

  1. Сохраняем *.xls файл
  2. Запускаем генератор меню
  3. Указываем имя файла *.xls
  4. В ком строке вводим номер листа
  5. Рядом с файлом *.xls появятся:
  • файл конфигурации *.cfg (классическое меню, панельки, команды)
  • файл ленты Ribbon *.cuix

Имена файлов конфигурации формируются:

  • для текстовых файлов: имя файлов конфигураций *.cfg*.cuix = имя файла шаблона
  • для *.xls название листа = имя файлов конфигураций
    Заполненные обязательные поля достаточны для формирования корректного меню, панелей и ленты.

Поля шаблона

Обязательные поля

Important

Описание обязательных полей шаблона

ПараметрПримерОписаниеКомментарий
InterName-drz-block-Linetype-ByBlockИмя выполняемой команды
Может быть внутренним именем команды, как оно определено в dll, nrx, lsp
DispNameТип линий по блокуИмя команды, как оно будет показываться в меню
PanelNameСвойства примитивовИмя панели
подменю
группы ленты
image
RibbonSizeLargeWithText
Варианты:
None
SmallWithText
LargeWithText
SmallWithoutText
LargeWithoutText
Размер кнопки на ленте.
None - кнопки не будет
image

Дополнительные поля

Tip

Описание необязательных полей шаблона

ПараметрПримерОписаниеКомментарий
RibbonSplitButtonNameПорядокНазвание сплитера ленты, если пусто иконки не будут прятаться под сплитерimage
ResourceDllNamenewbtns.dll
constr-50.ico
test.bmp
Если установлен IconName то имя ресурсной dll
иначе - название иконки
если ResourceDllName и IconName пусто, то по умолчанию пропишется иконка
icons\cmd_intername.ico
IconNameBEDITНазвание иконки, из ресурсной dll, только если в ResourceDllName имя библиотеки, иначе ничего
AppNameAppПриложение, может быть пустым, иначе верхний уровень меню называется по имени
-*.xls вкладки Excel
- *.csv, *.tsv, *.txt по имени файла
image
AddonNameAddonАддон, может быть пустым, иначе подменю под главным менюimage
LocalNameблок_почиститьЛокализованное имя команды
RealCommandNameshell_execРеальное имя команды
Keywordopen,https://doctorraz.blogspot.comКлючевое слово
weightчислоВес команды, по умолчанию 10
cmdtype1
0
Контекст выполнения команды, по умолчанию (1)
1-контекст документа
0-контекст приложения
StatusTextТип линий примитивов по слоюОписание команды, показываемое в качестве всплывающей подсказки
ToolTipTextтекстВсплывающая подсказка
AcceleratorsAlt+QГорячие клавишиimage
DontTakeИСКЛЮЧИТЬ
ДОБАВИТЬ
Не регистрировать команду, эта строка будет пропущена если значение ИСКЛЮЧИТЬ
HideCommandИСКЛЮЧИТЬ
ДОБАВИТЬ
Команду зарегистрировать, но не показывать в интерфейсе, если ИСКЛЮЧИТЬ
IsVirtualPanelИСКЛЮЧИТЬВиртуальная панель
Флаг указывает, что команда должна быть в меню на одном уровне со своей панелью
image

Подробнее про параметры конфигурации меню можно почитать тут

Комментариев нет :

Отправить комментарий