Найти в Дзене
Эксперименты с Renga

2. Нестандартное оборудование с портами через IFC (Renga). Геометрическое представление объектов и вентилятор-невидимка

Оглавление

2.1. Очевидное лежит на поверхности

Вы уже, наверное, обращали внимание, что при экспорте из Renga в IFC любого стандартного оборудования (задается через стандартные типы объектов Renga, уже имеющих точки присоединения, т.е. порты, а также собственное УГО для обозначения их на планах и аксонометрических видах) и дальнейшего его импорта в Renga через IFC (просто выбираем в меню "Открыть" не файл проекта или шаблона Renga, а файл в формате *.ifc) можно увидеть, что Renga замечательно отображает данное оборудование сразу с портами.

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

Или все-таки нет? Не отображаются порты (точки присоединения) при обратном импорте IFC в Renga? Значит вам надо просто научиться "готовить блюдо" так, чтобы Renga была "сыта и довольна". Идем дальше....

2.2. "Предрасположенность" Renga к распознаванию в импортируемом файле IFC оборудования только с определенной геометрией

Вначале попробуем разобраться, как Renga экспортирует/импортирует объекты через IFC (с какой геометрией, параметрами/свойствами и портами). Версия импорта у Renga - IFC4. И нам эта информация чуть позже пригодиться для пояснения.

Подготовка к экспериментам

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

Слева направо: "ванна чугунная" (санитарно-техническое оборудование), "теплообменник" (оборудование) и "вентилятор радиальный №5" (вентиляционное оборудование). Видны порты и отображение твердотельной геометрии.
Слева направо: "ванна чугунная" (санитарно-техническое оборудование), "теплообменник" (оборудование) и "вентилятор радиальный №5" (вентиляционное оборудование). Видны порты и отображение твердотельной геометрии.
Отображение оборудование на плане уровня
Отображение оборудование на плане уровня

2.2.1. Эксперимент № 1 (почему некоторые из вас не видят то, о чем я написал выше)

Проверяем вначале, чтобы настройки экспорта геометрического представления объектов в Renga были по умолчанию (Reference View 1.2) + файл сопоставления типов также не изменялся (не буду перечислять, смотрим раздел "Настройки экспорта в международный обменный формат IFC"). Делаем экспорт в IFC и загружаем обратно данный файл. Выделяем объекты и видим.....

Все три объекта показаны выделенными! Порты и твердотельная геометрия отсутствует, видны только базовые точки. И Renga не импортировала объекты, как оборудование (не распознала как свои объекты), хотя в свойствах объектов присутствует IfcEntityType с указанием типа/класса IFC.
Все три объекта показаны выделенными! Порты и твердотельная геометрия отсутствует, видны только базовые точки. И Renga не импортировала объекты, как оборудование (не распознала как свои объекты), хотя в свойствах объектов присутствует IfcEntityType с указанием типа/класса IFC.
Вот так теперь выглядит оборудование на плане уровня.
Вот так теперь выглядит оборудование на плане уровня.

Renga не смогла распознать через реэкспорт IFC свои же объекты? При чем информация по портам у оборудования корректно записана в файл IFC (пока поверьте мне.... до момента, когда научитесь работать с IFC). Ну как же так?
Пока не будем торопиться с выводами
, а просто возьмем себе на заметку: включение тесселяции (создание полигональных или треугольных мешей/сеток) нам не помогло.

Вот эта настройка по умолчанию.
Вот эта настройка по умолчанию.
Сразу отмечу на возможный вопрос от коллег: анализ файлов при экспорте в IFC с включенной тесселяцией показывает, что Renga корректно записывает данные о портах оборудования!
Т.е. в файле экспорта в IFC они присутствуют, но при обратном импорте (открытии) IFC Renga их игнорирует!.

Хорошо, давайте теперь попробуем по другому сделать. Ведь у нас же сейчас основная задача - это не экспорт в IFC, чтобы геометрия корректно отображалась в прочем ПО, а получение обратно объектов через IFC для последующего распознания их самой Renga!

2.2.2. Эксперимент № 2 (истина где-то рядом)

Меняем настройки экспорта геометрического представления объектов следующим образом:
отключаем тесселяцию, включаем твердотельный нередактируемый Brep.
ВАЖНО!!! Почему отключаем тесселяцию?

