В крупных организациях подготовка и настройка рабочих мест проектировщиков зачастую бывает затруднительной и рутинной. Казалось бы, для решения такой тривиальной задачи, как установка САПР, не нужно тратить много ресурсов — достаточно распространить дистрибутив через доменные политики или просто «расшарить» папку с готовым дистрибутивом. А что если в организации существуют собственные стандарты оформления при выпуске документации или есть свои наработки в виде готовых блоков или команд? В таком случае перед нами возникает еще одна задача — настроить рабочие места пользователей, а делать это с каждым местом в отдельности крайне нерационально. Распространять уже настроенный дистрибутив, на наш взгляд, является единственным правильным решением. Где же хранит свои настройки nanoCAD? Как правильно создать свой дистрибутив? Эти и некоторые другие вопросы мы разберем подробнее.

Подготовка дистрибутива

Скачиваем необходимый дистрибутив продукта с сайта www.nanocad.ru/products. В качестве примера мы будем работать с дистрибутивом nanoCAD Plus 6 NC60Px32_2434.exe.

С помощью 7-zip распаковываем скачанный exe-файл в произвольную папку (в нашем случае — nanoInstall). После распаковки получаем набор файлов, показанный на рис. 1.

Набор файлов дистрибутива
Набор файлов дистрибутива

Дело в том, что nanoCAD хранит настройки в нескольких файлах, а они расположены в разных директориях. Для правильного развертывания дистрибутива нам необходимо создать в nanoInstall папку LocalEx, где следует создать подкаталоги, приведенные на рис. 2.

Подкаталоги
Подкаталоги

После создания дерева папок в nanoInstall необходимо найти и подготовить файлы конфигурации (Settings.xml, AppOptions.xm, CAD.cfg, nCAD.ini и др.). Мы можем найти их в архиве nanoCAD.cab в папке с распакованным дистрибутивом либо в директориях, которые создал nanoCAD, если вы его уже установили.

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

Подробнее о файлах конфигураций

Существует несколько файлов конфигураций: одни отвечают за интерфейс программы, другие — за элементы оформления, третьи — за общие настройки платформы. Ниже будут представлены все файлы в отдельности. Для лучшего понимания введем обозначения для местоположения файлов:

на ПК — место хранения файла, предустановленного nanoCAD на вашем компьютере;
на инсталляционном диске — путь, куда следует поместить измененные файлы конфигураций после завершения настроек.

Settings.xml

на ПК — C:\ProgramData\Nanosoft\nanoCAD Plus 6.0\DataRO\ru-RU;
на инсталляционном диске — nanoInstall\LocalEx\CommonAppData\DataRO\ru-RU.

В этом файле находятся настройки конфигурации программы (добавление/ограничение списка масштабов, предопределенных полей основной надписи формата). Список масштабов оформления, который можно настроить в этом файле, показан на рис. 3.

Чтобы добавить в nanoCAD значение нового масштаба и выбрать масштаб, который будем использовать по умолчанию, нам необходимо найти в Settings.xml и отредактировать уже существующий список масштабов. В xml-файле указаны комментарии, подсказывающие нам назначение параметров.

Добавление своего масштаба в список:

<Scale name="200:1" val="200" />

Присваиваем значение по умолчанию масштабу 1:20:

<Scale name="20:1" val="20" default="-1" />

На рис. 3 сопоставлены код списка масштабов и соответствующий список масштабов в окне nanoCAD.

<dscales unit="mm" unit_loc="мм" multiplier = "1">
	<Scale name="200:1" val="200" />
	<Scale name="100:1" val="100" />
	<Scale name="50:1" val="50" />
	<Scale name="40:1" val="40" />
	<Scale name="20:1" val="20" default="-1" />
	<Scale name="10:1" val="10" />
	<Scale name="5:1" val="5" />
	<Scale name="4:1" val="4" />
	<Scale name="2.5:1" val="2.5" />
	<Scale name="2:1" val="2" />
	<Scale name="1:1" val="1" />
	<Scale name="1:2" val="0.5" />
	<Scale name="1:2.5" val="0.4" />
	<Scale name="1:4" val="0.25" />
	<Scale name="1:5" val="0.2" />
	<Scale name="1:10" val="0.1" />
	<Scale name="1:15" />
	<Scale name="1:20" val="0.05" />
	<Scale name="1:25" val="0.04" />
	<Scale name="1:40" val="0.025" />
	<Scale name="1:50" val="0.02" />
	<Scale name="1:75" />
	<Scale name="1:100" val="0.01" />
	<Scale name="1:200" val="0.005" />
	<Scale name="1:400" val="0.0025" />
	<Scale name="1:500" val="0.002" />
	<Scale name="1:800" val="0.00125" />
	<Scale name="1:1000" val="0.001" />
