Как мы полюбили склейку и почему она нужна всем

Привет, Хабр!  

Меня зовут Анастасия Типакова, я руководитель группы развития технологий информационного моделирования инженерного направления в ПИК.

В предыдущих статьях мы писали о том, как BIM оптимизирует работу, а теперь давайте рассмотрим, как это работает на практике. Для примера возьмём реальный кейс — формирование сводной спецификации в Revit по инженерным дисциплинам.

Оффтоп

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

Каково же их удивление, когда они не находят этой кнопки, а чтобы сделать комплект документации в Revit, нужно моделировать определённым образом, соблюдать правила и последовательность действий, а также учитывать принцип работы ПО. На данном этапе у многих новичков возникает закономерный вопрос: «А зачем тогда нам ваш Revit и BIM? Мы в AutoCAD нарисуем ручками быстрее!». 

Но сравнивать скорость проектирования в AutoCAD и Revit некорректно, так как результат работы может сильно различаться. К тому же этап проектирования не является последним в контексте всего цикла работ над объектом, поэтому разница в скорости на этапе проектирования оказывается не самым важным критерием для выбора ПО. Подробнее об этом можно почитать в наших предыдущих статьях «Мама, я работаю в BIM» и «Инженерные решения объектов в BIM».

С какими такими сложностями проектировщики сталкиваются при работе в Revit, что у них пропадает желание изучать новые инструменты и возможности ПО?

Сложности

Один из основных этапов при разработке документации комплекта — это формирование сводной спецификации. Именно на этом этапе у проектировщиков возникают трудности, а новые пользователи Revit и вовсе не понимают, как им получить корректную спецификацию по ГОСТ.

Давайте разберём, какие сложности возникают при формировании сводной спецификации в Revit, как в иллюстрации ниже.

bbd91e0dfebc3c0aeebc92203c1941bd.png

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

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

2d6c95a17cbb3a5fc6b7f13c789f0488.png

В эту спецификацию нельзя просто добавить обезличенный столбец или новую строку. Каждый столбец — это параметр элемента. Каждая строка — это смоделированный элемент. После проектирования в AutoCAD, где спецификация рисуется линиями и заполняется текстом вручную, объектно-ориентированное проектирование в Revit воспринимается тяжело. 

На этом этапе возникает несколько проблем.

Проблема №1. Необходимость моделировать всё, что нужно выводить в спецификацию

Как я уже писала выше, каждая строка — это смоделированный элемент, но не все компоненты здания можно создать в Revit персонализированным инструментом. Например, в инженерных ведомостях краска и грунтовка для труб указываются в соответствующем объёме. Специального инструмента для создания грунтовки для труб в Revit нет, но есть инструмент «Краска», который может даже покрасить трубу в нужный материал. Казалось бы, просто создайте материал нужной краски и нужной грунтовки и примените на трубы, но не всё так просто. 

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

В инженерных направлениях часто встречаются подобные позиции в спецификациях. Иногда указывают одну позицию «Металл» с общим количеством на весь объект в килограммах, или дополнительные материалы, например, клей для изоляции и т.п. К сожалению, для их создания в стандартном функционале Revit специальные инструменты не предусмотрены. 

Что же делать? Есть разные варианты решения этой задачи. Сначала мы в ПИК применяли вариант с созданием ключевых спецификаций, где будут прописываться все элементы, которые по тем или иным причинам сложно или невозможно смоделировать. Да, это отдельная спецификация, которую нужно оформить так же, как и основную сводную спецификацию по ГОСТ, и расположить под ней на листах, делая вид, что всё это одна ведомость. 

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

Проблема №2. Вывод необходимых свойств

Свойства элементов заполняются в параметры, а каждый столбец — это параметр элемента. Чтобы в спецификацию выводились необходимые свойства, нужно их заполнять в одни и те же определённые параметры. При этом данные параметры должны быть у всех элементов, которые попадают в спецификацию.

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

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

Пример: системные параметры «Длина», «Площадь», «Объём» есть у труб, воздуховодов и других системных линейных категорий, а у загружаемых категорий эти параметры отсутствуют.

Этот пункт вызывает трудности больше всего в компаниях, где нет BIM-отдела или BIM-координатора по созданию семейств, нет единой базы семейств, и используются скачанные семейства с различных сайтов-платформ или сайтов производителей. Как правило, семейства создают, используя ФОП от ADSK (Файл общих параметров, который разработала компания Autodesk) и параметры из него. 

В свою очередь, компании часто используют собственный ФОП и свои же параметры. Это значит, что большинство семейств в свободном доступе вам не подойдут без корректировки. Даже если у вас работа построена на параметрах ADSK, банально может быть недостаточно стандартных параметров или тех, которые используются в скачанных семействах. Наконец, семейство может быть сделано без использования ADSK параметров, а с какими-нибудь уникальными параметрами.

