Расскажу из своего опыта, как лучше параметризировать геометрические фигуры, то есть как сделать так, чтобы их размеры менялись при изменении значений в параметрах семейства.
На всех скриншотах фиолетовые линии — эскиз геометрии.
Многоугольники
Сначала пройдёмся по фигурам с углами. У них значимыми параметрами являются, как правило, размер стороны и углы.
В тексте буду использовать термин «симметричный размер». В данном контексте это цепочка из двух размеров, у которой включён режим эквивалентности, или равенства. Когда ставите размер, можно нажать на EQ, тогда оба размера станут одинаковыми — симметричными.


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

Треугольник равносторонний
Самый простой вариант треугольника. Достаточно управлять размером одной стороны и парой углов. Вот алгоритм действий в картинках:





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


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

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



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

Помните, что отрицательные значения вводить нельзя, поэтому правильно выбирайте плоскость привязки. В данном примере не смогу увести точку С вправо на более, чем 300 мм — в этом случае размер С1 станет отрицательным, что невозможно.
Пятиугольник равносторонний
Пример будет описывать все n-угольники, в которых n — нечётное и больше 4, а стороны равны. Здесь нужно знать сторону и радиус вписанной окружности.
Сторона и радиус соотносятся вот так: Радиус = 0,5 × Сторона × tg(54°).
Исходя из того, что вам известно, можете параметризировать или радиус, или стороны. Эскиз же параметризируется вот так:

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

По аналогии работайте с любыми подобными фигурами.
Шестиугольник равносторонний
Это частный случай n-угольника, в котором n — чётное и больше 4. Пример шестиугольника будет описывать все подобные случаи равносторонних фигур.
Покажу параметризацию пошагово.
1. Расставляем симметричные размеры и размеры от стороны до стороны. Сделать это нужно для всех пар сторон. Когда ставите размер на «косые» стороны, то ловите пересечение опорных плоскостей нажатием клавиши Tab, должен появиться чёрный квадратик.


2. Расставляем угловые размеры и сразу блокируем. Блокировать нужно (n-1) размер — для шестиугольника достаточно заблокировать 5 размеров. Если блокировать шестой, то Ревит будет ругаться. Достаточно пяти, шестой вообще можно не ставить. Вообще, работает и без блокировки, но с ней как-то спокойнее.

3. Параметризируем расстояние между сторонами — выделяем размеры и создаём или назначаем параметр. После этого можно менять этот размер и шестиугольник будет симметрично меняться.

Пункты 2 и 3 можно менять местами, это не принципиально. Но если меняете, то очень важно сначала заблокировать углы, а уже потом менять значения длины, иначе шестиугольник развалится на неравносторонний.
Всё, теперь при изменении параметра SW шестиугольник будет меняться и не ломаться. Тот же алгоритм нужен для восьмиугольника, просто больше пар сторон придётся образмеривать и больше углов блокировать.
Кривые
Здесь будет речь про окружности, дуги, круглые фаски и эллипсы. Сплайны не рассматриваю, их нельзя параметризировать.
Окружность
Чтобы запараметризировать окружность, нужно включать марку центра. Для этого выделяйте эскиз и в свойствах включайте галочку «Марка центр ВКЛ». У окружности появится центр, его нужно привязывать к пересечению опорных плоскостей — тогда окружность сможет «ездить».


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


Дуга окружности
Более интересный и сложный случай. В Ревите есть два инструмента для создания дуг: первый по двум точкам и радиусу, второй по центру и радиусу.

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

1 — после построения дуги включаю марку центра;
2 — привязываю центр к пересечению опорных плоскостей на замочки;
3 — преобразовываю временный радиальный размер в постоянный;
4 — преобразовываю временный размер с углом дуги в постоянный
Теперь нужно повесить параметры на размеры. Если нужно, чтобы дуга менялась симметрично, то нужно на её концы поставить симметричный размер.

Круглая фаска
Назвал так дугу между двумя линиями. У данной дуги всего один параметр — радиус. Поставьте его, преобразуйте в параметр и готово.

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




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


Чтобы сделать такое, нужно:
- нарисовать окружность головы и окружности ушей;
- инструментом «Разделить элемент» вырезать участки из большой окружности;
- инструментом «Обрезать/удлинить до угла» соединить голову и уши;
- теперь голова — это две дуги, включаем их центры и привязываем к пересечению опорных плоскостей
- ставим диаметры, вешаем параметры — голова запараметризирована;
- создаём опорные плоскости, чтобы привязать уши — ими можно шевелить и делать ближе или дальше от головы;
- привязываем центры ушей к пересечению плоскостей;
- ставим диаметры, вешаем параметры — уши запараметризированы.
Теперь при изменении параметров голова и уши будут меняться. Если на опорные плоскости, к которым крепятся уши, повесить другой параметр, отличный от диаметра головы, то можно будет приближать или удалять уши от головы. Однако помните — эскиз нельзя разрывать, так что уши не могут отделиться от головы.

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

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


Попробуйте сами такое сделать, чтобы лучше разобраться. Главное — все центры нужно привязывать к пересечениям опорным плоскостей, а геометрию, которая лежит под углом к основным опорным плоскостям, нужно привязывать к отдельным опорным плоскостям и через тригонометрию управлять их положением. Вслед за ними будет ездить и геометрия.
Научиться пользоваться формулами можно в крутой статье, в которой подробнейшим образом описываю все формулы в Ревите.
Пишите в комментарии, какие случае параметризации хотели бы рассмотреть и помог ли материал вам лучше разобраться в работе с геометрией в Ревите.
Не забывайте подписываться в Телеграме на канал блога «Блог Муратова про Revit MEP» — так вы узнаете о выходе свежих материалов.
В чате канала можно пообщаться и задать вопросы. Делитесь ссылочками на статьи и Телеграм с коллегами — давайте продвигать знания Ревита в массы!
Читайте методичку для проектировщиков: полезный материал, в котором последовательно рассказываю, как создавать модель.
Бесплатные обзоры ваших моделей
Периодически провожу «Ревит-линчи» — разбираю файлы семейств и проектов пользователей и отвечаю на вопросы по Ревиту и БИМ-технологиям. Дату и ссылку на Ревит-линч публикую в Телеграм-канале. Приходите, там интересно.
Отблагодарить автора
Я много времени уделяю блогу и разработке семейств. Если хотите отблагодарить меня, то можете сделать небольшой подарок (именно подарок, такой перевод не облагается налогом).