</dscales>
Код нового списка масштабов и настроенный список масштабов
Код нового списка масштабов и настроенный список масштабов

AppOptions.xml

на ПК — C:\Users\User\AppData\Roaming\Nanosoft\nanoCAD Plus 6.0\ru-RU;
на инсталляционном диске — nanoInstall\LocalEx\AppData\UserTemplates\ru-RU.

В этом файле хранятся настройки оформления (меню Сервис -> Настройка оформления). Здесь можно настроить типы линий, размеры, выноски, формы и т.д. В качестве примера установим настройки универсальной выноски в профиле СПДС, аналогичные представленным в рис. 4. Здесь мы изменили цвет и толщину линии.

Окно настройки универсальной выноски
Окно настройки универсальной выноски

Для изменения выноски через файл AppOptions.xml найдем в нем нужную нам строку Универсальная выноска.

Изменим параметры цвета и толщину линии, аналогично показанному на рис. 4. После окончания редактирования видим следующее:

<section sid="6002" name="Универсальная выноска" icon="102" slide="5">
	<param id="6050" name="Слой" ctrl="combobox_layer" doc="1" value="СИМВОЛЫ"/>
	<param id="6259" name="Цвет" ctrl="combobox_color" doc="1" value="RGB(100,149,237)"/>
	<param id="6260" name="Толщина линии" ctrl="combobox_lineweight" doc="1" value="0.3"/>
	<param id="6256" name="Текстовый стиль" ctrl="combobox_textstyle" doc="1" value="ГОСТ 2.304"/>
	<param id="6051" name="Цвет текста" ctrl="combobox_color" doc="1" value="RGB(255,255,255)"/>
	<param id="6056" name="Высота текста" ctrl="combobox_edit_textheight" symbol="в" slide="48" doc="1" value="2.5"/>
	<param id="6243" name="Высота текста обозначения" ctrl="combobox_edit_textheight" symbol="в" slide="48" doc="1" value="7.0"/>
	<param id="6057" name="Отступ текста по горизонтали от края линии" ctrl="edit_double" symbol="г" slide="48" doc="1" value="1.5"/>
	<param id="6058" name="Отступ текста по вертикали от линии" ctrl="edit_double" symbol="д" slide="48" doc="1" value="1.0"/>
	<param id="6052" name="Размер стрелки" ctrl="edit_double" symbol="а" slide="47" doc="1" value="3.0"/>
	<param id="6053" name="Размер открытой стрелки" ctrl="edit_double" symbol="а" slide="47" doc="1" value="3.0"/>
	<param id="6054" name="Размер полустрелки" ctrl="edit_double" symbol="а" slide="47" doc="1" value="3.0"/>
	<param id="6055" name="Размер точки" ctrl="edit_double" symbol="б" slide="47" doc="1" value="1.5"/>
	<param id="6257" name="Размер засечки" ctrl="edit_double" doc="1" value="3.0"/>
	<param id="6258" name="Толщина засечки" ctrl="edit_double" doc="1" value="0.3"/>
	<param id="6297" name="Вес текста" ctrl="combobox_lineweight" doc="1" hidden="0" value="ByObject"/>
</section>

Теперь универсальная выноска по умолчанию будет такой, как показано на рис. 5.

Настроенная универсальная выноска
Настроенная универсальная выноска

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

myblocks.nsf

на ПК — C:\Program Files (x86)\Nanosoft\nanoCAD Plus 6.0;
на инсталляционном диске — nanoInstall\LocalEx\Program.

В прошлой статье мы создали свои команды, которые позволяли вставлять два готовых блока. Теперь мы можем добавить эти команды в наш дистрибутив. Для этого нужно поместить nfs-файл в нужную директорию инсталлятора.

nCAD.cfg и userdata.cfg

на ПК — C:\Program Files (x86)\Nanosoft\nanoCAD Plus 6.0;
на инсталляционном диске — nanoInstall\LocalEx\Program.

