пятница, 29 июля 2016 г.

"Элемент не может быть повернут в эту позицию"

...а также немного информации о рабочих плоскостях и способах поворота элементов в семействах.

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

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

Когда первый раз столкнулся с проблемой много лет назад - тоже подумал: "Что за глупое ограничение!".
Но сейчас (и уже не первый раз) понимаю, что ограничения появились неспроста, и они отражают саму суть логики программы. Итак, в чем же особенность?


Дело в том, что Ревит - параметрическая САПР, основанная на рабочих плоскостях.
"Параметрический" - значит, что в элементы могут передаваться какие-то значения (параметры) и эти элементы автоматически изменяются (удлиняются, поворачиваются, изменяют конфигурацию) в зависимости от этих параметров, по определенным зависимостям.

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


Фактически, единственные элементы, которые действительно "висят в воздухе" - это оси, уровни и опорные плоскости.
Благодаря этому можно, например, изменить высоту первого этажа (переместить выше уровень второго этажа) и быть уверенным, что все элементы на этих этажах также передвинутся на нужную высоту.

Проблема параметризации рабочими плоскостями - в том, она имеет однозначное решение только в случае ортогональных плоскостей. Простой пример - вертикальные и наклонные колонны. Колонна - объект "На базе двух уровней" - для неё указывается нижний и верхний уровень. Что будет происходить, если изменится высота уровня? Для вертикальной колонны - всё просто: увеличится высота колонны.
Но для наклонной колонны всё сложнее. В этом случае есть выбор:
 - сохранить угол, под которым расположена колонна;
 - сохранить положение точек начала и конца колонны в плане.
Статья в справке:

Этот функционал добавлен искусственно, и доступен только для "Колонн". Возможно, когда-нибудь подобное появится и для других категорий, но теперь понятно, откуда у проблему ноги растут.
А сейчас любое семейство устанавливается на плоскость и все действия с семейство производятся только на этой плоскости. Хороший пример - инструмент "Повернуть".
В каком-нибудь 3DMax можно вращать объект по каждой из трех осей:
В Revit вращение происходит только в плоскости, на которую установлено семейство:

Неудивительно, ведь Max и Revit - программы совсем разного назначения.

Но что же делать, если действительно нужно сделать наклонный фундаментный болт? Есть разные варианты:
 - создать наклонную именованную опорную плоскость и установить элемент на неё;
 - создать возможность поворота внутри самого фундаментного болта;
 - сделать семейство болта не "вертикальным", а "горизонтальным", установить его на вертикальную плоскость в проекте, и вращать обычным инструментом "Повернуть".

Вариант 1: установить на наклонную опорную плоскость


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

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

Вот так получилось:

Вариант 2: создать поворот внутри семейства болта:

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

Привяжем начальную точку вспомогательной линии к пересечению опорных плоскостей:
Нажимайте Tab, чтобы выбрать не всю линию, а её конечную точку.

Создадим параметр угла поворота:

"Вспомогательная линия" - интересный объект. Она имеет 4 плоскости, которые можно использовать в качестве рабочих плоскостей для размещения элементов.

Укажу нижнюю плоскость вспомогательной линии в качестве рабочей плоскости:

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

Вариант 3: установка на вертикальную плоскость

Идея простая. Если мы можем вращать элементы только в плоскости, на которую установили элемент, а повернуть нам надо в вертикальной плоскости - установим болт на вертикальную плоскость.
Для этого семейство болта сделаем "Лежащим на боку" :)

Включим "На основе рабочей плоскости" и отключим "Всегда вертикально".
В проекте нам понадобится вертикальная рабочая плоскость. Можно использовать вертикальную боковую грань фундамента, создать в плане именованную опорную плоскость, или использовать в качестве рабочей плоскости одну из осей.
Я установлю на грань фундамента:
Теперь этот болт можно вращать инструментом "Повернуть" так, как нам нужно:

Каждый из способов в чем-то удобен, каком применять - выбирайте по ситуации.
Рабочие плоскости - может быть, проклятье Ревита, но задачи вполне можно решать, если научиться с ними работать.
Удачи!

4 комментария:

  1. Может кому-нибудь будет интересно...
    http://revitandbridge.blogspot.ru/2016/07/revit_8.html?m=1

    Спасибо за статью!

    ОтветитьУдалить
    Ответы
    1. В вашем способе семейство сломается, если задать нулевой или отрицательный, а затем положительный угол. "Вспомогательная линия" работает гораздо надежнее.
      А наклонные сваи я бы делал наклонными колоннами.

      Удалить
    2. Странно, но мое семейство работает после задания нулевого или отрицательного угла.
      За советы спасибо!

      Удалить
    3. Александр, проблема решается присвоению семейства категории "Оборудование", плюс параметр "всегда вертикально" должен быть включен.

      Удалить