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

1. Управление угловым размером

Мой любимый способ. Суть проста: привязываем геометрию семейства к угловому размеру, вешаем параметр на угловой размер и меняем его — семейство вращается.

Однако тут есть пара нюансов.

  1. Вложенное семейство нужно подготовить — создать точку привязки, вокруг которой оно будет вращаться.
  2. Привязывать угловой размер к главным плоскостям нельзя: Ревит иногда путается и теряет правильную привязку, в итоге не может повернуть семейство или ломает геометрию.

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

Вот они, две вспомогательные линии
Вот они, две вспомогательные линии

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

Смотрите карусель, собрал все шаги на отдельных картинках:

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

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

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

Угол_Сифон привязан к вспомогательной линии и осевой линии в семействе
Угол_Сифон привязан к вспомогательной линии и осевой линии в семействе
Управляющие параметры
Управляющие параметры

И помните: Ревит вращает тела против часовой стрелки.

Вот несколько примеров из 3Д, как вращается тело (жаль, тут гифку не приложить):

Угол 90
Угол 90
Угол 0
Угол 0
Угол 135
Угол 135

По-моему, удобно.

2. Размещение на грани тела вращения

Кажется, любимый способ Алексея Борисова, именно его он рекомендует на форуме Автодеска. Этот способ будет хорош и для вложенных семейств и для отдельных тел внутри семейства. Метод основан на возможности привязать тело к грани другого тела, в данном случае — тела вращения. У тела вращения можно управлять углом, соответственно, будет перемещаться и другое тело, привязанное к грани тела вращения. Сейчас по картинкам будет понятнее.

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

Тело вращение сразу после создание замкнутое
Тело вращение сразу после создание замкнутое
Поменял углы, привет, объёмный Пакман
Поменял углы, привет, объёмный Пакман
После введения углов получили две управляемые грани
После введения углов получили две управляемые грани

Есть грань, на грани можно размещать другие тела. Для примера создам «бумеранг» — вложенное семейство, которое размещается даже не на грани, а просто на рабочей плоскости. Вот бумеранг:

В свойствах ставим галочку «На основе рабочей плоскости», а галочку «Всегда вертикально» снимаем
В свойствах ставим галочку «На основе рабочей плоскости», а галочку «Всегда вертикально» снимаем

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

Вот вращение с углами 180° и 0°, бумеранг лежит себе спокойно
Вот вращение с углами 180° и 0°, бумеранг лежит себе спокойно
А вот уже углы 240° и 0°, бумеранг спокойно повернулся вместе с гранью на 60° (180 + 60)
А вот уже углы 240° и 0°, бумеранг спокойно повернулся вместе с гранью на 60° (180 + 60)

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

Зато, совместив первый и второй вариант, вы можете создать семейство, в котором можно вращать элемент сразу в двух плоскостях. Однажды я создавал такое семейство профильного листа для перекрытия, которое должно было вращаться и в продольном сечении и в поперечном. Получилось, вот так оно выглядит на 3Д-виде при угле просмотра сбоку под 45°. Обратите внимание на углы в свойствах.

Профиль меняет положение в двух плоскостях
Профиль меняет положение в двух плоскостях

3. Скрытие видимости

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

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

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

Ручка в положении «открыто», галочка на параметр «Ручка_Открыто»
Ручка в положении «открыто», галочка на параметр «Ручка_Открыто»
Ручка в положении закрыто, галочка автоматически переходит на «Ручка_Закрыто» при снятии галочки с «Ручка_Открыто»
Ручка в положении закрыто, галочка автоматически переходит на «Ручка_Закрыто» при снятии галочки с «Ручка_Открыто»
Формула в семействах на параметрах видимости
Формула в семействах на параметрах видимости

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

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

Этих трёх способов мне вполне хватает. Есть другие? Делитесь ими в комментариями или в телеграм-группе блога.

Видеокурс по семействам трубопроводных фитингов. Подробный 10-часовой курс, в котором научу создавать семейства и поделюсь лайфхаками.

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

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

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