Начнем с того, что в Букваре Renga (раздел "Проектирование инженерных систем") нам сказано: "Порядок приоритетности выбора программой Renga трехмерного представления объекта при экспорте основан на правиле «от сложного к простому» (т.е. от максимально возможной для математического воспроизведения и редактирования геометрии объектов к упрощенной и нередактируемой): • SweptSolid -> Brep -> Tesselation".
Т.е. при включенных двух настройках "Tesselation" и "Brep" Renga при невозможности выгрузки в Brep должна использовать Tesselation. Да, Renga при выгрузке учитывает это приоритет.
Но при обратной загрузке файла IFC Renga на объектах, геометрия которых сохранена через тесселяцию, не определяет порты (хотя они есть в файле IFC). Это показано ранее в эксперименте №1.
Поэтому мы намеренно отключаем Tesselation, так как она нам теперь уже не помощница при создании геометрии нестандартного оборудования. Ведь мы должны видеть результаты экспорта геометрии именно в Brep.
Суть ясна?
Всего пара кликов.....
Всего пара кликов.....

Повторяем действия экспорта/импорта через IFC. Смотрим.....

Пропало оборудование "вентилятор радиальный №5". Но при этом остальные объекты определились Renga идеально. Есть порты и видна твердотельная геометрия.
Пропало оборудование "вентилятор радиальный №5". Но при этом остальные объекты определились Renga идеально. Есть порты и видна твердотельная геометрия.
Вид объектов на плане уровня.
Вид объектов на плане уровня.
Вот отображение оборудования в окне для работы с системами.
Вот отображение оборудования в окне для работы с системами.
Просто пример, как теплообменник, полученный через файл IFC с включенным Brep и отключенной тесселяцией, попадает в стили оборудования Renga. Да, мы теперь не можем поменять вид соединения у порта, но задача изначально ставилась иная!
Просто пример, как теплообменник, полученный через файл IFC с включенным Brep и отключенной тесселяцией, попадает в стили оборудования Renga. Да, мы теперь не можем поменять вид соединения у порта, но задача изначально ставилась иная!

Ситуация прояснилась! Но куда-то же пропал вентилятор? Скажу откровенно, я специально поставил данное оборудование в модель, так как изначально его геометрию легко увидеть в Renga, когда данная геометрия сформирована тесселяцией при экспорте в IFC (мы уже убедились выше в эксперименте №1).
Все так плохо? Да нет! Все
нюансы будут отражены далее в эксперимент №3. А пока небольшое примечание:

Различные эксперименты показали, что на самом деле и более сложная геометрия, чем у указанного вентилятора, нормально отображается в Brep. Нам осталась лишь совсем немного понять и принять подход Renga к отображению объектов, полученных через импорт IFC.

2.2.3. Эксперимент № 3 ("поэзия" о Brep или возвращение "блудного" вентилятора)

В IFC Brep представлен двумя классами: IfcFacetedBrep и более продвинутым, появившимся в версии IFC4, классом IfcAdvancedBrep. Именно последний класс может работать с NURBS-кривыми для описания граней.

И Renga его замечательно распознает (читает), так как работает с IFC4...... но не всегда.....местами.... только с определенной геометрией..... логика не выявлена.....почему так?
:((
Не буду вас, коллеги, дальше пугать. Но мой мозг был реально "взорван" этой аналитикой. Ответ в конце эксперимента.....

Теперь скажу прямо "в лоб": геометрия вентилятора никуда не пропала. Она была нормально сохранена программой Renga в IFC файле, но при обратном открытии (импорте) IFC Renga вдруг отказалась отображать (загружать) данную геометрию.

Проведем отдельно эксперимент с указанным ранее вентилятором:

1). Создаем новый проект (все также используем шаблон по умолчанию, где уже имеются ряд настроенных стилей различного оборудования), далее ставим в модель элемент вентиляционного оборудования "вентилятор радиальный №5".

2). Вооружаемся Notepad++ для изучения полученных IFC файл с вентилятором. Сейчас нас будут интересовать следующие классы IFC:

