Статьи

Налаштування середовища nanoCAD для досвідчених користувачів

  1. Вступ: підготовка .dwg-файлів
  2. Створення команд для вставки блоків
  3. Додавання і реєстрація команд в командному рядку nanoCAD
  4. Додаємо опису команди запуску скриптів BlueCar і GreenCar
  5. Реєстрація команд в меню Мої команди
  6. Відображення користувальницької панелі інструментів
  7. Додавання гарячих клавіш
  8. Скидання налаштувань призначеного для користувача інтерфейсу nanoCAD
  9. висновок

Рано чи пізно у досвідченого користувача з'являється необхідність розширити штатний функціонал САПР своїми скриптами і командами, що автоматизують щоденну рутину - ми регулярно отримуємо запити на тему «як створити своє меню?», «Як зареєструвати свою команду?», «Як прописати скрипт в середовищі 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» в поточне креслення в бездіалоговом режимі за координатами, вказаними користувачем:
Dim ms Dim ut Dim ptInsert Set ms = ThisDrawing.ModelSpace REM доступ до простору Моделі поточного документа Set ut = ThisDrawing.Utility REM доступ до командного рядка поточного документа ptInsert = ut.GetPoint ( "0, 0, 0", "Вкажіть точку вставки ") REM запит до користувача координат точки вставки блоку ms.InsertBlock ptInsert," C: \ MyBlocks \ GreenCar.dwg ", 1, 1, 1, 0 REM вставляємо блок в простір моделі
Звідки ми це знаємо? Це все описано в стандартному SDK (Software Developer Kit) до nanoCAD; наведені в скрипті команди - це стандартні API-функції САПР, заснованих на .dwg (див. рис.2). Завантажити останню версію SDK можна на developer.nanocad.ru . Там же можна отримати приклади скриптів, що виконують інші цікаві завдання в nanoCAD.

Мал. 2. Документація розробника nanoCAD докладно описує всі необхідні функції для роботи з середовищем nanoCAD за допомогою мов C ++, .NET, Visual Basic Script, Java Script і LISP.

Тепер скрипту по вставці блоку треба присвоїти ім'я-команду (щоб викликати цей скрипт з командного рядка nanoCAD). І зробити це треба для кожного блоку: один блок - одна команда. Для цього спакуємо наш скрипт в спеціальний xml, який зареєструє в nanoCAD дві нові команди - «BlueCar» і «GreenCar», які вставляють «BlueCar.dwg» і «GreenCar.dwg», відповідно. Можливо, це не найраціональніше рішення з точки зору «правильності» оформлення коду, але ми ж зараз не оптимізацією займаємося, правда? В результаті отримуємо наступне:
<? Xml version = "1.0&quot; encoding = "utf-8"?> <Package> <command name = "BlueCar" weight = "30" cmdtype = "1"> <script lang = "VBS"> <! [CDATA [Dim ms Dim ut Dim ptInsert Set ms = ThisDrawing.ModelSpace Set ut = ThisDrawing.Utility ptInsert = ut.GetPoint ( "0,0,0", "Вкажіть точку вставки") ms.InsertBlock ptInsert, "C: \ MyBlocks \ BlueCar.dwg ", 1, 1, 1, 0]]> </ script> </ command> <command name =" GreenCar "weight =" 30 "cmdtype =" 1 "> <script lang =" VBS "> < ! [CDATA [Dim ms Dim ut Dim ptInsert Set ms = ThisDrawing.ModelSpace Set ut = ThisDrawing.Utility ptInsert = ut.GetPoint ( "0,0,0", "Вкажіть точку вставки") ms.InsertBlock ptInsert, "C: \ MyBlocks \ GreenCar.dwg ", 1, 1, 1, 0]]> </ script> </ command> </ package>
Начебто даний скрипт також не вимагає пояснень - 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:
[\ Configman \ commands \ BlueCar] weight = i30 | cmdtype = i0 intername = sBlueCar DispName = sВставка блоку BlueCar StatusText = sПрімер вставки блоку BlueCar, заснованої на VBS [\ configman \ commands \ GreenCar] weight = i30 | cmdtype = i0 intername = sGreenCar DispName = sВставка блоку GreenCar StatusText = sПрімер вставки блоку GreenCar, заснованої на VBS
де DispNamе - опис команди відображається в командному рядку, а StatusText - спливає текст-підказка при наведенні курсору на іконку на панелі інструментів (рис.5).

