...

четверг, 17 марта 2016 г.

Создание дистрибутива nanoCAD с пользовательскими настройками


В крупных организациях процесс подготовки и настройки рабочих мест проектировщиков зачастую бывает затруднительным и рутинным. Казалось бы, для решения такой тривиальной задачи, как установка САПР, не нужно тратить много ресурсов, достаточно лишь распространить дистрибутив через доменные политики или просто «расшарить» папку с готовым дистрибутивом и смело приступать к работе в САПР-системе. Возникает вопрос: «А что если в организации сущетвуют свои стандарты оформления к выпуску документации, если есть собственные наработки в виде готовых блоков или команд? Планируется ли использование общей базы данных (если применяется СПДС, Железобетон или Стройплощадка)?»

В таком случае перед нами возникает еще одна задача – настроить рабочие места пользователей, а делать это с каждым местом в отдельности крайне нерационально. Распространить уже настроенный дистрибутив – единственное правильное решение. Где же хранит свои настройки nanoCAD? Как правильно создать свой дистрибутив? Эти и некоторые другие вопросы мы рассмотрим подробнее. Инструкция предназначена для машин на ОС Windows 7 и выше.

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


Необходимо скачать дистрибутив продукта с сайта nanocad.ru. В нашем примере мы будем работать с дистрибутивом nanoCAD СПДС 6 NC60Px32_2434.exe.
Нужно установить программу, поскольку в дальнейшем мы будем работать с ее файлами. После установки перейдем к .exe-файлу дистрибутива.

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


Рис. 1. Распакованный дистрибутив nanoCAD СПДС 6

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


Рис. 2 Структура папок настраиваемого дистрибутива

После создания необходимой структуры папок в nanoinstall необходимо найти и подготовить файлы конфигурации, которые отвечают за настройки нашего дистрибутива (Settings.xml; AppOptions.xml; CAD.cfg; nCAD.ini и др.).
Они располагаются в соответствующих директориях, о которых пойдет разговор ниже.

Примечание: Мы можем менять настройки на уже установленном nanoCAD, но чтобы они вступили в силу, необходимо сбрасывать настройки интерфейса (рис. 3) либо очищать реестр.


Рис. 3. Окно настроек интерфейса nanoCAD

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


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

Default.ntb

На ПК C:\Users\User\AppData\Roaming\Nanosoft\nanoCAD Plus 6.0\ru-RU
На инсталляционном диске nanoInstall \LocalEx\AppData\UserTemplates\ru-RU
Представляет собой двоичный файл, хранящий в себе данные записной книжки (рис. 4).
Данные настраиваются через интерфейс программы.

Рис. 4. Записная книжка nanoCAD СПДС

tinfo.xml

На ПК C:\Users\User\AppData\Roaming\Nanosoft\nanoCAD Plus 6.0\ru-RU
На инсталляционном диске nanoInstall \LocalEx\AppData\UserTemplates\ru-RU
Представляет собой текстовый файл, хранящий в себе данные списков выбора. Позволяет добавить свои поля в списки выбора. Данные настраиваются через интерфейс программы при вводе нового значения, отличного от значения, приведенного в списке.

std.mcs

На ПК C:\ProgramData\Nanosoft\nanoCAD СПДС 6.0\DataRO\ru-RU
На инсталляционном диске nanoInstall \LocalEx\CommonAppData\DataRO\ru-RU
Представляет собой двоичный файл, хранящий в себе данные объектов. Этот фал можно расположить локально на каждой машине либо на сервере, предварительно установив SQL Server.
Данные настраиваются через интерфейс программы.

Рис. 5. База объектов nanoCAD СПДС

Settings.xml

На ПК C:\ProgramData\Nanosoft\nanoCAD СПДС 6.0\DataRO\ru-RU
На инсталляционном диске nanoInstall \LocalEx\CommonAppData\DataRO\ru-RU
В этом файле находятся настройки конфигурации программы (добавление/ограничение списка масштабов, предопределенных полей основной надписи формата). На рис. 3 изображен список масштабов оформления, который можно настроить в данном файле.

Добавление масштаба оформления в список стандартных масштабов

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

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

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

Присваиваем значение по умолчанию масштабу 1:400:
<Scale name="400:1" val="400" default="-1" />

Рис. 6.1. Код списка масштабов оформления Рис. 6.2. Настроенный список масштабов
После завершения редактирования сохраните изменения в файле и запустите nanoCAD. Вы увидите, как ваши настройки повлияли на список масштабов (рис. 6.2).