Решение в таких случаях простое — стандартизация. Для этого в компаниях формируются BEP (план реализации BIM-проекта) и EIR (информационные требования заказчика). Жизнь становится проще, когда у вас есть чёткий регламент, в какой параметр заполнять определенное свойство, в каком формате это свойство записывается в параметр, в шаблоне проекта добавлены параметры на необходимые категории, создана сводная спецификация по ГОСТ на основе этих параметров, и сами параметры добавлены в загружаемые семейства. 

Проблема с выводом необходимых свойств решена, но сразу возникает другая проблема — заполнение параметров.

Проблема №3. Заполнение параметров

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

  1. Сложности при заполнении параметров количества для линейных системных семейств. 

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

  1. Сложности с выводом в наименование позиции размерных характеристик для линейных системных семейств.

Для таких элементов как: категории трубы, материал изоляции труб, воздуховоды, материал изоляции воздуховодов — в наименование позиции необходимо выводить диаметр или размер, толщину стенки и толщину изоляции. За эти характеристики отвечают разные системные параметры, которые являются параметрами экземпляра.

  1. Сложности с выводом в спецификацию массы для линейных системных семейств.

В Revit нет параметра массы для линейных системных семейств. А рассчитать его значение с помощью формулы, основанной на параметре «Длина», не получится. Это связано с тем, что семейство системное и не открывается для редактирования как загружаемые.

  1. Необходимость фильтровать и сортировать общую сводную спецификацию по инженерным системам.

Так как набор системных параметров для инженерных систем неодинаковый, то осуществить фильтрацию и/или сортировку не представляется возможным. Например, у категории «Оборудование» отсутствуют системные параметры «Тип системы» и «Сокращение системы», а осуществлять фильтрацию и/или сортировку по параметру «Имя системы» не всегда корректно, потому что в данный параметр добавляется порядковый номер участка системы.

  1. Заполнение текстовых параметров в зависимости от параметров инженерных систем для загружаемых и системных семейств.

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

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

Склейка

Инструмент «Склеить параметры» (дальше по тексту «склейка») помогает автоматизированно, быстро и безошибочно заполнять одни параметры значениями на основе значений других параметров, а также расчётными значениями, заданными в таблицах Excel.

Склейка работает с двумя основными таблицами: рабочая таблица и таблица правил.

Рабочая таблица представляет собой набор формул, записанных на основе символов, описанных в таблице правил.

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

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

В рабочей таблице заполняется:

  • Целевой параметр — в какой параметр будет происходить запись значения. Параметры, заполняемые плагином в модели, должны быть добавлены «по экземпляру».

  • Формула — значение, которое заполняется в параметр.

  • Критерий или фильтр, по которому плагин определяет, какому элементу в параметр запишется значение. Фильтр — это любой параметр или несколько параметров, по значению которых происходит выборка (фильтрация) элементов для заполнения параметров.

Пример:

59074c8e9b13c0767c3560a678171b1d.png

Таблица правил состоит из двух обязательных листов: «Настройки» и «Размерности».

На листе Настройки перечислены функции, выполняемые при наличии символа в формулах рабочих таблиц:

  • 1-й столбец — название функции, на основании которой происходит сопоставление символа из следующего столбца. При этом корректировать/удалять значения нельзя.

  • 2-й столбец — символы/буквы/цифры, которые необходимо указывать в формулах рабочих таблиц для вызова функции.

  • 3-й столбец — описание, где и как устанавливать данный символ при формировании правил.

  • в следующих столбцах — описание, особенности и примеры.

На листе «Размерности«перечислены различные единицы измерения, которые можно использовать в формулах рабочих таблиц. На данном листе происходит сопоставление общепринятого обозначения единиц измерения, которые можно указывать в формулах рабочих таблиц — в первом столбике, программным единицам измерения (используемых в Revit/Api) — во втором столбике.

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

Что умеет склейка?

Во-первых, склейка умеет записывать значения на основе формул, которые содержат:

  • Конкретное значение. Текстовое или числовое значение записывается в формулу без каких-либо дополнительных символов.

    dc2a2e2c6493bf07025e54b4a6615ed9.png
  • Запись в параметр с типом данных «Да»/«Нет». Функция записывает значение в зависимости от вызываемого символа.

    0a20c57c542ee25f704c9d086687c8cf.png
  • Алгоритмы — это последовательность действий для получения определённых результатов, прописанные в коде, которая выполняется при наличии вызова алгоритма в формуле в соответствии с описанными символами на листе «Настройки». Алгоритм ВСЕГДА вызывается символами <# #>
    Перечень алгоритмов:

    • ParentToChildParameter — это алгоритм перезаписи значения параметра из родительского семейства в аналогичный параметр вложенного семейства.

    • PipeInsulation — это алгоритм подбора диаметра изоляции.

    • SpaceName, SpaceNumber, GroupName — алгоритмы, которые определяет, в каком пространстве/группе располагается элемент и записывает соответственно «Имя», «Номер» этого пространства, «Имя» этой группы.