Мал. 5. Всі команди, зареєстровані в nanoCAD, можна «обернути» додатковою інформацією.

Реєстрація команд в меню Мої команди
Далі створимо меню, що випадає Мої команди, в якому зареєструємо наші нові команди. Додамо в нього підміню з ім'ям Вставка блоків і наші команди BlueCar і GreenCar. Дамо підпунктами імена - Вставка BlueCar і Вставка GreenCar відповідно:
[\ Menu \ mycommands] | name = sМоі команди [\ menu \ mycommands \ InsertBlock] | name = sВставка блоків [\ menu \ mycommands \ InsertBlock \ BlueCar] | name = sВставка BlueCar | InterName = sBlueCar [\ menu \ mycommands \ InsertBlock \ GreenCar] | name = sВставка GreenCar | intername = sGreenCar
Результат на малюнку 6:

Мал. 6. Додаємо команди в меню ...

Відображення користувальницької панелі інструментів
Відмінно, ми додали меню, що випадає з власними командами! Давайте по аналогії з меню додамо ще й панель інструментів:
[\ Toolbars \ mycommands] | InitialVisible = f1 | name = sМоі команди [\ toolbars \ mycommands \ BlueCar] | intername = sBlueCar [\ toolbars \ mycommands \ GreenCar] | intername = sGreenCar [\ toolbarspos \ mycommands] | DockPosition = sTop | row = i1 | pos = i2
Тут ми описали свою панель інструментів «Мої команди» з двома кнопками, включили її за замовчуванням плюс вказали, де за замовчуванням ця панель буде відображатися в інтерфейсі nanoCAD - вгорі в другому ряду третій.
Тепер додамо панель «Мої команди» в список панелей інструментів nanoCAD: в штатне місце меню Вид \ Панелі та в контекстне меню:
[\ Menu \ View \ toolbars \ My_toolbars] | Name = sМоі панелі [\ menu \ View \ toolbars \ My_toolbars \ ShowToolbar_mycommands] | Name = sМоі команди | InterName = sShowToolbar_mycommands [\ ToolbarPopupMenu \ My_toolbars] | Name = sМоі панелі [\ ToolbarPopupMenu \ My_toolbars \ ShowToolbar_mycommands] | Name = sМоі команди | InterName = sShowToolbar_mycommands
Плюс потрібна функція, яка включає \ вимикає нову панель інструментів - інакше приховуємо панель і відкрити її зможемо тільки з діалогу Інтерфейс:
[\ Configman \ commands \ sShowToolbar_MyCommands] weight = i10 | cmdtype = i0 intername = sShowToolbar_MyCommands StatusText = sПоказать / приховати панель Мої команди ToolTipText = sПоказать / приховати панель Мої команди DispName = sПоказать / приховати панель Мої команди
Тепер наша панель повністю прописалася в інтерфейсі nanoCAD - для того що б побачити весь список панелей інструментів потрібно зайти в Налаштування інтерфейсу. А для швидкого включення / відключення нашої нової панелі можна зайди в контекстне меню - клік ПКМ на поле панелей інструментів (рис. 7).

Мал. 7. Управління панеллю інструментів.

Додавання гарячих клавіш
І на фінал - для зручності і швидкості використання наших нових команд, додамо гарячі клавіші. Для синього автомобіля - Ctrl + B, для зеленого - Ctrl + G:
[\ Accelerators] BlueCar = sCtrl + B GreenCar = sCtrl + 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 СПДС або Механіка і один раз скинути інтерфейс, то ваші команди з'являться і в додатках!
Вдалою автоматизації!
Сергій Спірін,
Денис Ожигін,», «Як зареєструвати свою команду?
», «Як прописати скрипт в середовищі nanoCAD ?
Можливо, це не найраціональніше рішення з точки зору «правильності» оформлення коду, але ми ж зараз не оптимізацією займаємося, правда?
Quot; encoding = "utf-8"?