Комплексные решения в области
САПР, BIM, Документооборота

Россия, Омск,

ул. 8 Марта 8, оф. 9-10

Настройка среды nanoCAD для опытных пользователей

Публикация от: 19 ноября 2014
В этой статье мы решили объединить типовые вопросы и подробно продемонстрировать на несложном примере как пользователь может настроить платформу nanoCAD под себя и сделать ее чуть более функциональной.

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

В качестве примера возьмем задачку по организации библиотеки .dwg-файлов — у каждого пользователя за время работы накапливается достаточно материалов, которые в последующей работе используются как типовые решения: элементы из старых чертежей, базы блоков и т.д. Мы рассмотрим один из возможных вариантов организации своей библиотеки блоков в среде nanoCAD, и параллельно покажем как зарегистрировать произвольную скрипт-функцию в меню и командной строке. По аналогии вы сможете написать более сложные скрипты и автоматизировать работу по другим направлениям (например, по расчетам, по графическим построениям, по связи с базой данных и т.п.).

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

Вступление: подготовка .dwg-файлов

Т.к. в нашем примере мы работаем с отдельными .dwg-файлами, давайте чуть-чуть проговорим как эти блоки лучше подготовить и где хранить. Понятно, что вы можете использовать свой набор блоков, а мы в качестве примера будем использовать два .dwg-файла: «BlueCar.dwg» и «GreenCar.dwg» (можно взять из наших файлов, которые мы приводим в конце статьи).

Графику блока мы вычертили в нулевых координатах, т.к. именно нулевая точка будет базовой (точкой вставки) будущего блока. Поэтому ваш блок лучше начинать вычерчивать с координат x = 0, у = 0. Если блок уже вычерчен, то просто размещаем его так, чтобы в координатах 0, 0 располагалась удобная с вашей точки зрения точка вставки. Смотрите на примере ниже (рис. 1): слева – расположение автомобиля в файле «BlueCar.dwg», справа – блок после вставки с базовой точкой:

Рис. 1. Вставляемые блоки – в идеале их вычертить в нулевых координатах, чтобы была понятна точка вставки блока.

Также мы используем правило: один блок – один .dwg-файл. В этом случае мы сможем создать на каждый блок отдельную команду вставки.

Далее: все блоки собираем в папке «MyBlocks», которую либо сохраняем локально на своем диске (например, мы будем использовать путь C:\MyBlocks\), либо размещаем папку в локальной сети. В последнем случае нашей библиотекой смогут воспользоваться и ваши коллеги (т.е. путь будет что-то типа \\MYSERVER\MyBlocks\).

Ок, теперь мы готовы оборачивать это все кодом.

Создание команд для вставки блоков

Простейший скрипт для вставки блока, написанный на Visual Basic, представлен ниже – нам кажется, что текст скрипта не требует подробных разъяснений. Он просто размещает блок «BlueCar.dwg» в текущий чертеж в бездиалоговом режиме по координатам, указанным пользователем:

Откуда мы это знаем? Это все описано в стандартном SDK (Software Developer Kit) к nanoCAD; приведенные в скрипте команды – это стандартные API-функции САПР, основанных на .dwg (см. рис.2). Там же можно получить примеры скриптов, выполняющие другие интересные задачи в nanoCAD.

Рис. 2. Документация разработчика nanoCAD подробно описывает все необходимые функции для работы со средой nanoCAD посредством языков C++, .NET, Visual Basic Script, Java Script и LISP.

Теперь скрипту по вставке блока надо присвоить имя-команду (чтобы вызывать этот скрипт из командной строки nanoCAD). И сделать это надо для каждого блока: один блок – одна команда. Для этого упакуем наш скрипт в специальный xml, который зарегистрирует в nanoCAD две новые команды – «BlueCar» и «GreenCar», которые вставляют «BlueCar.dwg» и «GreenCar.dwg», соответственно. Возможно, это не самое рациональное решение с точки зрения «правильности» оформления кода, но мы же сейчас не оптимизацией занимаемся, правда? В итоге получаем следующее:

