В Ревите есть сложности с подсчётом изоляции сразу на всю систему. На фитингах и арматуре изоляция ставится, но не считается, в итоге суммарно изоляция не складывается.

Создал скрипт, который посчитает изоляцию на всю систему вентиляции с учётом некоторых расходников, например клея для огнезащиты.

Версия Динамо — 2.0.4, Ревит — 2019.2.

Алгоритм

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

Список типов изоляции сравнивается со списком типов в семействе элемента узлов. Если появились новые, то добавляет эти типы в элемент узлов. Далее размещает на указанном виде типы семейства и записывает в них имя системы и суммарное количество изоляции. Создайте отдельный вид под эти цели, чтобы там были только элементы узлов, так будет легче ориентироваться, и это важно для скрипта с расходниками.

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

Семейство для изоляции
Семейство для изоляции

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

Расчёт количества

Чтобы получить сумму изоляции, скрипт отдельно считает изоляцию на воздуховодах, фитингах и арматуре. На воздуховодах скрипт считает наружную площадь и объём изоляции, но делает это не так, как в Ревите. Ревит берёт не совсем корректно объём изоляции, так как считает объём как произведение наружной площади изоляции на её толщину. Из-за этого неправильно учитывается объём по углам воздуховода. Скрипт считает объём правильно.

Площадь фитингов берётся из семейства фитингов, у меня есть отдельно подборка модифицированных семейств фитингов воздуховодов АДСК, в них считается площадь. Из неё же получается объём, произведением площади фитинга на толщину изоляции. Это неточный подход, но лучше так, чем никак не учитывать.

Площадь и объём изоляции арматуры считается укрупнённо. С арматуры берём габаритные размеры, получаем площадь всех поверхностей за вычетом площади соединителей. Это и будет площадь арматуры, с неё же получаем объём произведением толщины и площади. Опять же, метод не самый точный, но лучше так, чем никак.

При записи количества в элемент узлов учитываются единицы измерения. Если в свойствах стоит «м2» или «м²», то записывается площадь, в остальных случаях записывается объём.

Семейства элементов узлов на плане этаже
Семейства элементов узлов на плане этаже

Вот так выглядит элемент узлов на плане, в свойствах есть информация о системе и количестве. Один кружок — один тип изоляции в рамках одной системы. В данном случае у меня 3 системы, в одной 3 типа изоляции, в двух других — по два. Поэтому элементы узлов выстраиваются вот такими рядами с тремя или двумя кружками в ряду. С расходниками то же самое, так как в каждой системе есть минимум один тип изоляции, для которого нужно учесть расходники, то получаем три ряда по одному кружку.

Свойства типа семейства элемента узлов
Свойства типа семейства элемента узлов

На скриншоте выше — параметры типа, которые копируются из типа изоляции.

Расходники

Кроме самой изоляции можно добавить один расходник. Для этого нужно добавить два параметра проекта к категориям «Материалы изоляции воздуховодов» и «Элементы узлов»: «VM_Изоляция_Расходный материал» и «VM_Изоляция_Норма расхода». В одном параметре будет наименование расходника, во втором — норма расхода. По ней будет вычисляться количество расходного материала в зависимости от количества самой изоляции.

Норму расхода обязательно нужно записывать следующим образом: число с разделителем точкой + пробел + единица измерения расходника + наклонный вправо слэш + единица измерения основного материала. Если вбить как-то иначе, то может не посчитаться.

Вот примеры в кавычках: «2.4 кг/м²», «17.45 м²/м³». Можно писать просто «м2», можно двойку в степень. Но давайте делать красиво и степенное число писать как степень.

Для подсчёта расходников есть отдельный скрипт. Он также создаёт отдельные типы в семействе элементов узлов с суффиксом «_Расходник», размещает на виде и записывает данные о системе и количестве. Типы создаются на основе элементов узлов, которые уже размещены на выделенном для них виде.