В данном файле хранятся настройки интерфейса платформы. После создания nsf-файла его необходимо подгружать в программу. Ранее мы применяли для этого пункт Загрузка приложений (Сервис -> Приложения -> Загрузка приложения -> Автозагрузка). Теперь же воспользуемся cfg-файлом: добавим в него следующие строки, которые и будут осуществлять загрузку файла с нашими командами вставки блоков:

[\configman\commands\sload_myblocks_nsf]
weight=i30   |cmdtype=i0 | intername=sload_myblocks_nsf
RealCommandName=snsf
Keyword=smyblocks.nsf^MCloseDocument^MNewDocument^M

В качестве еще одного примера адаптации интерфейса рассмотрим изменение стандартного контекстного меню мыши (рис. 6а). Для начала найдем в nCAD Cfg-строки, содержащие в префиксе ViewPopupMenu.

Выглядят они следующим образом:

[\ViewPopupMenu]                      |Intername=sViewPopupMenu
[\ViewPopupMenu\LastCommand]          |intername=sLastCommand1
[\ViewPopupMenu\LastCommandPopup]     |name=s&Last commands
[\ViewPopupMenu\LastCommandPopup\LC0] |intername=sLastCommand1
...
[\ViewPopupMenu\Inspector]            |name=sP&roperties             |intername=sProperties
[\ViewPopupMenu\DrawingExplorer]      |name=sDrawing &Explorer       |intername=sDrawingExplorer
Стандартное правокнопочное меню
Стандартное правокнопочное меню

Стандартное меню показалось нам слишком большим, и мы внесли в него некоторые изменения, а именно убрали некоторые команды, другие сгруппировали в выпадающие пункты и добавили несколько новых команд.

В итоге у нас получилось следующее:

