Как работать с динамическими блоками в Платформе nanoCAD и переносить объекты из AutoCAD
27 августа 2024
Олег Кирьянов
Олег Кирьянов
Руководитель отдела внедрения и инженерной поддержки САПР ООО «Системный софт»

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

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

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

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

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

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

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

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

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

Первый пример: линейный обрыв. Здесь представлены один линейный параметр, один параметр поворота, две линейных «ручки» и одна «ручка» поворота (рис. 1).

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

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

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

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

Рис. 3.
Рис. 3.
Неравнополочный уголок

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

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

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

Рис. 5.
Рис. 5.
Пример некорректной работы

Проблему усугубляет тот факт, что при попытке, применяя Редактор блоков, открыть и отредактировать в nanoCAD сложные в исполнении динамические блоки, пользователь увидит сообщение, показанное на рис. 6.

Рис. 6.
Рис. 6.
Рис. 6. Сообщение об ошибке

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

Рис. 7.
Рис. 7.
Линейный обрыв

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

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

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

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

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

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

Рис. 8.
Рис. 8.
Состояния видимости

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

Рис. 9.
Рис. 9.
Рис. 9. Создание геометрии

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

Рис. 10.
Рис. 10.
Рис. 10. Определение блока

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

Рис. 11.
Рис. 11.
Преобразование блока

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

Рис. 12.
Рис. 12.
Состояние видимости

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

Рис. 13.
Рис. 13.
Новое состояние видимости

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

Рис. 14.
Рис. 14.
Режим видимости

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

Рис. 15.
Рис. 15.
Динамический объект

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

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

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

Рис. 16.
Рис. 16.
База элементов

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

Рис. 17.
Рис. 17.
Табличные параметры
Рис. 18.
Рис. 18.
Мастер скриптов
Рис. 19.
Рис. 19.
Примеры форм

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

Рис. 20.
Рис. 20.
Рис. 20. Создание геометрии объекта

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

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

Рис. 21.
Рис. 21.
Установка параметра Точка вставки

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

Рис. 22.
Рис. 22.
Свойства объекта

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

Рис. 23.
Рис. 23.
Свойства объекта

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

Рис. 24.
Рис. 24.
Новый объект

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

Рис. 25.
Рис. 25.
Мастер объектов. Добавление исполнения

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

Рис. 26.
Рис. 26.
Мастер объектов. Выбор параметрического распознавания вида

После успешного распознавания появится сообщение, показанное на рис. 27.

Рис. 27.
Рис. 27.
Сообщение об успешном создании детали

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

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

Изменение параметров сразу же отображается в окне обзора скрипта (рис. 28).

Рис. 28.
Рис. 28.
Мастер скриптов. Основные свойства

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

  • параметр А: зеленая галочка Доступен для редактирования, описание параметра: Ширина проема, значение по умолчанию – 900;
  • параметр t: зеленая галочка Доступен для редактирования, описание параметра: Толщина стены, значение по умолчанию – 200;
  • параметр v: красная галочка Используется, описание параметра: Угол, значение по умолчанию – 30.

Рис. 29.
Рис. 29.
Мастер скриптов. Свойства параметров

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

Рис. 30.
Рис. 30.
Мастер скриптов. Добавление параметра, управляющего отображением дуги

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

Рис. 31.
Рис. 31.
Мастер скриптов. Установленные значения

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

Рис. 32.
Рис. 32.
Мастер скриптов. Вычисление параметров

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

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

Рис. 33.
Рис. 33.
Мастер скриптов. Условия отрисовки

Добавим еще два переключателя: «Угол 30» и «Угол 90», которые будут сгруппированы (рис. 34).

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

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

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

Рис. 34.
Рис. 34.
Мастер скриптов. Добавление переключателей «Угол 30» и «Угол 90»

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

Рис. 35.
Рис. 35.
Мастер скриптов. Скрыть/показать параметры

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

Рис. 36.
Рис. 36.
Мастер скриптов. Переключатели управления

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

Рис. 37.
Рис. 37.
Созданный объект в базе элементов

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

Рис. 38.
Рис. 38.
Задание значений параметров

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

Рис. 39.
Рис. 39.
Ввод значения параметров через панель Свойства

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

Рис. 40.
Рис. 40.
Фиксированные значения параметров

После обновления скрипта при вставке нашего объекта можно будет выбирать заданные значения в диалоге редактирования объекта (раздел Табличные параметры) – (рис. 41).

Рис. 41.
Рис. 41.
Табличные параметры

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

function SetGripPoint {

NGrip = 2;

pntGrip0 = pntOrigin;

pntGrip1 = pntOrigin-t*vecPlane;

};

Рис. 42.
Рис. 42.
Обработчик SetGripPoint

Далее выбираем раздел Методы  Обработчики событий  OnMoveGripPoint и добавляем следующий текст (выделен на рис. 43):

function OMoveGripPoint {

if (NMovingGrip == 0) {

pntOrigin = pntGrip0;

};

//ручка толщины стены

if (NMovingGrip == 1) {

t = max ((vecLen(pntGrip0 - pntGrip1)/rScl),1);

vecPlane = pntGrip1 + pntGrip0;

};

};

Рис. 43.
Рис. 43.
Обработчик OnMoveGripPoint

После сохранения скрипта на объекте появится дополнительная «ручка» (рис. 44), посредством которой можно изменять длины отрезков, связанных с параметром t.

Рис. 44.
Рис. 44.
Дополнительная «ручка»

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

Рис. 45.
Рис. 45.
Функционал Мастера объектов

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

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

Надеюсь, что статья помогла вам лучше понять нюансы работы с динамическими блоками в Платформе nanoCAD.

Этот сайт использует cookies. Пользуясь сайтом, вы даете согласие на обработку ваших персональных данных. Подробнее