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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Создаю элемент выдавливания:

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

 

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

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

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

Теперь этот болт можно вращать инструментом "Повернуть" так, как нам нужно:

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