[\ViewPopupMenu]                              |Intername=sViewPopupMenu
[\ViewPopupMenu\LastCommand]                  |intername=sLastCommand1
[\ViewPopupMenu\LastCommandPopup]             |name=s&Last commands
[\ViewPopupMenu\LastCommandPopup\LC0]         |intername=sLastCommand1
[\ViewPopupMenu\LastCommandPopup\LC1]         |intername=sLastCommand2
[\ViewPopupMenu\LastCommandPopup\LC2]         |intername=sLastCommand3
[\ViewPopupMenu\LastCommandPopup\LC3]         |intername=sLastCommand4
[\ViewPopupMenu\LastCommandPopup\LC4]         |intername=sLastCommand5
[\ViewPopupMenu\LastCommandPopup\LC5]         |intername=sLastCommand6
[\ViewPopupMenu\LastCommandPopup\LC6]         |intername=sLastCommand7
[\ViewPopupMenu\LastCommandPopup\LC7]         |intername=sLastCommand8
[\ViewPopupMenu\LastCommandPopup\LC8]         |intername=sLastCommand9
[\ViewPopupMenu\sep2]
[\ViewPopupMenu\Undo]                         |name=s&Undo                           |intername=sEditUndo
[\ViewPopupMenu\Redo]                         |name=s&Redo                           |intername=sEditRedo
[\ViewPopupMenu\sep3]
[\ViewPopupMenu\Move]                         |name=sMove object
[\ViewPopupMenu\Move\erase]                   |name=sErase                           |intername=sDelete
[\ViewPopupMenu\Move\MoveCopy]                |Name=sCop&y                           |InterName=sMoveCopy
[\ViewPopupMenu\Move\Mirror]                  |Name=sMirror                          |InterName=sMirror
[\ViewPopupMenu\Move\Offset]                  |name=sOffset                          |intername=svcOffsetCmd
[\ViewPopupMenu\Move\Array]                   |Name=sArray                           |InterName=sArray
[\ViewPopupMenu\Move\sep4]
[\ViewPopupMenu\Move\MoveObject]              |Name=sMov&e                           |InterName=sMove
[\ViewPopupMenu\Move\RotateObject]            |Name=s&Rotate                         |InterName=sRotate
[\ViewPopupMenu\Move\sep10]
[\ViewPopupMenu\Move\scale]                   |Name=s&Scale                          |InterName=sScale
[\ViewPopupMenu\Move\stretch]                 |name=sStretch                         |intername=sstretch
[\ViewPopupMenu\Move\sep5]
[\ViewPopupMenu\Move\Trim]                    |name=s&Trim Vectors                   |intername=svcTrimByEdgeCmd
[\ViewPopupMenu\Move\smarttrim]               |name=sSmart &Trim                     |intername=ssmarttrim
[\ViewPopupMenu\Move\Extend]                  |name=s&Extend Vectors                 |intername=svcExpandByEdgeCmd
[\ViewPopupMenu\Move\Break]                   |name=s&Break Vectors                  |intername=svcBreakCmd
[\ViewPopupMenu\Move\Join]                    |name=s&Join objects                   |intername=sJoin
[\ViewPopupMenu\Move\Extend]                  |name=s&Extend Vectors                 |intername=svcExpandByEdgeCmd
[\ViewPopupMenu\Move\Break]                   |name=s&Break Vectors                  |intername=svcBreakCmd
[\ViewPopupMenu\Move\Join]                    |name=s&Join objects                   |intername=sJoin
[\ViewPopupMenu\Clipboard]                    |name=sБуфер обмена
[\ViewPopupMenu\Clipboard\Cut]                |Name=s&Cut   |InterName=sCut
[\ViewPopupMenu\Clipboard\Copy]               |Name=s&Copy   |InterName=sCopy
[\ViewPopupMenu\Clipboard\CopyWithBasePoint]  |Name=s&Copy With Base Point           |InterName=sCopyWithBasePoint
[\ViewPopupMenu\Clipboard\Paste]              |Name=s&Paste                          |InterName=sPaste
[\ViewPopupMenu\Clipboard\PasteBlock]         |Name=s&Paste as Block                 |InterName=sPasteBlock
[\ViewPopupMenu\Clipboard\PasteOriginal]      |Name=sPaste to Original Coor&dinates  |InterName=sPasteOrigin
[\ViewPopupMenu\Isolate]                      |name=sIsolate                                                
[\ViewPopupMenu\Isolate\IsolateObjects]       |name=sIsolate &Objects                |InterName=sIsolateObjects
[\ViewPopupMenu\Isolate\HideObjects]          |name=sHide Objects                    |InterName=sHideObjects
[\ViewPopupMenu\Isolate\UnisolateObjects]     |name=sUnisolate Objects               |InterName=sUnisolateObjects
[\ViewPopupMenu\DisplayOrder]                 |name=sDispla&y Order
[\ViewPopupMenu\DisplayOrder\BringToFront]    |name=s&Bring to Front                 |InterName=sdraworder1
[\ViewPopupMenu\DisplayOrder\SendToBack]      |name=s&Send to Back                   |InterName=sdraworder2
[\ViewPopupMenu\DisplayOrder\BringForward]    |name=sBring &Forward                  |InterName=sdraworder3
[\ViewPopupMenu\DisplayOrder\SendBackward]    |name=sSend Back&ward                  |InterName=sdraworder4
[\ViewPopupMenu\Select]                       |name=sSelect  
[\ViewPopupMenu\Select\selectsimilar]         |name=sSelect similar objects          |intername=sselectsimilar
[\ViewPopupMenu\Select\SelectAll]             |name=sSelect Al&l                     |intername=sSelectAll
[\ViewPopupMenu\Select\QuickSelect]           |name=s&Quick Select                   |intername=sqs
[\ViewPopupMenu\Select\UnSelectAll]           |name=sUnSelect All                    |intername=sUnSelectAll
[\ViewPopupMenu\sep1] 
[\ViewPopupMenu\AddSelected]                  |Name=sAdd Selected                    |InterName=sAddSelected
[\ViewPopupMenu\sep5] 
[\ViewPopupMenu\Find]                         |name=sSearch and Replace...           |intername=sfind
[\ViewPopupMenu\sep4]
[\ViewPopupMenu\Inspector]                    |name=sP&roperties                     |intername=sProperties
[\ViewPopupMenu\preferences]                  |name=sPreferences                     |intername=sPreferencesCmd

Настройки нового контекстного меню можно оставить в ncad.cfg, просто сохранив изменения. В примере мы перенесли их в userdata.cfg для простоты поиска и редактирования. Хотим напомнить, что сохранять cfg-файлы следует с кодировкой ANSI. На рисунке 6б вы можете видеть результат изменений.

Новое правокнопочное меню
Новое правокнопочное меню

nCAD.ini и userdata.ini

на ПК — C:\Program Files (x86)\Nanosoft\nanoCAD Plus 6.0;
на инсталляционном диске — nanoInstall\LocalEx\Program.

В данном файле содержится весь функционал директории платформы Сервис -> Настройки.

