Все привыкли к тому, что первый инструмент проектировщика — это AutoCAD, который доминирует в мире черчения и проектирования с момента создания с 1980-х годов. Известность AutoCAD в сообществе САПР сравнима с известностью Photoshop в сообществе фоторедакторов, и одним из несомненных плюсов AutoCAD является возможность создания динамических блоков, использование которых обеспечивает большую гибкость и эффективность при проектировании. Лидерство AutoCAD не мешает конкурентам выпускать собственные версии САПР с поддержкой DWG. Эти альтернативы уже заработали своих лояльных пользователей. Одной из них является Платформа nanoCAD.

Сегодня в связи с уходом Autodesk с российского рынка многие проектные организации рассматривают именно Платформу nanoCAD как самую очевидную альтернативу AutoCAD.

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

Перенос динамических блоков из AutoCAD

Платформа nanoCAD — это многоцелевой инструмент для черчения, разработанный компанией «Нанософт». Он изначально поддерживает файлы DWG и предлагает знакомый макет и набор инструментов для пользователей AutoCAD. Программное обеспечение предлагает инструменты редактирования таблиц в стиле Excel, ускоряя работу с документацией, позволяя встраивать макросы и формулы в каждую ячейку. Платформа nanoCAD также имеет открытые наборы API для создания приложений автоматизации задач, которые могут сэкономить время.

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

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

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

Платформа nanoCAD поддерживает динамические блоки, созданные в AutoCAD. Но не всё так просто. С довольно сложными в своём исполнении автокадовскими динамическими блоками возникают проблемы. Сложно спрогнозировать, будет ли «сломан» конкретный автокадовский динамический блок в nanoCAD или нет, но, как показывает практика, чем больше в динамическом блоке параметров, связанных с управлением геометрией объекта, тем выше шанс того, что в nanoCAD он будет работать некорректно.

Несколько примеров для наглядности. Данные динамические блоки были созданы в AutoCAD, где они работают корректно. Откроем dwg‑файл с этими блоками в nanoCAD и рассмотрим, как они будут отрабатывать при внесении изменений.

Первый пример: линейный обрыв. В данном объекте присутствует 1 линейный параметр, 1 параметр поворота, 2 линейных ручки и 1 ручка поворота.

Динамический блок в AutoCAD
Динамический блок в AutoCAD

В nanoCAD объект работает без проблем: геометрия изменяется корректно при перемещении ручек.

Тот же динамический блок в nanoCAD
Тот же динамический блок в nanoCAD

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

В nanoCAD же данный динамический блок «ломается»: при попытке внести изменения в представлении «Сбоку» некорректно изменяется длина, а при попытке выбора другого типа уголка геометрия сечения никак не изменяется.

 

Результат изменения длины уголка на представлении «Сбоку»
Результат изменения длины уголка на представлении «Сбоку»

Еще один пример некорректной работы автокадовского динамического блока в nanoCAD: текст не следует за перемещением выноски, а ручка, которая отвечает за изменение диаметра круга, лежит за пределами круга.

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

Открыть и отредактировать более простые автокадовские динамические блоки через «Редактор блоков» nanoCAD можно, но особого смысла в этом нет. На примере уже рассмотренного линейного обрыва (первый пример) мы увидим такой результат:

То есть в данном случае мы будем иметь возможность видеть только геометрию объекта: самих ручек и параметров, которые мы видели в Редакторе блоков AutoCAD, здесь мы не увидим. «Редактор блоков» nanoCAD не содержит инструментария по созданию геометрических параметров, поэтому мы не сможем здесь добавить новые геометрические параметры, а также отредактировать существующие.

Очевидно, существует вопрос совместимости динамических блоков при переносе из AutoCAD в nanoCAD. И универсального решения данной головоломки на сегодняшний день, пока нет.

Рабочий вариант — тестировать и проверять, как работает тот или иной динамический блок в nanoCAD. Если он корректно отрабатывает и результаты устраивают, то динамический блок можно использовать дальше в рабочих чертежах, создаваемых в nanoCAD.

Если же динамический блок «ломается» и некорректно работает, значит нужно создавать данный блок с нуля, учитывая возможности инструментов nanoCAD. Об этом дальше.

Стандартный функционал для создания динамических блоков в nanoCAD

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

Состояния видимости
Состояния видимости

Допустим, нам нужно создать условное обозначение дверного проёма с линией открывания двери. При этом мы хотим, чтобы ширина проёма (и длина полотна двери, соответственно) изменялась в зависимости выбранного типа двери.

Создаем геометрию как на рисунке и вызываем команду БЛОК, после чего указываем имя будущего блока и объекты, которые будут входить в блок (красные линии и зеленую дугу).

Далее через команду БЛОКРЕД открываем созданный блок в «Редакторе блоков». В группе «Видимость» нажимаем на кнопку «Состояния видимости» и нажимаем ОК. После этого графически указываем любое удобное положение ручки видимости и название параметра (назовём его ТипДвери_План).

