Сегодня в связи с уходом Autodesk с российского рынка многие проектные организации рассматривают Платформу nanoCAD для замены AutoCAD.
Меня зовут Олег Кирьянов, я руковожу отделом внедрения и инженерной поддержки САПР в компании «Системный софт», которая является премьер- и фокус-партнером «Нанософт» по направлениям «Конструкции» и «Машиностроение». Мы получаем от пользователей множество вопросов к технической поддержке, и один из самых частых: «Как в nanoCAD создавать сложные динамические объекты и “дружит” ли эта платформа с автокадовскими динамическими блоками?». Постараюсь дать развернутый ответ и на примерах описать все нюансы.
Перенос динамических блоков из AutoCAD
Платформа nanoCAD – многоцелевой инструмент черчения, разработанный компанией «Нанософт». Она изначально поддерживает файлы *.dwg, предлагает знакомый пользователям AutoCAD макет и набор инструментов. Программное обеспечение включает инструменты редактирования таблиц в стиле Excel, ускоряя работу с документацией, позволяя встраивать макросы и формулы в каждую ячейку. Платформа nanoCAD также располагает открытыми наборами API для создания приложений, автоматизирующих выполнение задач и экономящих время пользователя.
Динамические блоки – это двумерные параметрические объекты с настраиваемым набором свойств. Они предоставляют возможность сохранить в одном блоке (наборе простейших геометрических форм, с которыми может работать система) несколько геометрических реализаций, отличающихся друг от друга размером, взаимным расположением частей блока, видимостью отдельных элементов и т. п. С помощью динамических блоков можно сократить библиотеки стандартных элементов (один динамический блок заменяет несколько обычных). Также активное использование динамических блоков в ряде случаев позволяет значительно ускорить выпуск рабочей документации.
Динамические блоки в AutoCAD – это нечто вроде обычных блоков, но на стероидах. В обычном блоке AutoCAD вы можете использовать одну базовую точку, чтобы повернуть ее или масштабировать, и это будет почти вся гибкость, которую он способен предложить. А в динамическом блоке вы можете растянуть его, изменить его форму, полностью изменить на другой тип и многое другое.
Например, используя единый динамический блок, можно создать металлический профиль с выбором различных типов сечений и размеров этих сечений, а также с указанием необходимого представления (сбоку, сверху и т.п.), на котором можно будет динамически изменять длину профиля и т.д.
Платформа nanoCAD поддерживает динамические блоки, созданные в AutoCAD. Но не всё так просто. С довольно сложными в исполнении автокадовскими динамическими блоками возникают проблемы. Затруднительно спрогнозировать, будет ли «сломан» конкретный автокадовский динамический блок в nanoCAD или нет, но, как показывает практика, чем больше в динамическом блоке параметров, связанных с управлением геометрией объекта, тем выше риск, что в nanoCAD он будет работать некорректно.
Несколько примеров для наглядности. Представленные на иллюстрациях динамические блоки созданы в AutoCAD. Откроем *.dwg‑файл с этими блоками в nanoCAD и рассмотрим, как они будут отрабатывать при внесении изменений.
Первый пример: линейный обрыв. Здесь представлены один линейный параметр, один параметр поворота, две линейных «ручки» и одна «ручка» поворота (рис. 1).
![Рис. 1. Динамический блок в AutoCAD Динамический блок в AutoCAD](https://habrastorage.org/getpro/habr/upload_files/e8a/785/953/e8a7859532d2eb9e7efde5fb5f2bbdd0.png)
В nanoCAD объект работает без проблем: геометрия корректно изменяется при перемещении «ручек» (рис. 2).
![Рис. 2. Тот же динамический блок в nanoCAD Тот же динамический блок в nanoCAD](https://habrastorage.org/getpro/habr/upload_files/a00/258/586/a002585860358c7d4d470576d6449209.png)
Второй пример: неравнополочный уголок (рис. 3). Здесь на геометрию наложено большое количество зависимостей и параметров. В AutoCAD этот динамический блок работает согласно примененным зависимостям.
![Рис. 3. Неравнополочный уголок https://habrastorage.org/r/w1560/getpro/habr/upload_files/d85/4f0/6a0/d854f06a08e9919cdb06a6daf81c9f56.png](https://habrastorage.org/getpro/habr/upload_files/393/ff4/aa5/393ff4aa5088fbc0ea4fbd76e12f2235.png)
В nanoCAD же он «ломается»: при внесении изменений в представление «Сбоку» некорректно изменяется длина (рис. 4), а при попытке выбора другого типа уголка геометрия сечения никак не изменяется.
![Рис. 4. Результат изменения длины уголка на представлении «Сбоку» Результат изменения длины уголка на представлении «Сбоку»](https://habrastorage.org/getpro/habr/upload_files/03c/395/f5a/03c395f5a7a3c4c2b480b972371f1925.png)
Еще один пример некорректной работы автокадовского динамического блока в nanoCAD: текст не следует за перемещением выноски, а «ручка», которая отвечает за изменение диаметра круга, лежит за пределами круга (рис. 5).
![Рис. 5. Пример некорректной работы https://habrastorage.org/r/w1560/getpro/habr/upload_files/59a/f2b/793/59af2b7935b3dbee1fba358040f5406b.png](https://habrastorage.org/getpro/habr/upload_files/51b/1ae/bff/51b1aebff71ee43ec7ae05ac67e223d5.png)
Проблему усугубляет тот факт, что при попытке, применяя Редактор блоков, открыть и отредактировать в nanoCAD сложные в исполнении динамические блоки, пользователь увидит сообщение, показанное на рис. 6.
![Рис. 6. Сообщение об ошибке https://habrastorage.org/r/w1560/getpro/habr/upload_files/63a/b00/6dc/63ab006dcc818ea0a15257c22a51d010.png](https://habrastorage.org/getpro/habr/upload_files/90a/122/0c8/90a1220c88de794089d59c0af5995d7f.png)
Открыть и отредактировать более простые автокадовские динамические блоки через Редактор блоков nanoCAD можно, но особого смысла в этом нет. Например, в случае уже рассмотренного нами линейного обрыва мы увидим результат, представленный на рис. 7.
![Рис. 7. Линейный обрыв https://habrastorage.org/r/w1560/getpro/habr/upload_files/754/ae8/dd9/754ae8dd9df082a692e594d5f9b88867.png](https://habrastorage.org/getpro/habr/upload_files/b49/821/d84/b49821d8440f6009285ae08acf20f58f.png)
То есть будет видна только геометрия объекта, но не «ручки» и не те параметры, которые представлены в Редакторе блоков AutoCAD. Редактор блоков nanoCAD не содержит инструментария для создания геометрических параметров, поэтому мы не сможем добавить здесь новые геометрические параметры, а также отредактировать существующие.
Очевидно, что существует вопрос совместимости динамических блоков при переносе из AutoCAD в nanoCAD. И универсального решения этой головоломки на сегодня нет.
Рабочий вариант – тестировать и проверять, как работает тот или иной динамический блок в nanoCAD. Если он отрабатывает корректно и результаты устраивают, его можно использовать в рабочих чертежах, создаваемых в nanoCAD.
Если же динамический блок «ломается», значит нужно создавать новый, с нуля, учитывая возможности инструментов nanoCAD. Об этом дальше.
Стандартный функционал для создания динамических блоков в nanoCAD
Как уже сказано, Редактор блоков nanoCAD не содержит инструментария для создания геометрических параметров. Но управлять геометрией блоков в nanoCAD можно с помощью состояний видимости (рис. 8). Принцип создания таких блоков очень прост: можно создавать в Редакторе блоков различные примитивы, после чего присваивать им соответствующее представление. А уже в самом проекте переключать созданные представления, показывая или скрывая те или иные примитивы в блоке.
![Рис. 8. Состояния видимости Состояния видимости](https://habrastorage.org/getpro/habr/upload_files/e80/330/c7b/e80330c7b58e5d7c432a10b7055c8b6d.png)
Допустим, нам нужно создать условное обозначение дверного проема с линией открывания двери. При этом мы хотим, чтобы ширина проема (и, соответственно, длина полотна двери) изменялась в зависимости от выбранного типа двери.
![Рис. 9. Создание геометрии https://habrastorage.org/r/w1560/getpro/habr/upload_files/986/262/c48/986262c4861c3350e957aa397531fb29.png](https://habrastorage.org/getpro/habr/upload_files/540/3a2/7b5/5403a27b5098aecca4766586579165f7.png)
Создаем геометрию, как показано на рис. 9, и вызываем команду БЛОК, затем указываем имя будущего блока и объекты, которые будут в этот блок входить (красные линии и зеленую дугу) – (рис. 10).
![Рис. 10. Определение блока https://habrastorage.org/r/w1560/getpro/habr/upload_files/fad/cdd/f57/fadcddf5770b6f8d4d7e9fc99f02adaf.png](https://habrastorage.org/getpro/habr/upload_files/dd2/3a7/ad3/dd23a7ad3348d8142b63cd06f59c6025.png)
Далее через команду БЛОКРЕД открываем созданный блок в Редакторе блоков (рис. 11). В группе Видимость нажимаем кнопку Состояния видимости. Нажимаем ОК. После этого графически указываем любое удобное положение «ручки» видимости и название параметра (назовем его ТипДвери_План).
![Рис. 11. Преобразование блока https://habrastorage.org/r/w1560/getpro/habr/upload_files/435/4d0/e26/4354d0e264bde23e38bcad1b4119b688.png](https://habrastorage.org/getpro/habr/upload_files/d05/0e3/14e/d050e314e49a85a2ddfe43e0deb108a6.png)
В следующем диалоговом окне для параметра ТипДвери_План создаем необходимый набор состояний видимости. По умолчанию одно состояние видимости, с наименованием Состояние видимости0, уже создано (рис. 12). Переименуем его в Д21-9.
![Рис. 12. Состояние видимости https://habrastorage.org/r/w1560/getpro/habr/upload_files/d36/ea0/036/d36ea003610d126c5a5b76becc2b88df.png](https://habrastorage.org/getpro/habr/upload_files/f7c/28e/7c3/f7c28e7c3155c0dc403c92d904c285f5.png)
При создании новых состояний видимости (будем называть их Д21-10 и Д21-11) заранее ставим переключатель в положение Скрыть все существующие объекты (рис. 13).
![Рис. 13. Новое состояние видимости https://habrastorage.org/r/w1560/getpro/habr/upload_files/6a2/49a/b49/6a249ab49a6fa15df9dcd5a965c1ee54.png](https://habrastorage.org/getpro/habr/upload_files/b23/045/c01/b23045c01404db746de2c17cec1c7db1.png)
После подтверждения в группе Видимость станет доступен выпадающий список состояний видимости. В Д21-9 у нас уже есть геометрия. Поэтапно переключимся с помощью этого списка на следующие состояния видимости и добавим в каждом примитивы с соответствующей геометрией (в Д21-10 ширина проема будет равна 1000, а в Д21-11 – 1100). Также в группе Видимость можно включить опцию Режим видимости (рис. 14), которая позволит видеть все примитивы в блоке независимо от включенного состояния видимости.
![Рис. 14. Режим видимости https://habrastorage.org/r/w1560/getpro/habr/upload_files/567/dfa/ee1/567dfaee11c201efb8d48aa65f192670.png](https://habrastorage.org/getpro/habr/upload_files/d3d/e35/232/d3de3523256c9276a66b7e0e0f572c07.png)
В результате у нас получился объект, геометрией которого мы управляем с помощью «ручки» видимости (рис. 15).
![Рис. 15. Динамический объект https://habrastorage.org/r/w1560/getpro/habr/upload_files/53b/839/7bb/53b8397bbe6fe325216ec6e8ffbde32a.png](https://habrastorage.org/getpro/habr/upload_files/8ae/4fc/27a/8ae4fc27ad0f58a75a340fb855e61d0c.png)
Но что же делать, если нужно создать сложные блоки с возможностью параметризации их геометрии? Здесь на помощь приходит модуль «СПДС» и его инструмент, который называется Мастер объектов.
Модуль «СПДС»
Мастер объектов – параметрический инструмент создания типовых объектов, позволяющий формировать правила их поведения в контексте сборки или заимствовать свойства существующих объектов из базы данных. Все объекты, созданные в Мастере, можно хранить в единой БД (рис. 16), обеспечивая тем самым централизованный доступ специалистов к этой базе данных.
![Рис. 16. База элементов https://habrastorage.org/r/w1560/getpro/habr/upload_files/697/ef7/33d/697ef733d794fa81d6f0c24e876d7b84.png](https://habrastorage.org/getpro/habr/upload_files/acd/814/1a8/acd8141a867d1e2eecdad3d9379b18ee.png)
В этом инструменте представлены встроенный механизм распознавания пользовательской графики с возможностью указания табличных параметров (рис. 17), редактор скриптов (рис. 18), редактор форм (форма (рис. 19-20) – это диалоговое окно с параметрами и представлениями, которое открывается при вставке или редактировании объекта).
![Рис. 17. Табличные параметры https://habrastorage.org/r/w1560/getpro/habr/upload_files/61a/8b5/d8e/61a8b5d8ec79880f8fad47177e29ea95.png](https://habrastorage.org/getpro/habr/upload_files/013/78a/c3e/01378ac3eb30c3c4de669d464589fd70.png)
![Рис. 18. Мастер скриптов https://habrastorage.org/r/w1560/getpro/habr/upload_files/7ee/07a/1bb/7ee07a1bb16c4e12cb5af396f0f04b74.png](https://habrastorage.org/getpro/habr/upload_files/9f5/c71/8b3/9f5c718b34906219c939428ae58b0288.png)
![https://habrastorage.org/r/w1560/getpro/habr/upload_files/16b/138/f1f/16b138f1f2d86efeefc539bd517108c4.png](https://habrastorage.org/getpro/habr/upload_files/f33/7ad/b90/f337adb90aa2b4d35ac133e965de1a24.png)
![Рис. 19. Примеры форм https://habrastorage.org/r/w1560/getpro/habr/upload_files/06b/ed7/ed4/06bed7ed4c84f965924cab86608f3960.png](https://habrastorage.org/getpro/habr/upload_files/59b/b34/3c3/59bb343c3d29a4b75d2a28604973fc22.png)
Вернемся к нашему условному обозначению дверного проема с линией открывания двери и создадим его с помощью Мастера объектов. Для начала создаем геометрию объекта посредством примитивов и образмериваем ее так, как показано на рис. 20.
![Рис. 20. Создание геометрии объекта https://habrastorage.org/r/w1560/getpro/habr/upload_files/35c/c40/de6/35cc40de6fc4be9b79f8732b9a9c4f3c.png](https://habrastorage.org/getpro/habr/upload_files/0d5/b03/295/0d5b03295cbd5c179319b94ee4b8f9f6.png)
Горизонтальная зеленая линия нужна здесь для простановки углового размера, в дальнейшем ее скрываем.
Далее переходим на вкладку СПДС Ò группа Мастер объектов. Нажимаем кнопку Точка вставки для указания точки вставки будущего объекта. Затем нажимаем кнопку Установить параметр и поочередно выбираем проставленные размеры, чтобы назначить параметры, которые будут управлять размерами объекта (параметр для размера 200 назовем t, параметр для размера 900 – A, параметр для углового размера – v) – (рис. 21).
![Рис. 21. Установка параметра Точка вставки https://habrastorage.org/r/w1560/getpro/habr/upload_files/f78/395/379/f78395379163adbceb4c545040a41fca.png](https://habrastorage.org/getpro/habr/upload_files/8e4/bb9/737/8e4bb9737ead7c0c83af436156d1b2a5.png)
Снова нажимаем Установить параметр и выбираем горизонтальную зеленую линию. В поле Отображать диалогового окна Свойства объекта указываем 0 (рис. 22) – это означает, что после создания объекта и его последующей вставки в чертеж данная линия не будет выводиться на экран.
![Рис. 22. Свойства объекта https://habrastorage.org/r/w1560/getpro/habr/upload_files/8ea/e22/f5e/8eae22f5edae06ad2289644efe132183.png](https://habrastorage.org/getpro/habr/upload_files/443/70a/115/44370a11590b28f7522721b191239c18.png)
Аналогично установим параметр на дуговую линию открывания двери. В поле Отображать напишем будущее название параметра, который будет управлять отображением дуги, – dol, а в поле Тип линии укажем 2 – чтобы данная дуга всегда создавалась тонкой линией (рис. 23).
![Рис. 22. Свойства объекта https://habrastorage.org/r/w1560/getpro/habr/upload_files/f6a/316/109/f6a3161093147751a5a919d0e39d1d5c.png](https://habrastorage.org/getpro/habr/upload_files/57c/181/53a/57c18153acf9c06b37e78ad3e0e3aac8.png)
Все необходимые манипуляции над эскизом нашего объекта мы выполнили. Теперь вызываем Мастер объектов. Для создания нового объекта в диалоговом окне выбираем Объект Ò Новый, указываем папку, в которую будет сохранен объект, а также прописываем название объекта (рис. 24).
![Рис. 24. Новый объект https://habrastorage.org/r/w1560/getpro/habr/upload_files/e6f/a32/7d7/e6fa327d7ce138d6058da44e891c792a.png](https://habrastorage.org/getpro/habr/upload_files/e0b/2dd/3ba/e0b2dd3bad87ad82b21a66951b1cc101.png)
После этого находим в дереве Мастера объектов раздел Исполнение и правой кнопкой мыши вызываем контекстное меню, где выбираем Добавить исполнение (рис. 25).
![Рис. 25. Мастер объектов. Добавление исполнения https://habrastorage.org/r/w1560/getpro/habr/upload_files/7e8/9b0/722/7e89b07229c4b9ca7dd5bbcef19335ba.png](https://habrastorage.org/getpro/habr/upload_files/d72/5c1/033/d725c1033b3df66c6c8eb0201bc4090b.png)
В правой части диалогового окна щелкаем правой кнопкой мыши на появившемся исполнении и выбираем Параметрическое распознавание вида (рис. 26), после чего указываем все необходимые объекты в пространстве модели, включая размеры.
![Рис. 26. Мастер объектов. Выбор параметрического распознавания вида https://habrastorage.org/r/w1560/getpro/habr/upload_files/0fb/622/0c3/0fb6220c353d8b7fe932661f23d3bf3d.png](https://habrastorage.org/getpro/habr/upload_files/60d/62d/528/60d62d52809d2a66f42e84f340a9ea07.png)
После успешного распознавания появится сообщение, показанное на рис. 27.
![Рис. 27. Сообщение об успешном создании детали https://habrastorage.org/r/w1560/getpro/habr/upload_files/d6e/d70/5e5/d6ed705e5edcec933eb621780504ed7b.png](https://habrastorage.org/getpro/habr/upload_files/e1f/2e5/0f3/e1f2e50f31cf0dbcdca6e08b4bda5b3a.png)
Теперь можно приступить к созданию скрипта. Начинающим пользователям предлагается Мастер скриптов – механизм самостоятельного пошагового составления алгоритмов, управляющих поведением объекта в момент его вставки и редактирования. Данный механизм позволяет в большинстве случаев не прибегать к ручному написанию скрипта. Вызывается он в разделе Мастер Ò Мастер скриптов.
На шаге «Основные свойства» заполняются основные данные скрипта. Здесь необходимо заполнить значения основных параметров: Описание объекта (описывает общее название объекта), Имя объекта (указанное значение будет отображаться в шапке диалогового окна выбора параметров объекта), Тип объекта (служит для идентификации объекта как принадлежащего к какой-либо группе. Эту информацию желательно внести латинскими буквами) и Подтип объекта (определяет подтип конкретного ГОСТа. Здесь также желательно заполнение латинскими буквами). Без указания значений перечисленных параметров Мастер скриптов не позволит перейти к следующему шагу.
Изменение параметров сразу же отображается в окне обзора скрипта (рис. 28).
![Рис. 28. Мастер скриптов. Основные свойства https://habrastorage.org/r/w1560/getpro/habr/upload_files/157/901/814/1579018149abe27705d308cfbc71c059.png](https://habrastorage.org/getpro/habr/upload_files/946/7f9/0ab/9467f90abcf8cbc95a17431cdc62f90f.png)
На шаге «Свойства параметров» устанавливаются свойства и начальные значения выбранных параметров всех распознанных видов (рис. 29). Установим здесь следующие значения:
· параметр А: зеленая галочка Доступен для редактирования, описание параметра: Ширина проема, значение по умолчанию – 900;
· параметр t: зеленая галочка Доступен для редактирования, описание параметра: Толщина стены, значение по умолчанию – 200;
· параметр v: красная галочка Используется, описание параметра: Угол, значение по умолчанию – 30.
![Рис. 29. Мастер скриптов. Свойства параметров https://habrastorage.org/r/w1560/getpro/habr/upload_files/341/f8c/11b/341f8c11bc740805b0871b74d9b3c045.png](https://habrastorage.org/getpro/habr/upload_files/d38/830/db7/d38830db7b5566c6df488f7bbb8aa25c.png)
Также на этом шаге добавим параметр, управляющий отображением дуги (dol) – (рис. 30). Для этого необходимо щелкнуть на любом параметре, ввести в поле ввода/редактирования названия параметра значение dol и нажать кнопку Добавить параметр (направленная вверх зеленая стрелка).
![Рис. 30. Мастер скриптов. Добавление параметра, управляющего отображением дуги https://habrastorage.org/r/w1560/getpro/habr/upload_files/dd3/08a/b74/dd308ab74ff334b7976233358304532d.png](https://habrastorage.org/getpro/habr/upload_files/233/286/683/2332866832e1c0b5b727afdb3148478d.png)
Установим для него следующие значения (рис. 31): красная галочка Используется, описание параметра: Линия открывания двери, значение по умолчанию – 1.
![Рис. 31. Мастер скриптов. Установленные значения https://habrastorage.org/r/w1560/getpro/habr/upload_files/ad3/e13/e29/ad3e13e2958f6abf02964d063405cfb7.png](https://habrastorage.org/getpro/habr/upload_files/10a/b84/ab5/10ab84ab560572eb784fb14e2ccfdb89.png)
На следующем шаге, «Вычисление параметров», устанавливается способ выбора значений параметров, используемых в скрипте. Оставляем для всех параметров стандартное значение Отображать диалог и нажимаем кнопку Вперед (рис. 32).
![Рис. 32. Мастер скриптов. Вычисление параметров https://habrastorage.org/r/w1560/getpro/habr/upload_files/5e1/621/769/5e162176991695f96eb7557a6b7258a2.png](https://habrastorage.org/getpro/habr/upload_files/163/153/ef8/163153ef821dabcf71eee6667cc3c511.png)
Шаг «Условия отрисовки». Здесь определяются условия отображения некоторых компонентов диалога редактирования объекта, в зависимости от параметров.
Введем название переключателя: «Линия открывания двери». Добавим переключатель «Линия открывания двери» в список переключателей, нажав на направленную вверх зеленую стрелку. В поле Включен пропишем dol=1, в поле Выключен – dol=0. Поставим галочку Включен по умолчанию (рис. 33). Таким образом можно отдельно управлять отображением дуговой линии открывания двери.
![Рис. 33. Мастер скриптов. Условия отрисовки https://habrastorage.org/r/w1560/getpro/habr/upload_files/02d/278/802/02d278802beab254a5db076ffe6e74be.png](https://habrastorage.org/getpro/habr/upload_files/ce2/165/f66/ce2165f665c28b01032d43cf631b48a3.png)
Добавим еще два переключателя: «Угол 30» и «Угол 90», которые будут сгруппированы (рис. 34).
Для «Угол 30» в поле Включен пропишем v=30, в поле Выключен – v!=30 (и поставим галочку Включен по умолчанию).
Для «Угол 90» в поле Включен пропишем v=90, в поле Выключен – v!=90 (галочку Включен по умолчанию здесь не ставим).
Теперь мы можем управлять углом открывания двери с помощью выпадающего списка с фиксированными значениями в 30 и 90 градусов.
![Рис. 34. Мастер скриптов. Добавление переключателей «Угол 30» и «Угол 90» https://habrastorage.org/r/w1560/getpro/habr/upload_files/fd9/652/d24/fd9652d24038f78a6b8c34075e680767.png](https://habrastorage.org/getpro/habr/upload_files/9d8/9ba/a63/9d89baa63d218daeaebec318c90174cc.png)
Шаг «Рабочие плоскости» пропускаем (в нашем случае здесь никаких операций производить не надо) и переходим к шагу «Скрыть/показать параметры». На этом шаге мы указываем, какие параметры будут отображаться в диалоге вставки и редактирования объекта. Убираем галочки параметров v и dol (рис. 35) – значения данных параметров будем определять с помощью переключателей, поэтому их отображение в диалоге вставки и редактирования излишне.
![Рис. 35. Мастер скриптов. Скрыть/показать параметры https://habrastorage.org/r/w1560/getpro/habr/upload_files/155/cf9/bcb/155cf9bcb5b01c99a1c01a8545aa49d4.png](https://habrastorage.org/getpro/habr/upload_files/a0a/e79/057/a0ae790575990b6d938d021eecef3877.png)
Шаг «Условия отображения» пропускаем, а на шаге «Переключатели управления» дополнительно ставим галочку Отрисовывать объект во время вставки (рис. 36), чтобы при выборе точки вставки и вектора направления объект отрисовывался на экране.
![Рис. 36. Мастер скриптов. Переключатели управления https://habrastorage.org/r/w1560/getpro/habr/upload_files/c49/4d4/0fb/c494d40fb274b20a28d930c2e73791ab.png](https://habrastorage.org/getpro/habr/upload_files/50e/699/b1e/50e699b1eaa0f895225e77c1d13996f2.png)
На шаге «Текущий скрипт» можно проверить скрипт и сохранить его. Созданный объект отобразится в базе элементов (рис. 37).
![Рис. 37. Созданный объект в базе элементов https://habrastorage.org/r/w1560/getpro/habr/upload_files/3a9/3df/4af/3a93df4af897127a2d96f89cacbecec1.png](https://habrastorage.org/getpro/habr/upload_files/509/b9b/b8c/509b9bb8cef2b0353da32f6d450abe9d.png)
При вставке будет отображаться диалоговое окно, в котором можно задавать значения параметров: указывать размеры, включать или отключать отображение линии открывания двери и выбирать нужный угол открывания (рис. 38).
![https://habrastorage.org/r/w1560/getpro/habr/upload_files/5e4/197/56f/5e419756fdab5da04075de877d8ad93e.png](https://habrastorage.org/getpro/habr/upload_files/1b4/d7c/109/1b4d7c1098dda37e0cece2d70b54be66.png)
![https://habrastorage.org/r/w1560/getpro/habr/upload_files/1c7/f55/ded/1c7f55ded8f2565027794114b9c1b1f0.png](https://habrastorage.org/getpro/habr/upload_files/edd/4c3/0b8/edd4c30b8c7cb1ea6ba7e6624e7c933c.png)
![Рис. 38. Задание значений параметров https://habrastorage.org/r/w1560/getpro/habr/upload_files/f65/4de/40e/f654de40e2a25cc9e47082b55bddbd3c.png](https://habrastorage.org/getpro/habr/upload_files/b56/747/2ef/b567472efc55c534010b411a06593259.png)
Кроме того, поскольку на шаге «Свойства параметров» мы ставили для параметров A и t зеленую галочку Доступна для редактирования, значения данных параметров можно вводить и через панель Свойства (рис. 39).
![Рис. 39. Ввод значения параметров через панель Свойства https://habrastorage.org/r/w1560/getpro/habr/upload_files/77b/bfc/af3/77bbfcaf3c9f67a86840e5f26859a3ac.png](https://habrastorage.org/getpro/habr/upload_files/085/447/40e/08544740e94ed65255de216b436ff79a.png)
При необходимости данный объект можно усложнить. Например, ввести табличные параметры, чтобы использовать фиксированные значения параметров (рис. 40).
![Рис. 40. Фиксированные значения параметров https://habrastorage.org/r/w1560/getpro/habr/upload_files/96c/bd9/53b/96cbd953bb2412f2b5be3622b9aa8855.png](https://habrastorage.org/getpro/habr/upload_files/8b9/541/a72/8b9541a726cb6bff744b5f0d33cc4d3e.png)
После обновления скрипта при вставке нашего объекта можно будет выбирать заданные значения в диалоге редактирования объекта (раздел Табличные параметры) – (рис. 41).
![Рис. 41. Табличные параметры https://habrastorage.org/r/w1560/getpro/habr/upload_files/b1f/503/10b/b1f50310b61c76de91431bd6892a079b.png](https://habrastorage.org/getpro/habr/upload_files/500/0fb/973/5000fb97315e84413a25afad726b29c0.png)
Если на объекте требуется добавить «ручку», с помощью которой можно будет графически управлять параметром t, понадобится дополнить скрипт уже вручную. В нашем случае выбираем в Мастере объектов раздел Методы Ò Обработчики событий Ò SetGripPoint и прописываем следующий текст (он выделен на рис. 42):
function SetGripPoint {
NGrip = 2;
pntGrip0 = pntOrigin;
pntGrip1 = pntOrigin-t*vecPlane;
};
![Рис. 42. Обработчик SetGripPoint https://habrastorage.org/r/w1560/getpro/habr/upload_files/558/cf8/3d9/558cf83d9d10d62b60057f050ce09a92.png](https://habrastorage.org/getpro/habr/upload_files/af4/2ee/7f0/af42ee7f0b4cbc9d0067bbeb3b4ebd1b.png)
Далее выбираем раздел Методы Ò Обработчики событий Ò OnMoveGripPoint и добавляем следующий текст (выделен на рис. 43):
function OMoveGripPoint {
if (NMovingGrip == 0) {
pntOrigin = pntGrip0;
};
//ручка толщины стены
if (NMovingGrip == 1) {
t = max ((vecLen(pntGrip0 - pntGrip1)/rScl),1);
vecPlane = pntGrip1 + pntGrip0;
};
};
![Рис. 43. Обработчик OnMoveGripPoint https://habrastorage.org/r/w1560/getpro/habr/upload_files/917/e54/37a/917e5437affe536e8a0b84d39d8ecea3.png](https://habrastorage.org/getpro/habr/upload_files/371/724/960/371724960055c67cafab860f6fbe4a2a.png)
После сохранения скрипта на объекте появится дополнительная «ручка» (рис. 44), посредством которой можно изменять длины отрезков, связанных с параметром t.
![Рис. 44. Дополнительная «ручка» https://habrastorage.org/r/w1560/getpro/habr/upload_files/737/f90/987/737f9098794e086a42a3772474ad2cc2.png](https://habrastorage.org/getpro/habr/upload_files/ca4/8e0/020/ca48e002065bf177c4b240fedd18bc43.png)
Функционал Мастера объектов довольно обширен (рис. 45), здесь мы коснулись лишь нескольких примеров его использования. Для самостоятельного изучения есть необходимая документация. Можно в разделе «Помощь» открыть подробную справку по работе с Мастером объектов или сразу перейти в раздел «Синтаксис языка скриптов». В справке собраны различные примеры с пошаговым описанием создания объекта – они позволят потренироваться и понять логику работы Мастера.
![Рис. 45. Функционал Мастера объектов https://habrastorage.org/r/w1560/getpro/habr/upload_files/717/8f6/6ba/7178f66bafe428d1a620f1e899a1c88c.png](https://habrastorage.org/getpro/habr/upload_files/e71/76d/16c/e7176d16c6ebb51838076cda40262039.png)
При этом в базу элементов модуля «СПДС» уже включен обширный набор наиболее часто используемых условных обозначений, металлических профилей, сборных железобетонных изделий, деталей креплений и др.
Каждый объект имеет параметры, соответствующие стандарту, ГОСТу, серии. Поэтому в предоставленной библиотеке пользователь с большей долей вероятности сможет найти для себя все нужные объекты.
Надеюсь, что статья помогла вам лучше понять нюансы работы с динамическими блоками в Платформе nanoCAD.
Олег Кирьянов,
руководитель отдела внедрения
и инженерной поддержки САПР
ООО «Системный софт»
Surrogate
В конце 2016 года NanoSoft подогнали нашей конторе 10 лицензий nanocad + лицензии на вертикальные решения типа СКС/ОПС на несколько месяцев на пробу.
Потестировали все устраивает:
весь функционал AutoCAD который используем имеется;
много полезных фич собственной разработки.
Начали думать о "импортозамещении" на этот продукт, писать мануалы для 30 коллег внутри компании использующих AutoCAD.
Беда пришла откуда не ждали - работаем мы не в сферическом вакууме, а есть свое окружение: Заказчики/Подрядчики/Партнеры которые тогда не успели/не хотели "импортозамещаться именно на nanocad". В AutoCAD/nanocad есть объект таблицы, после редактирования этого объекта в nanocad этот документ уже никак не откроется в AutoCAD !!!!
Недавно стал снова интересоваться этим нюансом. Коммент на Хабре от 19.10.2022 говорит о том, что в тот момент проблема оставалась:
Подскажите пожалуйста удалось ли nanocad подружиться с таблицами AutoCAD?