Для дальнейшей корректной работы наших новых команд, расположенных в nsf-файле, нам необходимо добавить в userdata.ini строки для загрузки файла при запуске программы.

[\DefProf\Startup\edit_userdata_ini]
[\DefProf\Startup\load_myblocks_nsf]

В качестве другого примера использования этого файла мы добавим в платформу nanoCAD новые стандартные папки и шаблон, который будет использоваться по умолчанию — test.dwt. Шаблон по умолчанию будет находиться на сервере ServerTemplatestest.dwt.

Создаем текстовый файл с именем userdata.ini и копируем код, представленный ниже (эти параметры вы можете найти и отредактировать непосредственно в nCAD.ini):

[\DefProf\StdDirs]
TemplatesDir=s%AppData%\Templates;\\ServerTemplates
Shx=ss%CommonAppData%\shx;\\Server\shx
PlotConfigsDir=s%AppData%\PlotConfigs;\\Server\PlotConfigs
PlotStylesDir=s%AppData%\PlotStyles;\\Server\PlotStyles
Pat=s%CommonAppData%\shx;\\Server\shx

[\DefProf\TemplateDoc]
UseTemplateFile=i1
TemplateName=sTest.dwt

[\DefProf\TemplateImport]
UseTemplateFile=i1
TemplateName=sTest.dwt

[\DefProf\StdDirs] - в этом разделе указаны параметры стандартных папок. [\DefProf\TemplateDoc] и [\DefProf\TemplateImport] - это параметры использования шаблонов для новых и импортированных документов соответственно. На рис. 7 вы можете увидеть результаты произведенных изменений.

Стандартные папки и использование шаблонов
Стандартные папки и использование шаблонов

Перенос файлов настроек

После окончания редактирования все вышеперечисленные файлы необходимо поместить в соответствующие директории инсталлятора (nanoinstall). Если вы используете дополнительные файлы (скрипты, lisp и т.д.), их можно поместить в папку Program (nanoInstallLocalExProgram), и они установятся в Program Files в папку продукта.

Выбор сервера лицензий

Перейдем к файлу setup.ini. Он расположен в папке и распаковывается инсталлятором (nanoinstall). В нем можно указать дополнительные параметры установки. Если у вас установлен сервер лицензий, то его адрес вы можете предварительно указать в setup.ini:

[InstallProperties]
FLEXLM_VENDOR_NAME=NANOSOFT
FLEXLM_LICENSE_FILE=@Адрес сервера лицензии

Тихая установка

Чтобы не заполнять множество полей при установке программы, что отнимает много времени и сил, можно воспользоваться следующим приемом: с помощью блокнота необходимо создать новый текстовый файл с расширением .bat в папке nanoInstall (рис. 8) и указать один из двух параметров установки:

  1. Для установки в пассивном режиме (отображение диалога хода установки без участия пользователя) нужно запускать setup.exe i /passive;
  2. Для установки в скрытом режиме (для пользователя не будет отображаться даже диалог установки) следует запускать setup.exe /i /quiet.
Создание bat-файла для запуска инсталлятора
Создание bat-файла для запуска инсталлятора

Настроенный дистрибутив вы можете скачать по адресу drive.google.com/file/d/0B0wwPTv-qBOaeFMteG5LQ1RES0E/view?pli=1. Напомним: чтобы заработали команды вставки блоков, положите папку myblocks в директорию, которую указали в myblocks.nsf.

Заключение

Итак, мы показали, как можно адаптировать nanoCAD под свои настройки, сохранить это в своих файлах и включить их в свой инсталляционный пакет, что очень удобно для разворачивания nanoCAD на большом количестве рабочих мест в рамках сети предприятия. Вы не просто упростите себе жизнь, но и сможете контролировать единые настройки САПР на всех рабочих местах, что позволит всем пользователям работать с шаблонами, с едиными шрифтами, настройками оформления и т.п. Кроме того, вы сможете положить свои скрипты и команды на каждое рабочее место пользователя.

Для установки nanoCAD на рабочих местах можно либо выложить свой инсталлятор в общую папку и запускать install.bat на рабочих местах пользователей, либо воспользоваться доменными политиками и устанавливать продукт по сети в автоматическом режиме.

Остается отметить, что эта статья будет полезна не только для установки платформы nanoCAD — она применима и к вертикальным решениям на базе nanoCAD. Удачного проектирования!