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

Что такое вложенные семейства

В Ревите мы можем засунуть одно семейство в другое и даже делать матрёшки из нескольких последовательно вложенных друг в друга семейств. То, семейство, в котором сидят все остальные, называют «родительским». Те семейства, которые сидят в родительском, называют «вложенными». Этой терминологией и буду пользоваться далее.

Зачем делать вложенные

Вложенные могут быть полезны по ряду причин.

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

Пример такого семейства: дисковый затвор с электроприводом
Пример такого семейства: дисковый затвор с электроприводом

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

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

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

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

Необщие вообще не учитываются, это просто геометрия внутри другого семейства.

Чтобы сделать семейство общим, нужно в редакторе семейств внутри этого семейства в свойствах поставить галочку «Общий». Не в параметрах типа, не при выделении семейства, просто в редакторе в свойствах, когда ничего не выделено.

Расположение галочки «Общий» в свойствах семейства в редакторе
Расположение галочки «Общий» в свойствах семейства в редакторе

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

Как вложить одно семейство в другое

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

Кнопка загрузки семейства в семейство
Кнопка загрузки семейства в семейство
Семейство появится в диспетчере, совсем как в обычном проекте
Семейство появится в диспетчере, совсем как в обычном проекте

Далее, как и в проекте, просто вытягиваете нужный типоразмер, размещаете в пространстве родительского семейства и привязываете к опорным плоскостям, если нужно управлять положением.

На ленте рядом с «Загрузить семейство» есть кнопка «Загрузить как группу». Если выбрать её, то также можно загрузить семейство, но при этом вы импортируете его геометрию в виде группы, а не загрузите как отдельное семейство.

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

По сути то же самое можно сделать обычным Ctrl+C и Ctrl+V между двумя семействами, но с группами будет аккуратнее.

Что нужно помнить для вложенных

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

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

Чем хороши общие семейства

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

Например: радиатор и запорная арматура, мойка с сифоном, фланец и крепления, пожарный шкаф и его начинка.

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

Чем плохи общие вложенные

У вложенных общих семейств есть ряд серьёзных недостатков, которые нужно учитывать при работе. Пройдусь по всем ним с пояснениями.

Не наследуют параметры системы

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

Электропривод (необщее) окрасился в цвет системы, а фланцы (общие) — нет. В окне свойств параметры системы задвижки
Электропривод (необщее) окрасился в цвет системы, а фланцы (общие) — нет. В окне свойств параметры системы задвижки
Вложенное общее можно выделить, если прищёлкать Табом. Свойства системы общее не наследовало от родительского
Вложенное общее можно выделить, если прищёлкать Табом. Свойства системы общее не наследовало от родительского

Из-за этого очень сложно фильтровать сети по имени системы. Так как параметр «Имя системы» у общего вложенного есть, но ничем не заполнен, то такие вложенные просто скрываются на виде, к которому применён фильтр по имени системы.

Что делать. Можно пользоваться решениями из шаблонов АДСК, например макросами, о них есть статья. Можно создавать свои скрипты Динамо, особенно удобно это делать в версиях 2.6 и позднее, так как там есть базовые ноды для получения всех вложенных семейств.

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

В версиях младше для этой же цели можно использовать сторонние пакеты, например Clockwork. В нём есть нод «FamilyInstance.SubComponents», который выдаст список всех вложенных общих. На английском они называются nested families.

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

Как связывать параметры, расскажу ниже.

Затрудняют перемещение элементов размерами

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

Спойлер: надо под лентой нажать на кнопку «Вывести размеры»
Спойлер: надо под лентой нажать на кнопку «Вывести размеры»

Растягивают границы семейства

Об этом писал выше под заголовком «Что нужно помнить про общие вложенные».

Не заменяются на необщие

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

Потом передумали, зашли в семейство привода, отжали галочку, загружаете обратно, а Ревит выдаёт ошибку:

Ревит не может заменить общее на необщее с таким же именем
Ревит не может заменить общее на необщее с таким же именем

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

Подтягивают все семейства из категории в параметр типоразмера семейства

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

В итоге в выпадающем списке будут все типоразмеры, что не всегда удобно.

Выпадающий список показывает все типы в категории
Выпадающий список показывает все типы в категории

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

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

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

Как связать параметры родительского и вложенного

Давайте запомним простую истину:

Данные передаются только от родительского во вложенное. Обратного потока — нет.

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

Кнопки для связывания параметров
Кнопки для связывания параметров

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

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

Связывание параметров родительского и вложенного
Связывание параметров родительского и вложенного

То же самое можно сделать с параметрами типа у вложенного. Если какой-то параметр во вложенном определяется формулой, то его связать не получится.

Теперь при изменении значения параметра в родительском семействе то же самое значение появится и во вложенном. Обратный поток данных не работает: нельзя поменять что-то во вложенном и чтобы это отразилось на параметрах родительского.

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

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

Как управлять видимостью вложенных

Есть два типа управления: по уровню детализации и просто видно/не видно.

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

«Переопределение видимости/графики» и «Видимые»
«Переопределение видимости/графики» и «Видимые»
Внутри переопределения видимости — всё стандартно
Внутри переопределения видимости — всё стандартно

Команда «Переопределение видимости/графики» также доступна на ленте при выделении вложенного, команда называется «Параметры видимости».

Вторая кнопка слева — Параметры видимости
Вторая кнопка слева — Параметры видимости

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

Чтобы справиться с этим, добавьте во вложенное отдельный параметр-галочку, на который привяжите видимость всей геометрии. И уже в родительском связывайте и стандартный параметр видимости, и ваш пользовательский.

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

Какие сценарии использования

Это будет раздел со своего рода итого. Перечислю варианты, когда могут пригодиться общие и необщие вложенные. Тут не все возможные сценарии, только те, что вспомнил, пока писал статью.

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

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

Если статья пригодилась — ставьте лайки, чтобы помочь её распространению, а лучше сами скиньте коллегам.

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

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

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

Читайте методичку для проектировщиков: полезный материал, в котором последовательно рассказываю, как создавать модель.

Мини-курс по моделированию ОВ и ВК

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