Skip to content

2. User Guide

doctorRaz edited this page Aug 1, 2025 · 47 revisions

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

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
RibbonSize LargeWithText
Варианты:
None
SmallWithText
LargeWithText
SmallWithoutText
LargeWithoutText
Размер кнопки на ленте.
None - кнопки не будет
image

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

Tip

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

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

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

Как загрузить свое меню и ленту в nanoCAD

Способы загрузки

1. Через настройки пользовательского интерфейса.

Самый очевидный и простой способ загрузки меню в нанокад

image image

Warning

В nanoCAD есть древняя бага, при подключении частичного файла меню
nanoCAD скопирует файл *.cfg в каталог %AppData%\Roaming\Nanosoft\nanoCAD x64 ХХ.х\config\ а файл *.cuix ленты нет, соответственно лента не будет подгружена.
Все же разбрасывать по всему диску фалы конфигов, настройки ленты и сами аддоны не есть хорошо (

2. Ручная правка nanoCAD.cfg

Дописать в файл настроек %AppData%\Roaming\Nanosoft\nanoCAD x64 ХХ\config\nanoCAD.cfg путь к файлу конфигурации:
#include "d:\@Developers\Programmers\!NET\!bundle\BlockFix.bundle\Resources\BlockFix.cfg"

3. Автозагрузка из *.cfg nanoCAD

image image

Important

nanoCAD не умеет напрямую из автозагрузки грузить файлы *.cfg, поэтому нужен промежуточный файл .package (в кодировке UTF8), в котором в секции ConfigEntry прописываем пути к файлам меню (*.cfg ), в секции ComponentEntry пути к загружаемым приложениям:

<?xml version="1.0" encoding="utf-8" ?>
<ApplicationPackage xmlns="hostApplicationPackage/v01"
                    Name="drzTools">
	<Components>
		<ComponentEntry AppName="BlockFix"
		                ModuleName="/BlockFix.bundle/BlockFix.NCad.dll"
		                ModuleType="MGD"/>

		<ConfigEntry FileName="/BlockFix.bundle/Resources/BlockFix.cfg"
		             FileType="CFG"/>
	</Components>
</ApplicationPackage>

Tip

Для загрузки способами 1-3 достаточно прав обычного пользователя, повышение прав не требуется.

4. Через nApp.cfg или userdata.cfg

Создать файл nApp.cfg или userdata.cfg (в кодировке UTF8 BOM) и прописать в него пути к файлам конфигураций:

#include "d:\@Developers\Programmers\!NET\!bundle\BlockFix.bundle\Resources\BlockFix.cfg"

nApp.cfg или userdata.cfg можно скопировать в любой из каталогов:

  • %ProgramFiles%\Nanosoft\nanoCAD x64 ХХ.х\
  • %AppData%\Roaming\Nanosoft\nanoCAD x64 ХХ.х\Config\
  • %ProgramData%\Nanosoft\nanoCAD x64 ХХ.х\Config\

Warning

Для записи и изменения в каталоге:

  • %AppData% повышение прав не требуется
  • %ProgramData%\Nanosoft\nanoCAD x64 ХХ.х у пользователя есть права только на запись, на изменение нет, это значит, что скопировать файл в этот каталог пользователь сможет, но ни удалить не изменить без повышения прав нет. (хз отчего так сделано)
  • %ProgramFiles%\Nanosoft\nanoCAD x64 ХХ.х нужно повышение прав.

5. Автозагрузка из реестра

image

В разделе HKEY_LOCAL_MACHINE\SOFTWARE\Nanosoft\nanoCAD x64\ХХ.х добавляем подраздел Applications в этом подразделе еще один подраздел с названием нашего приложения BlockFixNC в этом подразделе создаем строковый параметр имя Package, значение полный путь до нашего пакета d:\@Developers\Programmers\!NET\!bundle\BlockFixNC.package

в автозагрузке это будет выглядеть так:

image

Warning

для записи в секцию HKEY_LOCAL_MACHINE требуется повышение прав

Очередность загрузки

  1. %ProgramFiles%\Nanosoft\nanoCAD x64 ХХ\nApp.cfg
  2. %AppData%\Roaming\Nanosoft\nanoCAD x64 23.1\Config\nApp.cfg
  3. %ProgramData%\Nanosoft\nanoCAD x64 ХХ\Config\nApp.cfg
  4. %ProgramFiles%\Nanosoft\nanoCAD x64 ХХ\userdata.cfg
  5. %AppData%\Roaming\Nanosoft\nanoCAD x64 23.1\Config\userdata.cfg
  6. %ProgramData%\Nanosoft\nanoCAD x64 ХХ\Config\userdata.cfg
  7. %AppData%\Roaming\Nanosoft\nanoCAD x64 ХХ\config\nanoCAD.cfg
  8. %AppData%\Roaming\Nanosoft\nanoCAD x64 ХХ\config\cfg.cfg (штатная автозагрузка)
  9. HKEY_LOCAL_MACHINE\SOFTWARE\Nanosoft\nanoCAD x64\ХХ.х\Applications\ (из реестра)

Warning

  • nApp.cfg всегда загружаются перед userdata.cfg
  • Если файлы nApp или userdata скопированы в несколько каталогов, то загрузится только первый одноименный найденный файл, в порядке приведенном выше, остальные файлы грузиться не будут!
  • nApp и userdata загружаются независимо друг от друга

Tip

все вышенаписанное про порядок загрузки *.cfg относится и к файлам *.ini
подробнее про загрузку приложений можно почитать у Алексея Кулика Автозагрузка приложений nanoCAD и ее последовательность

Особенности загрузки меню

При загрузке меню через:

  1. nApp, userdata или nanoCAD.cfg, меню будет загружено во все профили (платформа, СПДС, Механика) и возможности отключить загрузку в профиле нет, но nanoCAD умеет загружать меню по условию, т.е. если в конфиге загрузки прописать:
#include condition="ComponentEnabled_nMechComp" "d:\@Developers\В работе\!Текущее\Programmers\!NET\!bundle\PlotSPDS.bundle\Resources\Mech_menu.cfg"
#include condition="ComponentEnabled_nSPDSComp" "d:\@Developers\В работе\!Текущее\Programmers\!NET\!bundle\PlotSPDS.bundle\Resources\SPDS_menu.cfg"

то первое меню будет загружаться только в профиль Механика, второе в профиль СПДС. допустимы ключевые слова, or not возможно какие то еще...:

#include condition="ComponentEnabled_MODELER3D or ComponentEnabled_MODELER3D_C3D" "nmenu3D.cfg"
#include condition="not ComponentEnabled_RasterTools"                             "RasterTools.cfg"
  1. HKEY_LOCAL_MACHINE\SOFTWARE\Nanosoft\nanoCAD x64\ХХ.х\Applications\ (из реестра) меню будет загружаться во все профили, но в автозагрузке (из под профиля) меню можно отключить
image
  1. Штатная автозагрузка (%AppData%\Roaming\Nanosoft\nanoCAD x64 ХХ\config\cfg.cfg) загрузит меню только в свой профиль

Tip

Пути к файлам меню (*.cfg) могут быть как абсолютными, так и относительными. Относительный путь отсчитывается от файла в котором прописан путь к конфигу. Регистр символов не важен.