Вроде данный скрипт также не требует пояснений – xml определяет имя команды, а исполняемый код мы помещаем в теги <script>. Сейчас мы не будем подробно расписывать другие параметры xml-файла – если вас интересуют подробности, то опять же обратитесь в SDK к платформе nanoCAD (см. Руководство разработчика nanoCAD ActiveX API, раздел «Регистрация скриптов в качестве команд»).

Сохраняем xml под именем «MyBlocks.nsf» и будем использовать его при загрузке nanoCAD. Обращаем ваше внимание, что кодировка сохраненного файла должна совпадать с описанием заголовка xml-файла. В нашем случае это «UTF-8» — не забудьте выставить эту кодировку при сохранении (см. рис.3):

Рис.3. При сохранении «MyBlocks.nsf» будьте внимательны с кодировками файла – это важно!

Добавление и регистрация команд в командной строке nanoCAD

В простейшем случае, для использования новых команд через командную строку, файл «MyBlocks.nsf» нужно подгрузить в среду nanoCAD через диалог «Загрузка\выгрузка приложений» из меню «Сервис\Приложения\Загрузка приложений» (рис.4). И понятно, что файл со скриптами также как и блоки может лежать в локальной сети в общей папке (например, в той же папке с блоками \\MYSERVER\MyBlocks\):

Рис.4. Загрузка своих команд в среду nanoCAD

Также рекомендуем файл «MyBlocks.nsf» положить в автозагрузку – скрипт будет автоматически загружаться при каждом старте программы. При этом если вы хотите прописать файл «MyBlocks.nsf» в автозагрузку на каждом рабочем месте пользователя автоматически, то вам нужно с помощью доменных политик инициировать реестр nanoCAD по пути: HKEY_CURRENT_USER\Software\Nanosoft\nanoCAD Plus\6.0\Profile\Appload\Startup.

А теперь давайте научимся создавать свои пункты меню, горячие клавиши, панели инструментов под наши команды вставки блоков и интегрируем библиотеку с интерфейсом nanoCAD более тесно. Эта интеграция сейчас описывается с помощью CFG-файла – обычного текстового файла, имеющего несколько специализированных разделов. Рассмотрим их.

Добавляем описания команды запуска скриптов BlueCar и GreenCar

Для того, чтобы наши команды «красиво» описывались в командной строке, строке состояния и всплывающих подсказках, добавим к ним более подробную информацию для nanoCAD:

где DispNamе – описание команды отображаемое в командной строке, а StatusText — всплывающий текст-подсказка при наведении курсора на иконку на панели инструментов (рис.5).

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

Регистрация команд в меню Мои команды

Далее создадим выпадающее меню Мои команды, в котором зарегистрируем наши новые команды. Добавим в него подменю с именем Вставка блоков и наши команды BlueCar и GreenCar. Присвоим подпунктам имена — Вставка BlueCar и Вставка GreenCar соответственно:

Результат на рисунке 6:

Рис. 6. Добавляем команды в меню.

Отображение пользовательской панели инструментов

Отлично, мы добавили выпадающее меню с собственными командами! Давайте по аналогии с меню добавим ещё и панель инструментов:

Здесь мы описали свою панель инструментов «Мои команды» с двумя кнопками, включили ее по умолчанию плюс указали, где по умолчанию эта панель будет отображаться в интерфейсе nanoCAD — вверху во втором ряду третьей.

Теперь добавим панель «Мои команды» в список панелей инструментов nanoCAD: в штатное место меню Вид\Панели и в контекстное меню:

Плюс нужная функция, которая включает\выключает новую панель инструментов — иначе скроем панель и открыть ее сможем только из диалога Интерфейс:

Теперь наша панель полностью прописалась в интерфейсе nanoCAD — для того что бы увидеть весь список Панелей инструментов нужно зайти в Настройки интерфейса. А для быстрого включения/отключения нашей новой панели можно зайди в контекстное меню — клик ПКМ на поле панелей инструментов (рис. 7).

Рис. 7. Управление панелью инструментов.

Добавление горячих клавиш

И на финал – для удобства и быстроты использования наших новых команд, добавим горячие клавиши. Для синего автомобиля — Ctrl+B, для зеленого — Ctrl+G:

Результат на рисунке 8:

Рис. 8. …и назначаем горячие клавиши.