Добавление масштаба измерений в список стандартных масштабов

Чтобы добавить nanoCAD значение нестандартного масштаба измерений, надо найти в файле Settings.xml соответствующий код (рис. 7.1) и добавить в существующий список масштабов аналогичные строки со своими параметрами. В xml-файле указаны комментарии о назначении параметров.
Добавление своего масштаба в список:
<Scale name="200:1" val="200" />

На рис. 7.1 сопоставлены код списка масштабов измерений и соответствующий список масштабов в окне nanoCAD.
Рис. 7.1. Код списка масштабов измерений Рис. 7.2. Настроенный список масштабов измерений
После завершения редактирования сохраните изменения в файле и запустите nanoCAD. Вы увидите, как ваши настройки повлияли на список масштабов (рис. 7.2).

AppOptions.xml

На ПК C:\Users\User\AppData\Roaming\Nanosoft\nanoCAD Plus 6.0\ru-RU
На инсталляционном диске nanoInstall \LocalEx\AppData\UserTemplates\ru-RU
В этом файле хранятся настройки оформления (меню Сервис → Настройка оформления). Здесь можно настроить типы линий, размеры, выноски, формы и т.д.
В качестве примера мы изменим настройки позиционной выноски в профиле СПДС, как показано на рис. 8. Мы изменили цвет линий выноски и толщину линии. Переопределенные значения выделяются голубым цветом – это те настройки, которые отличаются от стандартного файла AppOptions.xml.

Рис. 8. Окно настройки позиционной выноски

После завершения настроек их необходимо сохранить в xml-файл. Нажмите меню Файл → Сохранить настройки как. Укажите папку nanoInstall \LocalEx\AppData\UserTemplates\ru-RU\ и нажмите кнопку Сохранить (рис. 9).

Рис. 9. Сохранение файла настроек AppOptions.xml

Myblocks.hsf

На ПК C:\Program Files (x86)\Nanosoft\nanoCAD Plus 6.0
На инсталляционном диске nanoInstall \LocalEx\Program
В прошлой статье мы создали свои команды, которые позволяли вставлять два готовых блока. Теперь мы можем добавить эти команды в наш дистрибутив. Для этого нужно поместить nsf-файл в нужную директорию инсталлятора. Таким образом можно распространить ваши собственные приложения, написанные для среды nanoCAD, среди всех пользователей вместе с дистрибутивом.

ncadbase.cfg и userdata.cfg

На ПК C:\Program Files (x86)\Nanosoft\nanoCAD Plus 6.0
На инсталляционном диске nanoInstall \LocalEx\Program
В этом файле хранятся настройки интерфейса платформы: расположение панелей, пункты меню, контекстное меню мыши и т.д.

Примечание: чтобы увидеть измененные настройки cfg-фалов в программе, вам необходимо очистить реестр nanoCAD СПДС в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Nanosoft\nanoCAD СПДС после сохранения произведенных настроек.

Предзагрузка приложений


Созданный nsf-файл с командами (об этом можно прочитать в прошлой статье) необходимо подгружать в программе при запуске. Ранее для этого мы пользовались пунктом Загрузка приложений (Сервис → Приложения → Загрузка приложения → Автозагрузка). Для предустановки этой опции мы зарегистрируем специальную команду, которая будет загружать nsf-файл.
[\configman\commands\sload_myblocks_nsf]
weight=i30   |cmdtype=i0 | intername=sload_myblocks_nsf
RealCommandName=snsf
Keyword=smyblocks.nsf^MCloseDocument^MNewDocument^M

Изменение контекстного меню

nanoCAD 7 не поддерживает файлы CUI, однако у нас есть доступ ко всем cfg-файлам, отвечающим за настройки интерфейса.
Попробуем изменить стандартное контекстное меню. На рис. 10а представлено стандартное контекстное меню nanoCAD. Перейдем в папку с продуктом C:\Program Files\Nanosoft\nanoCAD СПДС 6.0 в файл ncadbase.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



Рис. 10а. Стандартное правокнопочное меню nanoCAD СПДС

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