3). А теперь начинаем делать импорт проекта с вентилятором-"невидимкой" в IFC, работая только с настройкой Brep.

Файл IFC №1: при экспорте у Brep включены все опции FacetedBrep и AdvancedBrep

Нахожу следующие строки:
#336= IFCADVANCEDBREP(#335);

#364= IFCFACETEDBREP(#363);

#416= IFCADVANCEDBREP(#415);

>#417= IFCSHAPEREPRESENTATION(#41,'Body','SolidModel',(#336,#364,#416));

Смотрим.... Индексы сущностей в IFCSHAPEREPRESENTATION соответствуют. Тип представления SolidModel включает в себя Brep и AdvancedBrep, так что значение 'SolidModel' тоже корректно указано. Беглый просмотр задания геометрии в классах IFCFACETEDBREP и IFCADVANCEDBREP тоже ничего не выявил.
Но Renga
НЕ ОТОБРАЖАЕТ данный объект при импорте/открытии IFC файла! Прочие вьюверы IFC ОТОБРАЖАЮТ!

Исключаем в IFCSHAPEREPRESENTATION геометрию улитки (убираю индекс сущности #336). Получаем: #417= IFCSHAPEREPRESENTATION(#41,'Body','SolidModel',(#364,#416));

Renga ОТОБРАЖАЕТ объект (без улитки у вентилятора).

Файл IFC №2: при экспорте у Brep включена опция AdvancedBrep

Нахожу следующие строки:
#336= IFCADVANCEDBREP(#335);

#388= IFCADVANCEDBREP(#387);

#389= IFCSHAPEREPRESENTATION(#41,'Body','AdvancedBrep',(#336,#388));

Смотрим.... Индексы сущностей также соответствуют, тип представления - корректный. Беглый просмотр задания геометрии в классах IFCADVANCEDBREP снова ничего не выявил.
Но Renga
СНОВА НЕ ОТОБРАЖАЕТ данный объект при импорте/открытии IFC файла! Прочие вьюверы IFC ОТОБРАЖАЮТ!

Видно, что геометрия сейчас разделена на две части. Исключаем в IFCSHAPEREPRESENTATION индекс сущности #336. Получаем: #389= IFCSHAPEREPRESENTATION(#41,'Body','AdvancedBrep',(#388));

Renga ОТОБРАЖАЕТ объект (без улитки и основания, только двигатель).

Файл IFC №3: при экспорте у Brep включена только опция FacetedBrep

И вот тут Renga "повернулась к нам лицом":

Твердотельная геометрия вентилятора через FacetedBrep. Все порты (точки присоединения) также на месте!
Твердотельная геометрия вентилятора через FacetedBrep. Все порты (точки присоединения) также на месте!

Прям чудеса какие-то... Причем обратите внимание: появились грани именно на простой геометрии цилиндра. А вот на улитке вентилятора ничего такого нет!

Может какой-то "глюк" из-за геометрии объекта?

Хорошо! Создаю специально свой "вентилятор радиальный №5":
делаю нужные профили для балок, далее моделирую балками + перекрытием. Делаю необходимые этапы импорта/экспорта (в конце статьи будет дано пояснение, как и для чего вообще это нужно) с включенными "FacetedBrep", "AdvancedBrep" и отключенной "Tesselation".
Открываю полученный IFC файл в Renga и.....

.....Вуаля! Все корректно отображается.
.....Вуаля! Все корректно отображается.

Лезу в IFC файл и нахожу следующие строки:
#111= IFCADVANCEDBREP(#110);

#112= IFCSHAPEREPRESENTATION(#41,'Body','AdvancedBrep',(#111));

#271= IFCADVANCEDBREP(#270);

#272= IFCSHAPEREPRESENTATION(#41,'Body','AdvancedBrep',(#271));

#338= IFCADVANCEDBREP(#337);

#339= IFCSHAPEREPRESENTATION(#41,'Body','AdvancedBrep',(#338));

#387= IFCFACETEDBREP(#386);

#388= IFCSHAPEREPRESENTATION(#41,'Body','Brep',(#387));

Заодно проверяю индексы сущностей в классе IFCREPRESENTATIONMAP. Хм... Получается, что сейчас геометрия разделена на 4 элемента ( у меня при построении также использовано 4 элемента: балка + балка + балка + перекрытие). Может в этом вся суть? Геометрия, корректно разбитая на части, при записи Renga в файл IFC, далее нормально отображается в Renga?

Я помню, что обещал вам дать ответ по данной ситуации, описанной ранее фразой "...... но не всегда.....местами.... только с определенной геометрией..... логика не выявлена.....почему так?" в конце данного эксперимента. Ну так вот....

Ответа нет! Я до сих не вычислил полную логику работы Renga при ее отказе отображать некоторые объекты после экспорта/импорта их через IFC с включенным Brep.
Походу об этом надо будет писать в
тех. поддержку Аскон (создавать запрос).

А пока продолжим дальше......

2.3. Использование объекта Renga "Элемент" для создания геометрии нестандартного оборудования, а также наличие "подводных камней" благодаря стороннему 3D ПО

Анализ показал, что единственно верный подход по созданию нестандартного оборудования, это задание (переопределение) класса IFC у вставленного в модель "Элемента" через значение свойства IfcEntityType. Почему?

Нам нужна единая геометрия в пределах одного класса IFC!

А теперь пройдемся по этапам создания геометрии нестандартного (пользовательского) оборудования через "Элемент".

2.3.1. Одно оборудование - один файл проекта. Создаем геометрию

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

  • моделированием геометрии стандартными объектами Renga. Можете также использовать точки трассировки с трассами для создания геометрии поворотов, врезок и т.д. (если это нужно для геометрии оборудования).
  • импортом сторонней геометрии из твердотельных форматов через создание нового стиля "Элемент" и дальнейшая вставка соответствующего экземпляра "Элемента" в пространство модели. Но здесь обязательно надо делать предварительную выгрузку геометрии "Элемента" в IFC через Brep, чтобы увидеть корректность геометрии. Так как из некоторых файлов в формате твердотельной геометрии (возьму для примера *.step) можно реально получить неожиданный результат!

При необходимости, в модельном виде могут содержаться линии модели, размеры, штриховки, трассы, точки трассировки и текст. Тут все лаконично: при экспорте в формат *.c3d (о нем пишу далее) данные типы объектов не будут экспортироваться.

2.3.2. Промежуточное преобразование в твердотельный формат перед экспортом в IFC

Теперь мы экспортируем созданную модель оборудования целиком в 3D формат *.c3d (рекомендую после проведенного анализа) путем выбора в выпадающем меню команды "Экспортировать в формат 3D", а далее выбираем нужный нам 3D формат файла *.c3d.

Далее создаем новый проект, создаем новый стиль "Элемента" и импортируем туда полученную твердотельную геометрию из файла *.c3d. Вставляем полученный "Элемент" в модель и делаем предварительный экспорт в IFC с включенной настройкой геометрического представления "Brep" (нюансы обсудили выше). Почему предварительный экспорт?

Нам надо вначале убедиться в качестве созданной геометрии оборудования через экспорт/импорт IFC. Т.е. все ли ее части/элементы Renga корректно отобразила в модели после открытия файла IFC.

Не все отображается? Читаем следующий пункт.....

2.3.3. "Большой привет" от твердотельной геометрии, созданной в ином ПО и импортируемой далее в Renga

Дело в том, что при определенном импорте твердотельных форматов в "Элемент" и дальнейшей выгрузки геометрического представления объектов через Brep вы все равно можете столкнуться с тем, что будет отображаться полигональная/треугольная сетка благодаря IfcFacetedBrep.
Но хуже всего то, вы можете столкнуться вообще с отсутствием нормального отображения импортированной геометрии. Эксперименты показали, что при выгрузке из иного 3D ПО в твердотельный формат (возьму для примера *.step) можно реально получить неожиданный результат.

Точно? А может я просто ошибаюсь?

Я просто покажу вам один из своих маленьких экспериментов. Работаем, как уже определились ранее, только с включенным Brep и отключенной Tesselation. Смотрим.....

Этап 1. Вставка в модель проекта двух объектов: слева - твердотельная геометрия усеченного конуса, загруженная в "Элемент" через файл *.step (сделан в ином 3D ПО), справа - чуть более сложная геометрия, полученная через построение обычной балки по окружности в Renga (сделан соответствующий профиль балки).
Этап 1. Вставка в модель проекта двух объектов: слева - твердотельная геометрия усеченного конуса, загруженная в "Элемент" через файл *.step (сделан в ином 3D ПО), справа - чуть более сложная геометрия, полученная через построение обычной балки по окружности в Renga (сделан соответствующий профиль балки).
Этап 2. Результат загрузки в новый проект твердотельной геометрии в "Элемент", полученной при экспорте в формат c3d предыдущего проекта. Пока все корректно! Но нам же нужен по итогу файл IFC, поэтому не останавливаемся на данном результате.....
Этап 2. Результат загрузки в новый проект твердотельной геометрии в "Элемент", полученной при экспорте в формат c3d предыдущего проекта. Пока все корректно! Но нам же нужен по итогу файл IFC, поэтому не останавливаемся на данном результате.....
Этап 3. Результат экспорта/импорта в Renga через IFC с включенным Brep и отключенной тесселяцией. Геометрия из Renga (справа) передалась просто замечательно, хотя она чуть более сложная, чем просто конус. А вот геометрия левого объекта (конуса) нормально не передалась!
Этап 3. Результат экспорта/импорта в Renga через IFC с включенным Brep и отключенной тесселяцией. Геометрия из Renga (справа) передалась просто замечательно, хотя она чуть более сложная, чем просто конус. А вот геометрия левого объекта (конуса) нормально не передалась!

А теперь подведем итог нашего анализа! По результатам различных экспериментов, а не только вышеуказанного, можно четко выделить два момента:

1. Renga очень хорошо экспортирует твердотельную геометрию, сделанную непосредственно стандартными объектами в Renga.
2. Не вся геометрия, полученная из твердотельных форматов 3D файлов, будет корректно отображаться в итоговом IFC файле. И тут есть вопросы как к стороннему 3D ПО, которое данные файлы генерирует. Так и к Renga, которая пытается эту геометрию записать в IFC.

ОБЩИЙ ИТОГ части № 2 (принципы создания нужной геометрии):

  • Моделируем нужную геометрию стандартными средствами в Renga или создаем ее через вставку элемента, содержащего импортированную твердотельную геометрию. Также можно использовать одновременно два этих способа: что-то подгрузили через Элемент, а что-то смоделировали средствами Renga.
  • Не забываем, что применение из внешнего файла геометрии в твердотельном формате в стилях Элемента не всегда гарантирует нужный результат при выгрузке/загрузке через IFC. Т.е. при обычной работе с "Элементом" в проекте у вас вполне ожидаемо будет нормально отображаться геометрия, импортированная из твердотельной. Но нам нужно корректное отображение геометрии именно после открытия файла IFC в Renga. Поэтому предварительно проверяем такую твердотельную геометрию, импортированную в "Элемент", на корректность выгрузки через Brep.
  • Все корректно отображается? Теперь выгружаем целиком готовую геометрию из проекта в 3D файл формата *.c3d (один файл - одна модель оборудования).
  • Подгружаем обратно данный файл формата *.c3d в новый стиль "Элемента". Вставляем данный "Элемент в модель".
Обязательно центрируем его относительно начала координат (точка вставки "Элемента", которая видна при выделении объекта, должна находиться строго в точке начала координат). Это нужно для того, чтобы вам далее было удобно вычислять/задавать координаты портов (ручным способом или через плагин.... о нем я упомяну в самом конце цикла статей). Более конкретно поймете эту необходимость, когда будете работать с шаблоном по созданию порта в статье № 4.
  • Выгружаем проект в IFC только с включенным Brep (экспериментируйте FacetedBrep и AdvancedBrep) и отключенной Tesselation.
  • Повторно проверяем корректность геометрии через открытие в Renga полученного файла IFC. Если все нормально - оставляем проект для следующего этапа работы. Если нет - "допиливаем" геометрию всеми возможными способами (стандартными объектами Renga или корректировкой импортированной твердотельной геометрии из иного 3D ПО и повторной загрузкой ее в "Элемент"), пока не получим нужный нам результат.

Переходим к следующей статье только после получения корректного отображения геометрии оборудования в Renga (в виде твердотельной).