Существует несколько способов поворачивать вложенные семейства в родительских. Расскажу о тех, что применяю сам и поделюсь маленькими хитростями, которые помогут семействам не ломаться.
1. Управление угловым размером
Мой любимый способ. Суть проста: привязываем геометрию семейства к угловому размеру, вешаем параметр на угловой размер и меняем его — семейство вращается.
Однако тут есть пара нюансов.
- Вложенное семейство нужно подготовить — создать точку привязки, вокруг которой оно будет вращаться.
- Привязывать угловой размер к главным плоскостям нельзя: Ревит иногда путается и теряет правильную привязку, в итоге не может повернуть семейство или ломает геометрию.
Всё это решается с помощью вспомогательных линий. Чтобы создать точку привязки — нарисуйте две перпендикулярные коротенькие вспомогательные линии так, чтобы они пересекались в той точке, вокруг которой должна вращаться геометрия. Не забудьте привязать их к опорным плоскостям.
После загрузки вложенного в родительское семейство, нужно привязать вложенное к пересечению опорных плоскостей. Вокруг этой точки будет вращаться семейство. Для этого используем обычную команду выравнивания и последующее закрывание замочков.
Собрал все шаги на отдельных картинках:
По идее, уже сейчас можно привязать угловой размер к семейству и вращать его, но рано или поздно угол сломается. Поэтому делаю небольшую хитрость: угол отсчитывается от вспомогательной линии, а не от центральных опорных плоскостей (так я называю закреплённые опорные плоскости, которые всегда есть в редакторе).
Для этого рисую вспомогательную линию, привязываю её начало к пересечению центральных опорных плоскостей. Ставлю угловой размер к линии и закрепляю угол замком — он будет неизменным. И уже от этой линии ставлю угловой размер до вложенного семейства. В итоге отсчёт угла идёт не от центральных плоскостей, и ошибка с углами не возникает, всё крутится идеально.
Далее формулами параметризую угловой размер, а для пользователя вывожу отдельный параметр для управления углом, в визуально более понятных значениях. Ревит ещё любит развернуть семейство и поворачивать его с левой половины, поэтому делаю так, чтобы было понятно, что и куда крутится.
И помните: Ревит вращает тела против часовой стрелки.
Вот несколько примеров из 3Д, как вращается тело (жаль, тут гифку не приложить):
По-моему, удобно.
2. Размещение на грани тела вращения
Кажется, любимый способ Алексея Борисова, именно его он рекомендует на форуме Автодеска. Этот способ будет хорош и для вложенных семейств и для отдельных тел внутри семейства. Метод основан на возможности привязать тело к грани другого тела, в данном случае — тела вращения. У тела вращения можно управлять углом, соответственно, будет перемещаться и другое тело, привязанное к грани тела вращения. Сейчас по картинкам будет понятнее.
Вот тело вращения. Если его выделить в редакторе семейств, то в свойствах есть два угла. Поменяю их значения, тело станет «недовращённым». Соответственно, появится пара граней, чьим положением можно управлять с помощью углов.
Есть грань, на грани можно размещать другие тела. Для примера создам «бумеранг» — вложенное семейство, которое размещается даже не на грани, а просто на рабочей плоскости. Вот бумеранг:
Теперь загружу бумеранг в семейство Пакмана. По умолчанию бумеранг сразу будет размещаться на грани. Остаётся просто навести бумеранг на нужную грань Пакмана и кликнуть мышкой. Семейство бумеранга разместится на грани и теперь будет вращаться вместе с ней.
Вот такой метод. По идее, можно и внутри семейства элементы геометрии привязывать не к опорным плоскостям, а к граням, и добиться такого эффекта. Но я так никогда не делал, задачи не было.
Зато, совместив первый и второй вариант, вы можете создать семейство, в котором можно вращать элемент сразу в двух плоскостях. Однажды я создавал такое семейство профильного листа для перекрытия, которое должно было вращаться и в продольном сечении и в поперечном. Получилось, вот так оно выглядит на 3Д-виде при угле просмотра сбоку под 45°. Обратите внимание на углы в свойствах.
3. Скрытие видимости
Метод может показаться колхозным после двух перечисленных выше, однако это тоже рабочий метод. Например, у вас есть ручка задвижки, которая находится либо в положении открыто, либо закрыто. В этом случае можно взять два экземпляра одной и то же ручки и просто разместить их в одном месте под углом 90° друг к другу. А после каждому экземпляру назначить свою галочку видимости «Открыто» и «Закрыто».
Так как возможен только один вариант, то ещё и формулу добавить, которая будет автоматически включать второй вариант при отключении первого. Если хотим по умолчанию оставить положение «Открыто», то в параметр видимости для закрытой ручки пишем формулу «not(Ручка открыта)» и всё.
Это проще, чем городить углы поворота, привязывать их к геометрии. Вот пример из моего семейства Текофи, через видимость и реализовал эти положения ручки.
Конечно, можно потестировать, что лучше скажется на весе файла — дополнительный экземпляр геометрии или дополнительные параметры углов. Думаю, разница несущественна, а галочки сделать проще и быстрее, чем параметризировать углы.
Как вариант, два положения можно реализовать в самом вложенном семействе вот такой ручки, и тогда вы по сути будете переключать видимость одного семейства через параметры родительского.
Этих трёх способов мне вполне хватает. Есть другие? Делитесь ими в комментариями или в телеграм-группе блога.