В следующем диалоговом окне для параметра ТипДвери_План создаём необходимый набор состояний видимости. По умолчанию уже создано одно состояние видимости с наименованием «Состояние видимости0». Переименуем его в «Д21-9».

При создании новых состояний видимости (будем наименовывать их Д21-10 и Д21-11) заранее ставим переключатель в положение «Скрыть все существующие объекты».

После подтверждения в группе «Видимость» станет доступен выпадающий список состояний видимости. В Д21–9 у нас уже есть геометрия. Поэтапно переключаемся с помощью этого списка на следующие состояния видимости и добавляем в каждом примитивы с соответствующей геометрией (в Д21–10 ширина проёма будет равна 1000, в Д21–11 будет равна 1100). Также в группе «Видимость» можно включить опцию «Режим видимости», который позволит видеть все примитивы в блоке, независимо от включенного состояния видимости.

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

Но что же делать, если нужно создать сложные блоки с возможностью параметризации его геометрии? Здесь на помощь приходит Модуль «СПДС» и его инструмент, который называется «Мастер объектов».

Модуль «СПДС»

«Мастер объектов» — параметрический инструмент создания типовых объектов, позволяющий формировать правила поведения объекта в контексте сборки или заимствовать свойства существующих объектов из базы данных. Все объекты, созданные в «Мастере объектов», можно хранить в единой БД, обеспечивая тем самым централизованный доступ специалистов к этой базе данных.

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

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

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

 Далее переходим на вкладку СПДС – группа «Мастер объектов». Нажимаем кнопку «Точка вставки» для указания точки вставки будущего объекта. Далее нажимаем кнопку «Установить параметр» и поочередно выбираем проставленные размеры, чтобы назначить параметры, которые будут управлять размерами объекта (параметр для размера 200 назовём t, параметр для размера 900 – A, параметр для углового размера — v).

Снова нажимаем «Установить параметр» и выбираем горизонтальную зелёную линию. В диалоговом окне «Свойства объекта» в поле «Отображать» указываем 0 – это будет означать, что после создания объекта и его последующей вставки в чертеж данная линия не будет выводиться на экран.

Аналогично установим параметр на дуговую линию открывания двери: в поле «Отображать» напишем будущее название параметра, который будет управлять отображением дуги – dol, в поле «Тип линии» укажем 2 – чтобы данная дуга всегда создавалась тонкой линией.

Все необходимые манипуляции над эскизом нашего объекта мы выполнили. Теперь вызываем «Мастер объектов». Для создания нового объекта в диалоговом окне выбираем Объект – Новый, указываем папку, в которую будет сохранен объект, а также прописываем название объекта.

После этого находим в дереве Мастера объектов раздел «Исполнение» и правой кнопкой мыши вызываем контекстное меню, в котором выбираем «Добавить исполнение».

В правой части диалогового окна кликаем правой кнопкой мыши на появившееся исполнение и выбираем «Параметрическое распознавание вида», после чего выбираем указываем все необходимые объекты в пространстве модели, включая размеры.

После успешного распознавания на экран будет выведено данное сообщение:

Теперь можно приступить к созданию скрипта. Для начинающего пользователя предусмотрен инструмент «Мастер скриптов» – механизм для самостоятельного пошагового составления алгоритмов, управляющих поведением объекта в момент вставки и редактирования объекта. Данный механизм позволяет в большинстве случаев не прибегать к ручному написанию скрипта. Мастер скриптов вызывается в разделе «Мастер» — «Мастер скриптов».

На шаге «Основные свойства» заполняются основные данные скрипта. Здесь необходимо заполнить значения основных параметров: Описание объекта (описывает общее название объекта), Имя объекта (указанное значение будет отображаться в шапке диалогового окна выбора параметров объекта), Тип объекта (служит для идентификации объекта как принадлежащего к какой-либо группе, желательно заполнить латинскими символами) и Подтип объекта (определяет подтип конкретного ГОСТа, желательно заполнить латинскими символами). Без указания значений данных параметров Мастер скриптов не позволит перейти к следующему шагу.

Изменение параметров моментально отражается в скрипте в окне обзора:

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

  • Параметр А: зелёная галочка «Доступна для редактирования», описание параметра – Ширина проёма, значение по умолчанию – 900.

  • Параметр t: зелёная галочка «Доступна для редактирования», описание параметра – Толщина стены, значение по умолчанию – 200.

  • Параметр v: красная галочка «Используется», описание параметра – Угол, значение по умолчанию – 30.

Также на этом шаге добавим параметр, управляющий отображением дуги (dol). Для этого необходимо кликнуть на любой параметр, в поле ввода/редактирования названия параметра ввести значение dol и нажать на кнопку "Добавить параметр" (направленная вверх зеленая стрелка).

Установим для него следующие значения: красная галочка «Используется», описание параметра – Линия открывания двери, значение по умолчанию – 1.

Переходим на следующий шаг – «Вычисление параметров». На этом шаге устанавливается способ выбора значений параметров, используемых в скрипте. Оставляем для всех параметров стандартное значение «Отображать диалог» и переходим «Вперёд».