59fde7c39045d43f348362fa2302e649.png

  • Функции — действия, выполняемые при наличии символа в формулах. Символы, которые вызывают функцию, описание функций и правила записи описаны в таблице правил. Главные функции: функция склеивания нескольких отдельных значений и записи их в один параметр, функция записи расчетного значения, функция перевода единиц измерения, функция записи значения из другого параметра и т.д.

bd12e978e4ad987bc1ea43e68f8d0621.png


В зависимости от типа данных параметра, в формулу можно указывать различные комбинации символов/функций/алгоритмов.

f768037661e31ba7c678b20b0a9b7e1a.png

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

Примеры:

32e22678b2cedd54a532443403e49bbf.png1eb49ae8664f06ecb526e6261db87a93.png24b7e71348cecddd8f87ef38b405db02.png795eae037bdf47b066dd544fa85f2ccc.png

  • Часть значения (используется функция вызываемая символом *). Варианты: только символ *, символ * в конце текста, символ * в начале текста, одновременно и в начале, и в конце текста.

0ed4b196d5272d93e771339074c08196.png

Пример работы

На картинках слева показаны свойства выделенных элементов. В данном случае это труба и воздуховод. Эти элементы линейные и относятся к системным категориям, поэтому общие параметры «по экземпляру» у них не заполнены.

На картинках справа мы видим те же элементы, но с заполненными параметрами. Заполнение производилось инструментом «Склеить параметры». Обратите внимание на значение параметры, где наведена мышка и отображается всплывающая подсказка. Значение этого параметра состоит из значений нескольких других параметров, последовательно указанных с использованием приставок и дополнительных символов. Простым языком, несколько значений будто приклеились друг другу и получилось одно значение, отсюда и родилось название инструмента «Склеить параметры» или «склейка».

81899aa9f5da5d8500bddbf913b725c7.png8be493cbe5ec200e6212bbc7d71752ef.png056d0b49a52f96974e06d3af277f3321.png8d9fe4c65f5367b239f91b9f2434a90c.png

Преимущества

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

Набор функций и возможностей инструмента достаточно обширный и позволяет гибко настраивать таблицы для работы. У склейки есть возможность работать с разными таблицами, в зависимости от того, какая задана в настройках проекта. Также в любой момент можно внести изменения в текущую таблицу, сохранить её и перезапустить инструмент. Склейка отработает по обновленным данным.

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

У нас был опыт перехода с офлайн-формата на онлайн-таблицы, а именно Google Таблицы. Надо сказать, что работало всё так же, без потерь в функционале. Возвращение к Microsoft Excel было обусловлено внутренними правилами компании.

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

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

  • Вторыми отрабатываются формулы, содержащие обращение к другим параметрам, но без обращения к расчётным функциям и алгоритмам;

  • Предпоследними отрабатываются формулы, содержащие обращение к другим параметрам и вызывающие расчётные функции и алгоритмы;

  • Самыми последними отрабатываются формулы, содержащие специальный символ из таблицы правил.

Один из плюсов инструмента — это минимальное количество действий для его запуска. Запуск плагина осуществляется с любого 2D/3D вида или спецификации. Вам потребуется нажать кнопку и выбрать режим его работы из 3-х возможных с помощью выпадающего списка: вся модель, видимые элементы на виде, выбранные элементы. 

781828c0c1bd5005c95a5e92925858bc.png

Также в склейку заложен алгоритм вывода ошибок. В конце работы инструмента открывается окно с журналом («log»), где указаны ошибки, выявленные в процессе. Первое сообщение содержит информацию о таблице, с которой работал плагин, а далее перечисляются ошибки с конкретными данными: параметрами, элементами, типами данных, строками таблицы и т.д. К каждой ошибке указаны сгруппированные id элементов модели, связанные с ней.

Также «log» можно экспортировать и сохранить в формате Блокнота из окна вывода ошибок через кнопку «Открыть в блокноте».

Интерфейс окна вывода ошибок:

f799937e6db683730ce62f50a1d82a75.png

Вывод

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

Склейка открывает большие возможности в области автоматизации процессов в Revit. Самым главным и неоспоримым её преимуществом является гибкость настройки под требования проектной организации и нужды пользователя. Например, в ПИК созданы рабочие таблицы для разных дисциплин, разных типов зданий и внутренних стандартов. Таким образом, мы покрываем перечень различных запросов одним инструментом. Адаптивность склейки, интуитивно понятный интерфейс и гибкая работы с таблицами типа Excel делают её мощным инструментом для оптимизации рабочего процесса в области BIM-моделирования.

P.S. Над этим инструментом трудилось большое количество специалистов, работающих в ПИК. С кем-то мы до сих пор работаем в одном коллективе, а кто-то продолжил карьеру в другом месте, но мы благодарны абсолютно всем за помощь в создании этого полезного инструмента!

© Habrahabr.ru