Летом уходящего года компания Nanosoft представила новый многообещающий продукт — NanoCAD Конструкторский BIM. Первая версия продукта выпущена в режиме «альфадоступа», или «раннего доступа», — то есть с предоставлением заинтересованным пользователям бесплатной годовой лицензии на полную версию с последующим сбором предложений по улучшению функционала программы.
Поскольку оценка и анализ средств автоматизации проектирования входит в прямые должностные обязанности автора, остаться в стороне от столь масштабного мероприятия он просто не мог. И вот программное обеспечение получено и установлено, выполнены несложные процедуры лицензирования, и теперь можно начинать знакомство с возможностями отечественного конструкторского BIMпродукта.
В данном обзоре рассматривается лишь узкий аспект комплекса Конструкторский BIM, а именно — возможность разработки параметрических узлов соединения металлоконструкций. Это направление выбрано неслучайно — многолетний опыт эксплуатации и внедрения различных САПР выработал у автора глубокое убеждение, что успешность подобных программных продуктов во многом определяется доступностью средств создания разного рода библиотек объектов, с помощью которых можно расширить возможности программы, ускорить процесс проектирования и, вообще, немного скрасить суровые будни проектировщика, избавив его от какихто рутинных операций. В различных САПР такие объекты называются поразному: в AutoCAD это могут быть, к примеру, многовидовые блоки, в AutoCAD Architecture эта задача решается с помощью стилей архитектурных объектов, в AutoCAD MEP существуют библиотеки оборудования, в Revit — семейства и т.п. В NanoCAD также предусмотрен класс подобных объектов, который так и называется: параметрический объект. Именно с ним сегодня и предстоит первое знакомство.
Параметрические объекты в NanoCAD создаются и редактируются с помощью специального инструмента — Редактора параметрических элементов (рис. 1). Вызвать Редактор можно соответствующим инструментом с панели Узлы и решения, вкладки BIMконструктор.
Рис. 1. Кнопка вызова Редактора параметрических элементов (1); окно Редактора (2)
В качестве объекта для моделирования мне хотелось бы рассмотреть узел жесткого крепления колонны (рис. 2). Статья, посвященная созданию семейства такого узла для Revit, была опубликована в февральском номере журнале «САПР и графика» за 2019 год [1]. И сейчас, создавая аналогичный объект в NanoCAD, мы получим возможность сравнить возможности создания новых конструкторских объектов двух систем BIMмоделирования: одной — хорошо знакомой, и второй — новой, отечественной.
Рис. 2. Узел жесткого крепления колонны в проекте Revit
Рассматриваемый узел состоит из пяти элементов: опорной плиты, двух траверс и двух анкерных плит. Начать, очевидно, следует с создания геометрии элементов. На следующем этапе мы постараемся сформировать набор параметров нашего узла, позволяющий управлять размерами и положением его элементов.
Итак, параметрический объект создан. В окне Редактора он представлен в виде дерева подчиненных объектов (подобъектов). Набор возможных подобъектов приятно удивил: разного рода графические примитивы (трехмерные и планарные); массивы, группы, переменные и т.п. Пока же наш объект пуст и нам только предстоит наполнить его содержанием. Большинство операций выполняется с помощью контекстного меню редактора. Начнем с создания геометрии элементов.
Очевидно, что основные элементы узла мы будем создавать с помощью команд группы 3D Примитив. Начнем с опорной плиты, как наиболее простого элемента (рис. 3).
Рис. 3. Контур опорной плиты в пространстве модели
Геометрически опорная плита представляет собой параллелепипед, и проще всего было бы использовать соответствующий 3Dпримитив, но самый простой путь не всегда самый правильный. Дело в том, что базовой точкой 3Dпримитива Параллелепипед является один из его узлов — такова уж особенность этого подобъекта. А, по мнению автора, куда удобнее, если точкой вставки опорной плиты будет геометрический центр ее нижней грани.
Поэтому опорную плиту мы создадим с помощью примитива Тело выдавливания. Для создания такого тела нам понадобится контур, который необходимо построить в пространстве модели.
Контур можно построить инструментами Полилиния, Прямоугольник по 2 точкам, Прямоугольник по 3 точкам, и т.п. — это не принципиально. Самое главное, чтобы контур был построен объектом типа Полилиния. Импорт в 3D Примитив контура, построенного, скажем, с помощью отрезков, попросту невозможен.
Предположим, что габариты плиты, по умолчанию, будут 750×450×30 мм. Соответственно строим прямоугольник шириной 750 и высотой 450 мм.
Теперь можно переходить к процессу создания 3Dпримитива. В контекстном меню выбираем команду Тело выдавливания (рис. 4).
Рис. 4. Контекстное меню редактора параметрических объектов. В группе 3D примитив выбран пункт Тело выдавливания
Результат выполнения команды представлен на рис. 5. По умолчанию, тело выдавливания представляет собой цилиндр (рис. 5.1). Нам цилиндр не нужен, мы уже подготовили контур будущей плиты, поэтому смело очищаем объект от содержимого. Для этого в редакторе параметрических элементов открываем узел EXTRUSION (так, по умолчанию, называется наше тело), выделяем подчиненный ему элемент ARC (рис. 5.3) — этот подэлемент характеризует контур объекта, — вызываем контекстное меню и удаляем основу геометрии цилиндра командой Удалить подобъект (рис. 5.4).
Рис. 5. Очистка элемента Тело выдавливания: 1 — элемент в пространстве модели; 2 — имя элемента в редакторе параметрического объекта; 3 — подобъект-контур;
4 — команда удаления подобъекта
Добавляем к элементу EXTRUSION нашу геометрию. Выбрав элемент в редакторе, вызовем контекстное меню и выполним команду 2D Примитив -> Выбрать 2D Профиль (рис. 6).
Рис. 6. Импорт профиля из модели
Далее следует стандартная процедура выбора контура в пространстве модели. Затем NanoCAD попросит указать базовую точку (укажем геометрический центр построенного ранее прямоугольника) и базовую ось (укажем ось X). В пространстве модели получаем 3Dмодель опорной плиты.
Отредактируем свойства подобъекта EXTRUSION: в свойство Имя введем имя подобъекта (Плита_опорная), а в свойство Высота — высоту выдавливания (30 мм). Таким образом, мы получили первый из подобъектов нашего параметрического узла — прямоугольную плиту размерами 750×450×30 мм с именем Плита_опорная (рис. 7).
Рис. 7. Подобъект Плита_опорная в редакторе параметрических объектов (1); линии контура подобъекта (2); свойства подобъекта (3); геометрия подобъекта в окне модели (4)
Рассмотрим созданный объект поподробнее. Для начала, раскроем подобъект Плита_опорная (рис. 7.1). Он также имеет подчиненные объекты — линии контура объекта выдавливания (рис. 7.2). Каждая из линий также имеет собственный набор свойств. Правда, этот набор представляется автору далеко не полным (рис. 8). Из геометрических атрибутов линейного объекта в окне свойств представлена только координата начальной точки. А ведь, к примеру, в нашем случае очень полезным оказалось бы такое свойство линии, как Длина. Надеюсь, в следующих версиях набор свойств будет расширен, а пока будем работать с тем, что есть.
Рис. 8. Свойства линейного объекта
Именно эти свойства нам нужно будет запараметризовать. Других у нас просто нет. Сначала порассуждаем. У нас четыре линейных объекта. Начальные точки линий являются одновременно угловыми точками контура опорной плиты. Нам предстоит создать параметры, описывающие длину, ширину и толщину плиты, чтобы в дальнейшем управлять ее размерами. О толщине скажем чуть позже, а вот с параметрами длины и ширины нам нужно будет связывать именно значения координат угловых точек.
Начнем с создания набора параметров. Для этого в редакторе параметрических объектов предусмотрен специальный (и весьма интересный и удобный) инструмент — редактор параметров.
Редактор вызывается с помощью кнопки Свойства на инструментальной панели редактора параметрических объектов (рис. 9).
Рис. 9. Инструмент Свойства редактора параметрических объектов
Рис. 10. Диалог Параметры. Цифрами обозначены: инструмент Создать подчиненный элемент (1); инструмент Добавить параметр из списка (2)
Итак, перед нами окно редактора параметров — диалог Параметры (рис. 10).
Подчиненными объектами являются элементы параметрического объекта, к параметрам которых нам необходимо будет обращаться. Пока у нас только один такой объект — опорная плита. Добавим ее с помощью соответствующего инструмента (рис. 10.1). Теперь выделим созданный подъобъект в дереве и перейдем к созданию параметров (рис. 10.2).
В следующем диалоге (рис. 11) отметим флажками имена нужных нам параметров. В данном случае это параметры Длина, Ширина и Толщина из группы Размеры.
Рис. 11. Выбор параметров подчиненного объекта
Отмеченные параметры добавляются к списку параметров диалога Параметры. Теперь у нас есть возможность задать им численные значения (рис. 12).
Рис. 12. Параметры подчиненного объекта
Прежде чем продолжить работу, необходимо четко понять, что свойства графического примитива, доступные в панели свойств (см. рис. 7), и параметры, созданные с помощью редактора параметров, — это не одно и то же. И чтобы управлять геометрией объектов с помощью параметров, нам предстоит еще связать одно с другим. Сделать это нам поможет Мастер функций. Этот многофункциональный инструмент позволяет создавать расчетные формулы высокой сложности. В данном случае именно Мастер функций позволит нам построить набор формул для расчета геометрических параметров опорной плиты.
Запустить Мастер функций можно для любого свойства подобъекта с помощью кнопки вызова, расположенной рядом с полем значения свойства (рис. 13).
Рис. 13. Кнопка вызова Мастера функций
Итак, мы выбрали одну из линий контура и вызвали Мастер функций для свойства Xкоордината, чтобы связать его значение с параметром Длина.
При первом запуске редактор функций (рис. 14.1) пуст. В процессе описания функции именно в него будут вводиться ее аргументы, операторы и т.п. А обращаться к параметрам и объекта, и подобъектов мы будем с помощью инструментов Добавить параметр (рис. 14.2) и Добавить запрос к текущему элементу (рис. 14.3).
Рис. 14. Окно мастера функций: 1 — редактор функций; 2 — инструмент Добавить параметр;
3 — инструмент Добавить запрос к текущему элементу
Сейчас нам необходимо как раз обратиться к параметрам текущего элемента (опорной плиты), поэтому смело жмем кнопку, отмеченную на рис. 14 цифрой 3.
Открывается новый диалог — Запрос к структуре элемента, где нужно просто раскрыть дерево параметров и выбрать нужную ветку (рис. 15). Мы выберем параметр Длина.
Рис. 15. Выбор параметров подобъекта
Закрываем кнопкой ОК диалог Запрос к структуре. В окне Мастера функции остается строка: child.[DIM_LENGTH]. Прямо в текстовом поле редактора допишем ее до следующей формулы:
child.[DIM_LENGTH]*(–1)/2
С помощью этой формулы мы связали Xкоординату точки с длиной опорной плиты, и теперь при изменении длины начальная точка всегда будет сдвигаться влево по оси X на расстояние, равное половине длины плиты.
Аналогично поступим со свойством Yкоординаты, задав ей значение:
child.[DIM_WIDTH]/2
Теперь в панели свойств свойства Xкоордината и Yкоордината обозначены значком функции (рис. 16), свидетельствующим о том, что значения этих свойств имеют расчетный характер.
Рис. 16. Обозначения расчетных свойств
Выделим в редакторе объект Плита_опорная и по аналогии с описанной процедурой свяжем свойство Высота с параметром Толщина.
Теперь размеры опорной плиты будут изменяться в зависимости от значений связанных с ними параметров.
Переходим к созданию других элементов узла. Начнем с траверс. Здесь ситуация посложнее. Вопервых, траверс в нашем узле целых две. Вовторых, траверсы должны располагаться в продольном направлении плиты, на равном расстоянии от ее геометрического центра (см. рис. 2). Расстояние между траверсами определяется шириной сечения колонны. Соответственно, это расстояние при необходимости должно меняться.
Полагаю, здесь разумнее всего использовать подэлемент Круговой массив (рис. 17). Как и рассмотренный ранее примитив, массив добавляется к структуре объекта с помощью команды Массив -> Круговой контекстного меню.
Рис. 17. Создание кругового массива
Свойства массива зададим в соответствии с табл. 1.
Таблица 1. Свойства кругового массива
Свойство |
Значение |
Имя |
Траверсы |
Угол |
180 |
Xкоордината |
0 |
Yкоордината |
0 |
Zкоордината |
0 |
Уровней |
1 |
Элементов |
2 |
Массив траверс создан, но пока пуст. На следующем этапе необходимо создать подчиненный массиву элемент Траверса. Процедура создания траверсы мало отличается от процедуры создания опорной плиты (создание примитива Тело выдавливания, удаление контура по умолчанию, импорт контура из полилинии). Однако одно, но существенное отличие всетаки есть. Для того чтобы создать элемент массива, контекстное меню необходимо вызывать при выделенном в редакторе элементе массива Траверсы (рис. 18.1). Как выглядит созданный элемент, показано на рис. 18.2.
Рис. 18. Создание элемента кругового массива (1); элемент массива в окне редактора (2)
Дл того чтобы корректно расположить траверсы в пространстве, воспользуемся кнопками Повернуть по оси… на панели инструментов редактора (рис. 19).
Рис. 19. Инструменты поворота подобъекта
Свойства подэлемента Траверса установим в соответствии с табл. 2.
Таблица 2. Свойства подэлемента Траверса
Свойство |
Значение |
Имя |
Траверса |
Высота |
30 |
Базовая точка |
|
Xкоордината |
0 |
Yкоордината |
150 |
Zкоордината |
30 |
Как в результате перечисленных операций будет выглядеть объект в пространстве модели, показано на рис. 20.
Рис. 20. Опорная плита с траверсами
Размеры траверсы будут регулироваться пятью параметрами: Высота, Толщина, Длина_подошвы, Вылет_консоли, Высота_фаски.
Для объекта Траверса вызовем уже знакомый диалог Параметры, сформируем набор параметров и зададим для них значения по умолчанию (рис. 21).
Рис. 21. Параметры объекта Траверса
Свяжем свойства линий контура траверс с ее параметрами. Правда, здесь работы будет побольше, чем с плитой, что объяснимо: в контуре траверсы простонапросто больше линий.
Выше уже говорилось о сложности идентификации линий контура в редакторе. Было бы куда удобнее, если бы при выделении линии в дереве она подсвечивалась в пространстве модели. Надеюсь, в дальнейшем разработчики обратят на это внимание. А пока в качестве идентификатора будем использовать комбинацию из свойств группы Точка: КоординатаX и КоординатаY. И значения этих же свойств мы будем задавать с помощью формул, построенных в Мастере функций (табл. 3).
Таблица 3. Свойства линий контура элемента Траверса
Свойства группы Точка |
Значение (формула) для свойства |
||
X |
Y |
Xкоордината |
Yкоордината |
–375 |
0 |
–1*child(2).[Длина_подошвы]/2 |
0 |
375 |
0 |
child(2).[Длина_подошвы]/2 |
|
–525 |
320 |
1*(child(2).[Длина_подошвы]/2+child(2).[Вылет_консоли]) |
child(2).[DIM_HEIGHT] |
525 |
320 |
child(2).[Длина_подошвы]/2+child(2).[Вылет_консоли] |
child(2).[DIM_HEIGHT] |
–525 |
200 |
1*(child(2).[Длина_подошвы]/2+child(2).[Вылет_консоли]) |
child(2).[ВЫСОТА_ФАСКИ] |
525 |
200 |
child(2).[Длина_подошвы]/2+child(2).[Вылет_консоли] |
child(2).[ВЫСОТА_ФАСКИ] |
Чтобы добавить к узлу анкерные плиты, нам также придется создать круговой массив, содержащий два подэлемента Плита_анкерная. Процедура эта, в принципе, не отличается от создания массива траверс, с той разницей, что в свойство базовой точки Zкоордината кругового массива мы поместим другую формулу:
child.[DIM_THICKNESS]+child(2).[DIM_HEIGHT],
где child.[DIM_THICKNESS] — толщина опорной плиты, child(2).[DIM_HEIGHT] — высота траверсы. Таким образом, анкерные плиты оказываются жестко привязаны к верхнему основанию траверсы.
Как и в случае с опорной плитой, для анкерной плиты, с помощью редактора параметров, добавим размеры анкерной плиты (Длина, Ширина и Толщина). Кроме того, нам понадобятся параметры, описывающие положение и размер отверстий под анкерные болты — Диаметр_отверстия и Интервал_отверстий (рис. 22).
Рис. 22. Параметры анкерной плиты
Как и в двух предшествующих случаях, свяжем свойства линий контура с параметрами анкерной плиты (табл. 4).
Таблица 4. Свойства линий контура элемента Плита_анкерная
Свойства группы Точка |
Значение (формула) для свойства |
||
X |
Y |
Xкоордината |
Yкоордината |
–80 |
225 |
–1*child(3).[DIM_WIDTH]/2 |
child(3).[DIM_LENGTH]/2 |
80 |
225 |
child(3).[DIM_WIDTH]/2 |
child(3).[DIM_LENGTH]/2 |
80 |
–225 |
child(3).[DIM_WIDTH]/2 |
–1*child(3).[DIM_LENGTH]/2 |
–80 |
–225 |
–1*child(3).[DIM_WIDTH]/2 |
–1*child(3).[DIM_LENGTH]/2 |
Теперь положение оконтуривающих линий анкерной плиты будет изменяться в зависимости от значения свойств Длина и Ширина этого подобъекта.
Похожим образом поступаем с координатами точки вставки анкерной плиты (табл. 5).
Таблица 5. Формулы парметризации точки вставки анкерной плиты
Свойства базовой точки |
Значение (формула) для свойства |
Xкоордината |
–child(2).[Длина_подошвы]/2+child(2).[Вылет_консоли] child(3).[DIM_WIDTH]/2 |
Yкоордината |
0 |
Zкоордината |
0 |
Таким образом, геометрия параметрического узла приобретает вид, представленный на рис. 23.
Рис. 23. Параметрический узел в окне модели
Осталось добавить отверстия под анкерные болты. Добавим к узлу еще один массив, на этот раз прямоугольный (ARRAY_RECT). Свойства массива зададим в соответствии с табл. 6.
Таблица 6. Свойства прямоугольного массива
Имя свойства |
Значение (формула) |
Общие |
|
Имя |
Гнезда |
Базовая точка |
|
Xкоордината |
–1*(child(2).[Длина_подошвы]/2+child(2).[Вылет_консоли]child(3).[DIM_WIDTH]/2) |
Yкоордината |
–1*child(3).[Интервал_отверстий]/2 |
Zкоордината |
child(2).[DIM_HEIGHT]+child.[DIM_THICKNESS] |
Количество |
|
Столбцов |
2 |
Уровней |
1 |
Строк |
2 |
Расстояние |
|
Между столбцами |
child(2).[Длина_подошвы]+child(2).[Вылет_консоли]* |
Между уровнями |
0 |
Между строками |
child(3).[Интервал_отверстий] |
В массив поместим объект Цилиндр (CYLINDER), свойства которого установим в соответствии с табл. 7.
Таблица 7. Свойства объекта Цилиндр
Имя свойства |
Значение (формула) |
Геометрия |
|
Высота |
child(3).[DIM_THICKNESS] |
Радиус |
child(3).[Диаметр_отверстия]/2 |
Для того чтобы отверстия вырезались из анкерной плиты, выделим в редакторе массив Гнезда и выполним команду контекстного меню Вычесть подобъект (рис. 24).
Рис. 24. Вычитание подобъекта
Массив в дереве отметится значком «минус», а к параметрическому объекту в редакторе добавятся гнезда для анкерных болтов (рис. 25).
Рис. 25. Вид узла в пространстве модели
Впоследствии можно продолжить работу с параметрами только что созданного объекта, к примеру поставить габариты элементов узла в зависимость от размеров профиля колонны. К сожалению, рамки краткого обзора всех возможностей параметризации нам рассмотреть просто не позволят, тем более что здесь многое зависит от фантазии разработчика.
Для многократного использования параметрического объекта его можно добавить в библиотеку Узлы и готовые решения. Для этого достаточно просто запустить инструмент Добавить объект в библиотеку (рис. 26.1). После того как объект выбран в пространстве модели, он помещается в библиотеку решений (рис. 26.2).
Рис. 26. Инструмент Добавить объект в библиотеку (1); параметрический объект в библиотеке решений (2)
Литература:
Семейство узла жесткого крепления колонны в Revit. /А. Коноваленко // САПР и графика. 2019. № 2.