Как мы полюбили склейку и почему она нужна всем
Привет, Хабр!
Меня зовут Анастасия Типакова, я руководитель группы развития технологий информационного моделирования инженерного направления в ПИК.
В предыдущих статьях мы писали о том, как BIM оптимизирует работу, а теперь давайте рассмотрим, как это работает на практике. Для примера возьмём реальный кейс — формирование сводной спецификации в Revit по инженерным дисциплинам.
Оффтоп
Зачастую, когда проектировщики начинают изучать Revit и знакомиться с BIM-подходом в проектировании, у них складывается впечатление, что всё должно работать само. Это же не AutoCAD, в Revit огромный разнообразный функционал, всё автоматизировано, а ещё есть одна большая красная кнопка «Сделать проект».
Каково же их удивление, когда они не находят этой кнопки, а чтобы сделать комплект документации в Revit, нужно моделировать определённым образом, соблюдать правила и последовательность действий, а также учитывать принцип работы ПО. На данном этапе у многих новичков возникает закономерный вопрос: «А зачем тогда нам ваш Revit и BIM? Мы в AutoCAD нарисуем ручками быстрее!».
Но сравнивать скорость проектирования в AutoCAD и Revit некорректно, так как результат работы может сильно различаться. К тому же этап проектирования не является последним в контексте всего цикла работ над объектом, поэтому разница в скорости на этапе проектирования оказывается не самым важным критерием для выбора ПО. Подробнее об этом можно почитать в наших предыдущих статьях «Мама, я работаю в BIM» и «Инженерные решения объектов в BIM».
С какими такими сложностями проектировщики сталкиваются при работе в Revit, что у них пропадает желание изучать новые инструменты и возможности ПО?
Сложности
Один из основных этапов при разработке документации комплекта — это формирование сводной спецификации. Именно на этом этапе у проектировщиков возникают трудности, а новые пользователи Revit и вовсе не понимают, как им получить корректную спецификацию по ГОСТ.
Давайте разберём, какие сложности возникают при формировании сводной спецификации в Revit, как в иллюстрации ниже.
Говоря про определение, спецификация — это один из документов проектной документации, выполняемый в виде таблицы, в которой указываются название изделия, его составные части и элементы, материал для изготовления, сам изготовитель, марка, единицы измерения, масса и другие данные.
Сводная спецификация в Revit, то есть спецификация по нескольким категориям, представляет собой своеобразную таблицу, в которую выводятся данные смоделированных элементов по категориям компонентов зданий.
В эту спецификацию нельзя просто добавить обезличенный столбец или новую строку. Каждый столбец — это параметр элемента. Каждая строка — это смоделированный элемент. После проектирования в AutoCAD, где спецификация рисуется линиями и заполняется текстом вручную, объектно-ориентированное проектирование в Revit воспринимается тяжело.
На этом этапе возникает несколько проблем.
Проблема №1. Необходимость моделировать всё, что нужно выводить в спецификацию
Как я уже писала выше, каждая строка — это смоделированный элемент, но не все компоненты здания можно создать в Revit персонализированным инструментом. Например, в инженерных ведомостях краска и грунтовка для труб указываются в соответствующем объёме. Специального инструмента для создания грунтовки для труб в Revit нет, но есть инструмент «Краска», который может даже покрасить трубу в нужный материал. Казалось бы, просто создайте материал нужной краски и нужной грунтовки и примените на трубы, но не всё так просто.
Во-первых, этим инструментом нельзя покрасить элемент несколько раз. А нам нужно применить и краску, и грунтовку на каждый участок трубы. Во-вторых, материал, которым мы покрасим трубу, нельзя вывести в сводную спецификацию компонентов зданий, потому что для материалов есть отдельный тип спецификации — «Ведомость материалов».
В инженерных направлениях часто встречаются подобные позиции в спецификациях. Иногда указывают одну позицию «Металл» с общим количеством на весь объект в килограммах, или дополнительные материалы, например, клей для изоляции и т.п. К сожалению, для их создания в стандартном функционале Revit специальные инструменты не предусмотрены.
Что же делать? Есть разные варианты решения этой задачи. Сначала мы в ПИК применяли вариант с созданием ключевых спецификаций, где будут прописываться все элементы, которые по тем или иным причинам сложно или невозможно смоделировать. Да, это отдельная спецификация, которую нужно оформить так же, как и основную сводную спецификацию по ГОСТ, и расположить под ней на листах, делая вид, что всё это одна ведомость.
Это решение было не самым удобным, и мы выбрали другое. Мы создали загружаемое семейство-заготовку, которое заполняется необходимыми по проекту свойствами. Таким образом, позиция попадает в общую сводную спецификацию и имеет все необходимые заполненные параметры, а для автоматизации данного процесса у нас есть отдельный инструмент — «Создание немоделируемых элементов».
Проблема №2. Вывод необходимых свойств
Свойства элементов заполняются в параметры, а каждый столбец — это параметр элемента. Чтобы в спецификацию выводились необходимые свойства, нужно их заполнять в одни и те же определённые параметры. При этом данные параметры должны быть у всех элементов, которые попадают в спецификацию.
Сложность заключается в том, что нужно определить эти параметры, создать их, соотнести свойства выбранным параметрам, а также добавить параметры нужным категориям. Разберём подробнее, какие именно сложности возникают.
Надо отметить, что при моделировании используют системные семейства и загружаемые. Системные семейства уже имеют перечень системных параметров, которые автоматически заполняются. Но эти параметры могут отсутствовать у других системных категорий и точно отсутствуют у загружаемых семейств, а загружаемые семейства за счёт гибкости ПО могут быть сделаны совершенно по-разному, все это означает, что нужны общие параметры для всех.
Пример: системные параметры «Длина», «Площадь», «Объём» есть у труб, воздуховодов и других системных линейных категорий, а у загружаемых категорий эти параметры отсутствуют.
Этот пункт вызывает трудности больше всего в компаниях, где нет BIM-отдела или BIM-координатора по созданию семейств, нет единой базы семейств, и используются скачанные семейства с различных сайтов-платформ или сайтов производителей. Как правило, семейства создают, используя ФОП от ADSK (Файл общих параметров, который разработала компания Autodesk) и параметры из него.
В свою очередь, компании часто используют собственный ФОП и свои же параметры. Это значит, что большинство семейств в свободном доступе вам не подойдут без корректировки. Даже если у вас работа построена на параметрах ADSK, банально может быть недостаточно стандартных параметров или тех, которые используются в скачанных семействах. Наконец, семейство может быть сделано без использования ADSK параметров, а с какими-нибудь уникальными параметрами.
Решение в таких случаях простое — стандартизация. Для этого в компаниях формируются BEP (план реализации BIM-проекта) и EIR (информационные требования заказчика). Жизнь становится проще, когда у вас есть чёткий регламент, в какой параметр заполнять определенное свойство, в каком формате это свойство записывается в параметр, в шаблоне проекта добавлены параметры на необходимые категории, создана сводная спецификация по ГОСТ на основе этих параметров, и сами параметры добавлены в загружаемые семейства.
Проблема с выводом необходимых свойств решена, но сразу возникает другая проблема — заполнение параметров.
Проблема №3. Заполнение параметров
Конечно, для загружаемых семейств можно заполнить параметры в семействе, а для системных семейств — настроить заполнение параметров типа. Но есть несколько основных сценариев, когда возникают сложности. Вот примеры для разных видов семейств.
Сложности при заполнении параметров количества для линейных системных семейств.
Например, трубы в спецификациях указываются в метраже, так как это линейное системное семейство. Длина участка трубы выводится в системный параметр «Длина», а в спецификацию выводится общий параметр, который никак не связан с системной Длиной. Таким образом, чтобы его заполнить, необходимо выполнить перезапись значения из системного параметра в общий. Как правило, при перезаписи дополнительно происходит умножение на коэффициент запаса.
Сложности с выводом в наименование позиции размерных характеристик для линейных системных семейств.
Для таких элементов как: категории трубы, материал изоляции труб, воздуховоды, материал изоляции воздуховодов — в наименование позиции необходимо выводить диаметр или размер, толщину стенки и толщину изоляции. За эти характеристики отвечают разные системные параметры, которые являются параметрами экземпляра.
Сложности с выводом в спецификацию массы для линейных системных семейств.
В Revit нет параметра массы для линейных системных семейств. А рассчитать его значение с помощью формулы, основанной на параметре «Длина», не получится. Это связано с тем, что семейство системное и не открывается для редактирования как загружаемые.
Необходимость фильтровать и сортировать общую сводную спецификацию по инженерным системам.
Так как набор системных параметров для инженерных систем неодинаковый, то осуществить фильтрацию и/или сортировку не представляется возможным. Например, у категории «Оборудование» отсутствуют системные параметры «Тип системы» и «Сокращение системы», а осуществлять фильтрацию и/или сортировку по параметру «Имя системы» не всегда корректно, потому что в данный параметр добавляется порядковый номер участка системы.
Заполнение текстовых параметров в зависимости от параметров инженерных систем для загружаемых и системных семейств.
Могут возникнуть сложности с добавлением описания или классификации системы в зависимости от того, к какой инженерной системе подключен элемент. Данные свойства можно легко заполнить самим системам с помощью общих и даже некоторых системных параметров. Но вот для элементов, которые к ним подключены, эти свойства не заполняются.
Решения можно найти для каждого пункта, но все они будут разные, что не очень удобно в рамках работы над проектом. В ПИК все эти сложности решает единый инструмент — «Склеить параметры». Инструмент является достаточно универсальным, и его легко адаптировать под себя. Давайте пройдёмся по принципу его работы.
Склейка
Инструмент «Склеить параметры» (дальше по тексту «склейка») помогает автоматизированно, быстро и безошибочно заполнять одни параметры значениями на основе значений других параметров, а также расчётными значениями, заданными в таблицах Excel.
Склейка работает с двумя основными таблицами: рабочая таблица и таблица правил.
Рабочая таблица представляет собой набор формул, записанных на основе символов, описанных в таблице правил.
Таблица правил содержит список функций и символов, которые эти функции вызывают.
Логика работы инструмента проста и заключается в том, что он заполняет значения параметров по формулам, описанным в рабочей таблице.
В рабочей таблице заполняется:
Целевой параметр — в какой параметр будет происходить запись значения. Параметры, заполняемые плагином в модели, должны быть добавлены «по экземпляру».
Формула — значение, которое заполняется в параметр.
Критерий или фильтр, по которому плагин определяет, какому элементу в параметр запишется значение. Фильтр — это любой параметр или несколько параметров, по значению которых происходит выборка (фильтрация) элементов для заполнения параметров.
Пример:
Таблица правил состоит из двух обязательных листов: «Настройки» и «Размерности».
На листе Настройки перечислены функции, выполняемые при наличии символа в формулах рабочих таблиц:
1-й столбец — название функции, на основании которой происходит сопоставление символа из следующего столбца. При этом корректировать/удалять значения нельзя.
2-й столбец — символы/буквы/цифры, которые необходимо указывать в формулах рабочих таблиц для вызова функции.
3-й столбец — описание, где и как устанавливать данный символ при формировании правил.
в следующих столбцах — описание, особенности и примеры.
На листе «Размерности«перечислены различные единицы измерения, которые можно использовать в формулах рабочих таблиц. На данном листе происходит сопоставление общепринятого обозначения единиц измерения, которые можно указывать в формулах рабочих таблиц — в первом столбике, программным единицам измерения (используемых в Revit/Api) — во втором столбике.
Если на данном листе не указаны единицы измерения, используемые в формулах таблицы, то перевода в данные единицы измерения не произойдет. Для того, чтобы необходимые вам единицы измерения использовались, их необходимо добавить на данный лист.
Что умеет склейка?
Во-первых, склейка умеет записывать значения на основе формул, которые содержат:
Конкретное значение. Текстовое или числовое значение записывается в формулу без каких-либо дополнительных символов.
Запись в параметр с типом данных «Да»/«Нет». Функция записывает значение в зависимости от вызываемого символа.
Алгоритмы — это последовательность действий для получения определённых результатов, прописанные в коде, которая выполняется при наличии вызова алгоритма в формуле в соответствии с описанными символами на листе «Настройки». Алгоритм ВСЕГДА вызывается символами <# #>
Перечень алгоритмов:ParentToChildParameter — это алгоритм перезаписи значения параметра из родительского семейства в аналогичный параметр вложенного семейства.
PipeInsulation — это алгоритм подбора диаметра изоляции.
SpaceName, SpaceNumber, GroupName — алгоритмы, которые определяет, в каком пространстве/группе располагается элемент и записывает соответственно «Имя», «Номер» этого пространства, «Имя» этой группы.
Функции — действия, выполняемые при наличии символа в формулах. Символы, которые вызывают функцию, описание функций и правила записи описаны в таблице правил. Главные функции: функция склеивания нескольких отдельных значений и записи их в один параметр, функция записи расчетного значения, функция перевода единиц измерения, функция записи значения из другого параметра и т.д.
В зависимости от типа данных параметра, в формулу можно указывать различные комбинации символов/функций/алгоритмов.
Во-вторых, склейка умеет записывать значения элементам на основе фильтрации. Каждое правило, описанное в строке, приписывается тем элементам, которые соответствуют фильтрации, заданной в 3-ем и последующих столбцах. Если фильтрация не задана для строки, то есть в 3-ем и последующих столбцах пусто, то правило будет записываться всем обрабатываемым элементам модели.
Примеры:
Часть значения (используется функция вызываемая символом *). Варианты: только символ *, символ * в конце текста, символ * в начале текста, одновременно и в начале, и в конце текста.
Пример работы
На картинках слева показаны свойства выделенных элементов. В данном случае это труба и воздуховод. Эти элементы линейные и относятся к системным категориям, поэтому общие параметры «по экземпляру» у них не заполнены.
На картинках справа мы видим те же элементы, но с заполненными параметрами. Заполнение производилось инструментом «Склеить параметры». Обратите внимание на значение параметры, где наведена мышка и отображается всплывающая подсказка. Значение этого параметра состоит из значений нескольких других параметров, последовательно указанных с использованием приставок и дополнительных символов. Простым языком, несколько значений будто приклеились друг другу и получилось одно значение, отсюда и родилось название инструмента «Склеить параметры» или «склейка».
Преимущества
Помимо того, что склейка помогает решить все сложности описанные ранее, это очень удобный и гибкий инструмент. Для работы склейка не требует специальных семейств, параметров или шаблонов. Достаточно лишь создать таблицу с формулами, которые нужны именно вам с указанием ваших параметров, ваших семейств и типоразмеров.
Набор функций и возможностей инструмента достаточно обширный и позволяет гибко настраивать таблицы для работы. У склейки есть возможность работать с разными таблицами, в зависимости от того, какая задана в настройках проекта. Также в любой момент можно внести изменения в текущую таблицу, сохранить её и перезапустить инструмент. Склейка отработает по обновленным данным.
Можно создать таблицы по каждой дисциплине, можно даже для конкретного проекта, а можно общую для всех. Инструмент позволяет адаптировать функционал под себя.
У нас был опыт перехода с офлайн-формата на онлайн-таблицы, а именно Google Таблицы. Надо сказать, что работало всё так же, без потерь в функционале. Возвращение к Microsoft Excel было обусловлено внутренними правилами компании.
На этом функционал не заканчивается, инструмент сильно глубже, чем я могу описать в рамках данной статьи. Например, в склейку заложен алгоритм определения приоритета строки с формулой. Если кратко, то порядок отработки формул делится на группы:
Первыми отрабатываются формулы с текстом или числом, то есть значения не зависящие от других параметров, расчётных функций, алгоритмов;
Вторыми отрабатываются формулы, содержащие обращение к другим параметрам, но без обращения к расчётным функциям и алгоритмам;
Предпоследними отрабатываются формулы, содержащие обращение к другим параметрам и вызывающие расчётные функции и алгоритмы;
Самыми последними отрабатываются формулы, содержащие специальный символ из таблицы правил.
Один из плюсов инструмента — это минимальное количество действий для его запуска. Запуск плагина осуществляется с любого 2D/3D вида или спецификации. Вам потребуется нажать кнопку и выбрать режим его работы из 3-х возможных с помощью выпадающего списка: вся модель, видимые элементы на виде, выбранные элементы.
Также в склейку заложен алгоритм вывода ошибок. В конце работы инструмента открывается окно с журналом («log»), где указаны ошибки, выявленные в процессе. Первое сообщение содержит информацию о таблице, с которой работал плагин, а далее перечисляются ошибки с конкретными данными: параметрами, элементами, типами данных, строками таблицы и т.д. К каждой ошибке указаны сгруппированные id элементов модели, связанные с ней.
Также «log» можно экспортировать и сохранить в формате Блокнота из окна вывода ошибок через кнопку «Открыть в блокноте».
Интерфейс окна вывода ошибок:
Вывод
В заключении хочется сказать, что склейка стала для нас основным и незаменимым инструментом. До её появления в нашем арсенале инструментов проблемы решались всеми возможными способами. Это и скрипты в Dynamo, и макросы, и разработки «на коленке» в Python, и создание ключевых спецификаций в Revit, и ручное заполнение параметров, в том числе, с помощью вспомогательных спецификаций. Все эти разрозненные решения заменил один инструмент.
Склейка открывает большие возможности в области автоматизации процессов в Revit. Самым главным и неоспоримым её преимуществом является гибкость настройки под требования проектной организации и нужды пользователя. Например, в ПИК созданы рабочие таблицы для разных дисциплин, разных типов зданий и внутренних стандартов. Таким образом, мы покрываем перечень различных запросов одним инструментом. Адаптивность склейки, интуитивно понятный интерфейс и гибкая работы с таблицами типа Excel делают её мощным инструментом для оптимизации рабочего процесса в области BIM-моделирования.
P.S. Над этим инструментом трудилось большое количество специалистов, работающих в ПИК. С кем-то мы до сих пор работаем в одном коллективе, а кто-то продолжил карьеру в другом месте, но мы благодарны абсолютно всем за помощь в создании этого полезного инструмента!