Чтобы расходники шли в спецификации после основного материала, использую системный параметр «Маркировка типоразмера». Для изоляции эта маркировка выглядит как ряд чисел 10, 20, 30 и т. д., а в параметр «Маркировка типоразмера» для расходника записывается число + 1. Например, у огнезащиты в параметре будет написано «10», тогда в её расходник запишется «11». В итоге всё выстроится по порядку.

Чтобы скрипт понял, что для данной изоляции надо учитывать расходник, нужно заполнить поле с наименованием расходника. Если поле пустое, то никаких расходников не будет.

Детали

Метод с размещением элементов узлов, с одной стороны, вполне себе отвечает БИМ-концепции, так как у нас появляются объекты для базы данных, куда записывается информация. С другой стороны, минус метода в том, что приходится создавать дополнительные сущности, которые по факту никак с системами воздуховодов не связаны.

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

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

Вот так выглядит весь скрипт:

В верхней части считаются площади и объёмы, в нижней — создаются типы элементов узлов, а в правой части всё соединяется, в элементы записывается информация
В верхней части считаются площади и объёмы, в нижней — создаются типы элементов узлов, а в правой части всё соединяется, в элементы записывается информация

21 января провёл Ревит-линч №7, во второй части которого рассказал и показал, как работает скрипт. Посмотреть видео можете вот по этой ссылке: https://youtu.be/ECwnUFQcQ14

Нюанс

В шаблонах АДСК наименования воздуховодов, трубопроводов и других системных категорий производится макросом. Из-за этого параметр «ADSK_Наименование» добавлен к этим категориям по экземпляру. Изоляция тоже входит в них, хотя это и неудобно, так как для изоляции у нас всегда есть конкретное наименование. Всё из-за воздуховодов и труб.

Первая версия скрипта была сделана без учёта этого нюанса. Если вы используете шаблон АДСК или параметр для наименования у вас по экземпляру, то воспользуйтесь второй версией скрипта, он называется VM_Изоляция воздуховодов_Наименование по экземпляру. В него добавил несколько нодов, которые помогут решить проблему.

Изменения выделил красными прямоугольниками
Изменения выделил красными прямоугольниками

1 — в этот нод надо вписывать параметр для наименования в семействе элемента узлов. Поскольку семейство никак не зависит от параметров проекта, то тут оставил «ADSK_Наименование».

2 — сюда вписывайте имя параметра типа из системной изоляции с наименованием. Указал параметр «Описание», но вы можете заменить его на любой другой параметр типа из вашей изоляции. Туда нужно вписывать наименование для спецификации, из него текст скопируется в семейство элемента узлов. Важно: это должен быть параметр типа.

Вот пример записи наименования в параметр «Описание»
Вот пример записи наименования в параметр «Описание»

3 — эта группа нодов формирует списки: для получения параметров из системной изоляции это будет список с нодом 2, а для записи значений — с нодом 1.

Версионность скриптов

Здесь буду вести лог изменений. Текущая версия — 1.1

1.1 — добавил фильтрацию для фитингов и арматуры. Теперь арматура без изоляции не будет учитываться. Фитинги, у которых нет параметра «ADSK_Площадь с коэффициентом запаса» будут отфильтровываться и не участвуют в расчёте.

Скачивайте скрипты и файлы-примеры с Яндекс.Диска

Обновления статей удобно получать в Телеграм-канале «Блог Муратова про Revit MEP». Подписывайтесь и приглашайте коллег. Можно обсудить статью и задать вопросы в специальном чате канала.

Бесплатные обзоры ваших моделей

Раз в две недели провожу «Ревит-линчи» — разбираю файлы семейств и проектов пользователей и отвечаю на вопросы по Ревиту и БИМ-технологиям. Дату и ссылку на Ревит-линч публикую в Телеграм-канале. Приходите, там интересно.

Отблагодарить автора

Я много времени уделяю блогу. Если хотите отблагодарить меня, то можете сделать небольшой подарок (именно подарок, такой перевод не облагается налогом).