Условия отрисовки – здесь производится управление условиями отображения некоторых компонентов диалога редактирования объекта, в зависимости от параметров.

 Введём название переключателя - «Линия открывания двери». Добавим переключатель «Линия открывания двери» в список переключателей, нажав на направленную вверх зеленую стрелку. В поле «Включён» пропишем dol=1, в поле «Выключен» — dol=0. Поставим галочку «Включён по умолчанию». Таким образом можно отдельно управлять отображением дуговой линии открывания двери.

Добавим ещё 2 переключателя: «Угол 30» и «Угол 90», которые будут сгруппированы. Для «Угол 30» в поле «Включён» пропишем v=30, в поле «Выключен» — v!=30 (и поставим галочку «Включен по умолчанию»).

Для «Угол 90» в поле «Включён» пропишем v=90, в поле «Выключен» — v!=90 (галочку «Включен по умолчанию» здесь не ставим).

Таким образом в дальнейшем можно управлять углом открывания двери с помощью выпадающего списка с фиксированными значениями в 30 и 90 градусов.

Шаг «Рабочие плоскости» пропускаем, в нашем случае здесь ничего указывать не надо, переходим к шагу «Скрыть/показать параметры». На данном шаге указываем, какие параметры будут отображаться в диалоге вставки и редактирования объекта. Убираем галочки с параметров v и dol – значения данных параметров будем определять с помощью переключателей, поэтому их отображение в диалоге вставки и редактирования излишне.

Шаг «Условия отображения» пропускаем, а на шаге «Переключатели управления» дополнительно ставим галочку «Отрисовывать объект во время вставки», чтобы при выборе точки вставки и вектора направления объект отрисовывался на экране.

На шаге «Текущий скрипт» можно проверить скрипт и сохранить его. Созданный объект отобразится в базе элементов.

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

Кроме этого, так как на шаге «Свойства параметров» для параметров A и t мы ставили зелёную галочку «Доступна для редактирования», то значения данных параметров можно вводить и через панель «Свойства»:

При необходимости можно усложнить данный объект. Например, можно ввести табличные параметры, чтобы использовать фиксированные значения параметров:

После обновления скрипта при вставке нашего объекта в диалоге редактирования объекта можно будет выбирать заданные значения в разделе «Табличные параметры»:

Если нужно добавить ручку на объекте, с помощью которой графически можно будет управлять параметром t, то в таком случае нужно будет уже вручную дополнить скрипт. В нашем случае в Мастере объектов выбираем раздел «Методы» — Обработчики событий – SetGripPoint и прописываем следующий текст (выделен на рисунке):

function SetGripPoint {
NGrip = 2;
pntGrip0 = pntOrigin;
pntGrip1 = pntOrigin-t*vecPlane;
};

Теперь выбираем раздел «Методы» — Обработчики событий – OnMoveGripPoint и добавляем следующий текст (выделен на рисунке):

function OMoveGripPoint {
if (NMovingGrip == 0) {
pntOrigin = pntGrip0;
};

//ручка толщины стены
if (NMovingGrip == 1) {
t = max ((vecLen(pntGrip0 - pntGrip1)/rScl),1);
vecPlane = pntGrip1 + pntGrip0;
};
};

После сохранения скрипта на объекте появится дополнительная ручка, которую можно тянуть, чтобы изменять длины отрезков, которые связаны с параметром t:

Функционал Мастера объектов довольно обширный, здесь показаны лишь несколько примеров, как его можно использовать. Для его самостоятельного изучения есть необходимая документация. В разделе «Помощь» можно открыть подробную справку по работе с «Мастером объектов» или сразу перейти в раздел «Синтаксис языка скриптов». Также в данной справке собраны различные примеры с пошаговым описанием создания объекта, с помощью которых можно потренироваться и понять логику работы «Мастера объектов».

При этом в базу элементов Модуля «СПДС» уже включён обширный набор наиболее часто используемых условных обозначений, металлических профилей, сборных железобетонных изделий, деталей креплений и др.

Каждый объект имеет параметры, соответствующие стандарту, ГОСТу, серии. Поэтому с большей долей вероятности пользователь сможет найти для себя все нужные объекты в предоставляемой библиотеке.

Надеюсь, что помог вам данной статьей немного разобраться с нюансами работы с динамическими блоками в nanoCAD. ПО есть куда расти, особенно в части корректного переноса динамических блоков из AutoCAD. Но, если разобраться в деталях, то работать с динамическими блоками в nanoCAD вполне реально, особенно если речь идет о создании новых объектов.

Если возникли вопросы, смело оставляйте комментарии к статье, постараюсь оперативно ответить. Спасибо за внимание.

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


  1. Surrogate
    28.09.2023 16:05

    @o_kiryanov, спасибо за столь подробный разбор!!!

    Для любого блока в нанокаде, можно прописать скрипт?


    1. o_kiryanov Автор
      28.09.2023 16:05
      +1

      Добрый день!

      Скрипты создаются только для тех объектов, которые Вы создаете с помощью Мастера объектов модуля СПДС. Если блок создается в стандартном Редакторе блоков nanoCAD, то в таком случае скрипт не создается.