Завершаем работы с нашим CFG-файлом и сохраняем его под именем «userdata.сfg». Внимание: при сохранение файла нужно выбрать кодировку ANSI (рис.9)

Рис. 9. Сохранение «userdata.сfg» с кодировкой ANSI

Сброс настроек пользовательского интерфейса nanoCAD

Осталось совсем немного – переместить файл «userdata.cfg» в папку с установленным nanoCAD. Причем очень важно, чтобы файл с настройками интерфейса назывался именно «userdata.cfg»: дело в том, что все настройки стандартного интерфейса nanoCAD хранятся в файле «nCad.cfg» и в конце это файла происходит автоматическая подгрузка пользовательского файла настроек «userdata.cfg» — поэтому в простейшем случае для того, чтобы подгрузить настройки пользователя, достаточно просто положить соответствующий файл в папку к nanoCAD. Если же вы хотите использовать свои файлы, то не забудьте прописать их по аналогии в «nCad.cfg» — см. рис. 10.

Рис. 10. nanoCAD позволяет подгружать любое количество файлов настроек интерфейса – каждый под свою задачу.

Кстати, для саморазвития рекомендуем изучить файл «nCad.cfg» — в нем полностью описан интерфейс программы nanoCAD и там можно найти все приемы описания под свое приложение.

Напоследок нам надо один раз сбросить настройки интерфейса — nanoCAD заново подгрузить описание интерфейса из нашего файла и пропишет его в реестре Windows под текущего пользователя. Поэтому запускаем nanoCAD, заходим в Сервис > Настройка интерфейса > Интерфейс и нажимаем кнопку Сбросить всё (рис. 11) – при следующем запуске в среде nanoCAD появятся ваши пункты меню, панель инструментов и другие настройки.

Рис. 11. Для изменения интерфейса надо один раз сбросить настройки nanoCAD через диалог Настройка интерфейса.

Заключение

Поздравляем! Теперь вы можете наслаждаться новым возможностями в nanoCAD, избавляя себя от рутинной работы (рис. 12). Понятно, что сложность скриптов можно увеличивать, поручая им более серьезные задачи и таким образом существенно расширять возможности платформы nanoCAD, затачивая САПР под свои цели.

Рис. 12. Пример работающего приложения в среде nanoCAD со своими командами в меню, на панелях инструментов и командной строке.

Напоследок хотелось бы еще раз подчеркнуть, что это лишь один из способов пользовательской организации интерфейса nanoCAD, ориентированный на тех, кто желает заглянуть вглубь. В ближайшее время мы планируем включить в nanoCAD визуальный редактор, позволяющий работать с интерфейсом более дружелюбным по отношению к пользователю способом, совместимый как с .cfg-файлами, так и .cuix-файлами. Да и для организации библиотек будет более удобный инструмент аналогичный инструментальным палитрам AutoCAD. Но вариант приведенный в статье удобен тем, что позволяет не просто понять «как все устроено», но и выйди за границы штатных возможностей продукта. Плюс вы можете попробовать автоматизировать распространение настроек nanoCAD с вашими скриптами по рабочим местам пользователей с помощью (например) доменных политик – в статью мы включили несколько намеков на это.

В общем мы призываем почитать, проанализировать и самостоятельно поэкспериментировать с этими знаниями. Попытайтесь создать файлы «MyBlocks.nsf» и «userdata.cfg» по инструкциям из этой статьи либо скачайте уже готовые файлы примеров по этой ссылке, вложите их в папку с установленным nanoCAD, а затем подумайте как эти знания вы можете применить к своим задачам.

Дополнительно обращаем ваше внимание, что по аналогии вы можете добавить свои настройки в любое вертикальное приложение, построенное на базе nanoCAD. Т.е. если в диалог Загрузка\Выгрузка приложений добавить файл «MyBlocks.nsf», файл «userdata.cfg» положить в папку с установленным nanoCAD СПДС или Механика и один раз сбросить интерфейс, то ваши команды появятся и в приложениях!

Удачной автоматизации!

Сергей Спирин,
Денис Ожигин

Подпишитесь на рассылку и будьте в курсе последних новостей!

+