Раскрыть код
[\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


После завершения редактирования сохраните файл с кодировкой ANSI. На рис. 10б представлен результат произведенных изменений.

Рис. 10б. Новое правокнопочное меню

Если вы настраиваете контекстное меню на уже установленном nanoCAD, то после сохранения изменений в файле ncadbase.cfg необходимо очистить реестр nanoCAD СПДС в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Nanosoft\nanoCAD СПДС.

nprof.ini (nApp.ini)

На ПК C:\Program Files (x86)\Nanosoft\nanoCAD Plus 6.0
На инсталляционном диске nanoInstall \LocalEx\Program
В этом файле содержатся настройки самой платформы nanoCAD. Чтобы в строках кода было легче ориентироваться, советую зайти в Сервис → Настройки и ознакомиться со структурой и последовательностью параметров.
В нашем примере мы разместим стандартные папки nanoCAD (шаблоны, шрифты, стили печати, формы) в общей папке на сервере и добавим свой шаблон dwt, который будем использовать по умолчанию.
  1. Создаем необходимые каталоги на сервере:
    \\Server\Templates
    \\Server\shx
    \\Server\PlotConfigs
    \\Server\ PlotStyles
  2. Создаем шаблон test.dwt и помещаем его в папку на сервере: \\Server\Templates\test.dwt.
  3. Создаем с помощью блокнота файл nApp.ini и копируем в него необходимые настройки из nprof.ini или из готового примера, приведенного ниже.

[\DefProf\StdDirs]
TemplatesDir=s\\ServerTemplates
Shx=s\\Server\shx
PlotConfigsDir=s\\Server\PlotConfigs
PlotStylesDir=s\\Server\PlotStyles
Pat=s\\Server\shx

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

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

Примечание:
[\DefProf\StdDirs] – в этом разделе указаны параметры стандартных папок.
[\DefProf\TemplateDoc] и [\DefProf\TemplateImport] – это параметры использования шаблонов для новых и импортированных документов соответственно.

На рис. 11 представлен результат изменений файла настроек nrof.ini.

Рис. 11. Стандартные папки и использование шаблонов
Ранее мы зарегистрировали специальную команду для загрузки блоков, теперь в nApp.ini укажем загрузку данной команды при старте nanoCAD.
[\DefProf\Startup\load_myblocks_nsf]
Теперь при запуске nanoCAD наше приложение по вставке блоков будет запускаться вместе с ним.
После сохранения файла nApp.ini скопируйте его в соответствующую директорию дистрибутива. Файл nprof.ini копировать не нужно.

Setup.ini


Перейдем к файлу setup.ini – последнему, который нам необходимо подготовить. Этот файл настроек самого дистрибутива находится в папке с уже распакованным инсталлятором (nanoinstall). В нем можно прописать серийный номер продукта или указать адрес сервера лицензий, а также папку для базы данных СПДС и путь к настройкам СТП. Для настройки инсталляции следует раскомментировать ключи и задать им свои значения. Редактировать нужно только ключи в разделе [InstallProperties]. При расскоментировании параметров не забываем раскоментировать раздел [InstallProperties]. Ниже представлен список доступных параметров.
Сервер лицензий
FLEXLM_VENDOR_NAME=Nanosoft
FLEXLM_LICENSE_FILE=@server

Серийный номер
SERIALNUMBER=ZZZ10-TRIAL-00000

Директория установки
INSTALLLOCATION=c:\Best program

Папка локальной БД
DATABASE_PATH=c:\std.mcs

Путь до БД в сети
DATABASE_PATH=SQL:SERVER:base

Папка хранения локальных настроек
SETTINGS=\\server\Settings.xml

Папка СТП на сервере 
CORP_OPTIONS=\\server\CorpOptions.xml

Название префикса текущего профиля осуществляется путем добавления префикса к названиям слоев. Вручную его можно изменить в настройках оформления: Главные настройки → Общие настройки → Текущий профиль.
APP_OPTIONS_PROFILE=name

Если какой-либо из этих ключей закомментирован, то для него будет установлено значение по умолчанию, сохраненное в приложении.

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


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

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


Такие параметры необходимы, если вы собираетесь производить установку настроенного дистрибутива локально.
С помощью блокнота следует создать новый текстовый файл с расширением .bat в папке nanoInstall (рис. 8) и указать один из двух параметров установки:
  • для установки в пассивном режиме (отображение диалога хода установки, но без участия пользователя) необходимо запускать setup.exe /i /passive
  • для установки в скрытом режиме (для пользователя не будет отображаться даже диалога установки) нужно запускать Setup.exe /i /quiet


Рис. 8. Создание bat-файла для запуска инсталлятора

Заключение


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

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

Сергей Спирин, mahbak
ЗАО Нанософт

Комментарии (0)

Let's block ads! (Why?)

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

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