Летом прошлого года компания «Нанософт» представила новый многообещающий продукт nanoCAD Конструкторский BIM. Первая версия выпущена в режиме «альфа-доступа» или «раннего доступа» — то есть с предоставлением заинтересованным пользователям бесплатной годовой полнофункциональной лицензии с последующим сбором предложений по улучшению функционала программы.
Поскольку оценка и анализ средств автоматизации проектирования входят в мои прямые должностные обязанности, остаться в стороне от столь масштабного мероприятия я просто не мог. И вот программное обеспечение получено и установлено, выполнены несложные процедуры лицензирования, теперь можно начинать знакомство с возможностями отечественного конструкторского BIM-продукта.
В этом обзоре рассматривается лишь узкий аспект комплекса Конструкторский BIM, а именно возможность разработки параметрических узлов соединения металлоконструкций. Это направление выбрано не случайно — многолетний опыт внедрения и эксплуатации различных САПР выработал у автора глубокое убеждение, что успешность подобных программных продуктов во многом определяется доступностью средств создания разного рода библиотек объектов, с помощью которых можно расширить возможности программы, ускорить процесс проектирования и вообще несколько скрасить суровые будни проектировщика, избавив его от тех или иных рутинных операций. В различных САПР такие объекты называются по-разному: в AutoCAD это могут быть, к примеру, многовидовые блоки, в AutoCAD Architecture задача решается с помощью стилей архитектурных объектов, в AutoCAD MEP существуют библиотеки оборудования, в Revit — семейства
Параметрические объекты в nanoCAD создаются и редактируются с помощью специального инструмента — редактора параметрических элементов (рис. 1.2). Вызвать редактор можно соответствующим инструментом с панели Узлы и решения вкладки BIM-конструктор (рис. 1.1).
В качестве объекта для моделирования хотелось бы рассмотреть узел жесткого крепления колонны. Статья, посвященная созданию семейства такого узла для Revit (рис. 2), была опубликована во втором номере журнала «САПР и графика» за 2019 год. И сейчас, разрабатывая аналогичный объект в nanoCAD, мы сможем сравнить возможности создания новых конструкторских объектов в двух системах BIM-моделирования — хорошо знакомой зарубежной и новой отечественной.
Рассматриваемый узел состоит из пяти элементов: опорной плиты, двух траверс и двух анкерных плит. Начать, очевидно, следует с создания геометрии элементов. На следующем этапе мы постараемся сформировать набор параметров нашего узла, позволяющий управлять размерами и положением его элементов.
Итак, параметрический объект создан. В окне редактора он представлен в виде дерева подчиненных объектов (подобъектов). Набор возможных подобъектов приятно удивил: разного рода графические примитивы (трехмерные и планарные), массивы, группы, переменные
Очевидно, что основные элементы узла мы будем создавать с помощью команд группы 3D Примитив. Начнем с опорной плиты как наиболее простого элемента.
Геометрически опорная плита представляет собой параллелепипед, и проще всего было бы использовать соответствующий 3D-примитив, но самый простой путь не всегда самый правильный. Дело в том, что базовой точкой 3D-примитива Параллелепипед является один из его узлов — такова уж особенность этого подобъекта. А по мнению автора, куда удобнее, если точкой вставки опорной плиты будет геометрический центр ее нижней грани.
Поэтому опорную плиту мы создадим с помощью примитива Тело выдавливания. Для создания такого тела нам понадобится контур, который необходимо построить в пространстве модели.
Контур можно строить инструментами Полилиния, Прямоугольник по 2 точкам, Прямоугольник по 3 точкам
Предположим, что габариты плиты по умолчанию составляют 750×450×30 мм. Соответственно, строим прямоугольник шириной 750 и высотой 450 мм.
Теперь можно переходить к процессу создания 3D-примитива. В контекстном меню выбираем команду Тело выдавливания (рис. 4).
Результат выполнения команды представлен на рис. 5. По умолчанию тело выдавливания представляет собой цилиндр (рис. 5.1). Цилиндр нам не нужен, мы уже подготовили контур будущей плиты, поэтому смело очищаем объект от содержимого. Для этого в редакторе параметрических элементов открываем узел EXTRUSION (рис. 5.2) — так по умолчанию называется тело; выделяем подчиненный ему элемент ARC (рис. 5.3) — этот подэлемент характеризует контур объекта. Вызываем контекстное меню и удаляем основу геометрии цилиндра командой Удалить подобъект (рис. 5.4).
Добавляем к элементу EXTRUSION нашу геометрию. Выбрав элемент в редакторе, вызовем контекстное меню и выполним команду 2D Примитив → Выбрать 2D Профиль (рис. 6).
Далее следует стандартная процедура выбора контура в пространстве модели. Затем nanoCAD попросит указать базовую точку (укажем геометрический центр ранее построенного прямоугольника) и базовую ось (укажем ось X). В пространстве модели получаем 3D-модель опорной плиты.
Отредактируем свойства подобъекта EXTRUSION: в свойство Имя введем имя подобъекта (Плита_опорная), а в свойство Высота — высоту выдавливания (30 мм). Таким образом, мы получили первый из подобъектов нашего параметрического узла — прямоугольную плиту размерами 750×450×30 мм, с именем Плита_опорная (рис. 7).
Рассмотрим созданный объект поподробнее. Для начала раскроем подобъект Плита_опорная (рис. 7.1). Он также имеет подчиненные объекты — линии контура объекта выдавливания (рис. 7.2). Каждая из линий имеет собственный набор свойств — правда, этот набор представляется мне далеко не полным (рис. 8). Из геометрических атрибутов линейного объекта в окне свойств представлена только координата начальной точки. А ведь, к примеру, в нашем случае очень полезным оказалось бы такое свойство линии, как Длина. Надеюсь, в следующих версиях набор свойств будет расширен, а пока будем работать с тем, что есть.
Эти свойства нам нужно будет параметризовать. Других у нас просто нет. Сначала порассуждаем. У нас четыре линейных объекта. Начальные точки линий одновременно являются угловыми точками контура опорной плиты. Нам предстоит создать параметры, описывающие длину, ширину и толщину плиты, чтобы в дальнейшем управлять ее размерами. О толщине скажем чуть позже, а вот с параметрами длины и ширины нам нужно будет связывать именно значения координат угловых точек.
Начнем с создания набора параметров. Для этого в редакторе параметрического оборудования предусмотрен специальный (причем весьма интересный и удобный) инструмент — редактор параметров.
Редактор вызывается с помощью кнопки Свойства на инструментальной панели редактора параметрического оборудования (рис. 9).
Итак, перед нами окно редактора параметров — диалог Параметры (рис. 10).
Элементы параметрического объекта, к параметрам которых нам необходимо будет обращаться, являются подчиненными объектами. Пока у нас только один такой объект — опорная плита. Добавим ее с помощью соответствующего инструмента (рис. 10.1). После этого выделим созданный подобъект в дереве и перейдем к созданию параметров (рис. 10.2).
В следующем диалоге (рис. 11) отметим флажками имена нужных нам параметров. Для нашего случая это параметры Длина, Ширина и Толщина из группы Размеры.
Отмеченные параметры добавляются к списку диалога Параметры. Теперь у нас есть возможность задать им численные значения (рис. 12).
Прежде чем продолжить работу, необходимо четко понять, что свойства графического примитива, доступные в панели свойств (см. рис. 7), и параметры, созданные с помощью редактора параметров, — не одно и то же. И чтобы управлять геометрией объектов с помощью параметров, нам предстоит еще связать одно с другим. Сделать это нам поможет Мастер функций (рис. 14) — многофункциональный инструмент, обеспечивающий создание расчетных формул высокой сложности. В данном случае именно Мастер функций позволит нам построить набор формул для расчета геометрических параметров опорной плиты.
Запустить его можно для любого свойства подобъекта с помощью кнопки вызова, расположенной рядом с полем значения свойства (рис. 13).
Итак, мы выбрали одну из линий контура и вызвали Мастер функций для свойства X-координата, чтобы связать его значение с параметром Длина.
При первом запуске редактор функций пуст (рис. 14.1). В процессе описания функции именно в него будут вводиться ее аргументы, операторы
Сейчас нам как раз необходимо обратиться к параметрам текущего элемента (опорной плиты), поэтому смело жмем кнопку, отмеченную на рис. 14 цифрой 3.
Открывается новый диалог, Запрос к структуре элемента, где нужно просто раскрыть дерево параметров и выбрать нужную ветку (рис. 15). Выберем параметр Длина.
Закрываем диалог Запрос к структуре элемента кнопкой ОК. В окне Мастера функций остается строка child.[DIM_LENGTH]. Прямо в текстовом поле редактора допишем ее до следующей формулы:
child.[DIM_LENGTH]*(-1)/2
С помощью этой формулы мы связали X-координату точки с длиной опорной плиты, и теперь при изменении длины начальная точка всегда будет сдвигаться влево по оси X на расстояние, равное половине длины плиты.
Аналогично поступим со свойством Y-координата, задав ему значение
child.[DIM_WIDTH]/2
Теперь в панели свойств свойства X-координата и Y-координата обозначены значком функции (рис. 16), свидетельствующим о том, что значения этих свойств имеют расчетный характер.
Выделим в редакторе объект Плита_опорная и, по аналогии с описанной процедурой, свяжем свойство Высота с параметром Толщина.
Теперь размеры опорной плиты будут изменяться в зависимости от значений связанных с ними параметров.
Переходим к созданию других элементов узла. Начнем с траверс. Здесь ситуация посложнее. Во-первых, траверс в нашем узле целых две. Во-вторых, траверсы должны располагаться в продольном направлении плиты, на равном расстоянии от ее геометрического центра (см. рис. 2). Расстояние между траверсами определяется шириной сечения колонны. Соответственно, при необходимости это расстояние должно меняться.
Полагаю, тут разумнее всего использовать подэлемент Круговой массив. Он добавляется к структуре объекта с помощью команды Массив → Круговой контекстного меню (рис. 17).
Свойства массива зададим в соответствии с табл. 1.
Таблица 1. Свойства кругового массива
Свойство |
Значение |
Имя |
Траверсы |
Угол |
180 |
X-координата |
0 |
Y-координата |
0 |
Z-координата |
0 |
Уровней |
1 |
Элементов |
2 |
Массив траверс создан, но пока пуст. На следующем этапе необходимо создать подчиненный массиву элемент Траверса. Процедура создания траверсы мало чем отличается от процедуры создания опорной плиты: создание примитива Тело выдавливания, удаление контура по умолчанию, импорт контура из полилинии. Тем не менее одно, но существенное отличие все-таки есть. Для того чтобы создать элемент массива, контекстное меню необходимо вызывать при выделенном в редакторе элемента массиве Траверсы (рис. 18.1). Как выглядит созданный элемент, показано на рис. 18.2.
Чтобы корректно расположить траверсы в пространстве, воспользуемся кнопками Повернуть по оси на панели инструментов редактора (рис. 19).
Свойства подэлемента Траверса задаем на основе табл. 2.
Таблица 2. Свойства подэлемента Траверса
Свойство |
Значение |
Имя |
Траверса |
Высота |
30 |
Базовая точка |
|
X-координата |
0 |
Y-координата |
150 |
Z-координата |
30 |
Как после всех этих операций будет выглядеть объект в пространстве модели, показано на рис. 20.
Размеры траверсы будут регулироваться пятью параметрами: Высота, Толщина, Длина_подошвы, Вылет_консоли, Высота_фаски.
Для объекта Траверса вызовем уже знакомый диалог Параметры, сформируем набор параметров и зададим для них значения по умолчанию (рис. 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).
И, как в двух предшествующих случаях, свяжем свойства линий контура с параметрами анкерной плиты (табл. 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.
Осталось добавить отверстия под анкерные болты. Добавим к узлу еще один массив, на этот раз прямоугольный (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).[Вылет_консоли]*2-child (3).[DIM_WIDTH] |
Между уровнями |
0 |
Между строками |
child (3).[Интервал_отверстий] |
В массив поместим объект Цилиндр (CYLINDER), свойства которого установим так, как показано в табл. 7.
Таблица 7. Свойства прямоугольного массива
Имя свойства |
Значение (формула) |
Геометрия |
|
Высота |
child (3).[DIM_THICKNESS] |
Радиус |
child (3).[Диаметр_отверстия]/2 |
Чтобы отверстия вырезались из анкерной плиты, выделим в редакторе массив Гнезда и выполним команду контекстного меню Вычесть подобъект (рис. 24).
Массив отметится в дереве значком «минус», а к параметрическому объекту (в редакторе) добавятся гнезда для анкерных болтов (рис. 25).
Впоследствии работу с параметрами только что созданного объекта можно продолжить — к примеру, поставить габариты элементов узла в зависимость от размеров профиля колонны. К сожалению, рамки краткого обзора просто не позволят нам рассмотреть все возможности параметризации, тем более что здесь многое зависит от фантазии разработчика.
Для многократного использования параметрического объекта его можно добавить в библиотеку Узлы и готовые решения. Для этого достаточно запустить инструмент Добавить объект в библиотеку (рис. 26.1). После того как объект выбран в пространстве модели, он помещается в библиотеку решений (рис. 26.2).