Создавая Revit Семейства, зачастую мы используем формулы, которыми описываем те или иные параметры объекта. Формулы могут быть полезны при создании Семейств, в которых необходимо установить соотношения между его параметрами или зафиксировать их определенные значения. Условные выражения дают дополнительную гибкость при проектировании. Однако, Семейства Revit в этом случае получаются более сложными и емкими, поэтому условные выражения следует использовать только при необходимости. Использование формул и создание сложных Семейств – не для слыбохарактерных. Хотя это и не ракетостроение, поработать со своим левым полушарием иногда тоже полезно).
Оказывается, не все хорошо разбираются в формулах Revit. Недавно мне задали вопрос о том, каким образом ограничить значение длины в Семействе. Этот вопрос побудил меня написать небольшой урок. Я постараюсь продемонстрировать основную концепцию. В дебри Семейства забираться не будем. Покажу лишь поверхностные принципы из возможных, а вот с функциями постараюсь поподробнее... Урок пройдет в 3 этапа. Сначала мы создадим Семейство, затем загрузим его в проект, а потом отредактируем его, используя формулы. Если вам приходилось работать в Excel или программировать что-либо, формулы не должны вызвать сложностей, так как в целом, здесь и там все очень похоже. Для тех, кто не сталкивался с этим, думаю, упражнение будет отправной точкой).
Для тех, кто не совсем понимает формулы, было бы неплохо иметь при себе список с примерами их использования для лучшей наглядности. Главное один раз понять суть. Именно с этого я и хотел бы начать. Продолжение ждите следом. Итак, поехали....
Формулы в Autodesk Revit
Функция IF.
Имеет следующий синтаксис: IF (<условие>, <результат если ИСТИНА>, <результат если ЛОЖЬ>)
Т.е., если <условие> (логическое выражение) выполняется, то значением параметра будет ИСТИНА и, наоборот, если <условие>не выполняется, параметр примет последнее значение - ЛОЖЬ.
= IF (Длина < 300 мм, 200 мм, 40 мм)
Если значение "Длина" меньше, чем 300 мм, то значение параметра будет равным 200 мм
Если "Длина" больше, чем 300 мм, параметру будет присвоено значение 40 мм
- IF со строковым (часто просто текстовым) параметром
= IF (Высота > 3000 мм, “Эта вещь высокая”, “Эта вещь - низкая”),
Если параметр «Высота» больше, чем 3000 мм, параметру присвоится значение «Эта вещь высокая»
Если параметр «Высота» будет меньше чем 3000 мм, значение параметра будет «Эта вещь – низкая»
= IF (Длина < 100 мм, 200 мм, IF (Длина < 150 мм, 250 мм, IF (Длина < 300 мм, 500 мм, 600 мм)))
Если Длина будет меньше, чем 100 мм, то у этого параметра будет значение 200 мм
Если Длина будет между 100 мм и 150 мм, то у этого параметра будет значение 250 мм
Если Длина будет между 150 мм и 300 мм, то у этого параметра будет значение 500 мм
Если Длина будет больше, чем 300 мм, то у этого параметра будет значение 600 мм
- IF с условием типа Да / Нет
= Длина > 1000
Если Длина больше 1000, то оператор – ИСТИНА, флажок Да/Нет выбран
Если Длина 1000 или еще меньше, то оператор – ЛОЖЬ, флажок Да/Нет НЕ отмечен
Например, случай, когда, Metal (металл) не может быть использован (не является Истиной) потому как, использован материал древесины Wood (Истина). Пользователем может быть выбран только один из этих двух материалов. Одновременно, один и второй выбраны быть не могут…

Рисунок 1.
Есть хороший пример у Ильи Глуханюк на блоге revitilution.blogspot.com:
Дано: А=Да, Б=Да, В=Да
Попробуем посчитать сумму для этих параметров... Если значение А, Б и В = Да, значит флажок на этих параметрах поставлен, а следовательно, они принимают значение ИСТИНА, которое в данном примере равняется 1. Имеем:
Сумма = IF(А, 1, 0) + IF(Б, 1, 0) + IF(В, 1, 0) = 1 + 1 + 1 = 3
Дано: А=Да, Б=Да, В=Нет
Здесь два параметра принимают значение 1 (Истина), а один параметр значение 0 (Ложь). Соответственно,
Сумма = IF(А, 1, 0) + IF(Б, 1, 0) + IF(В, 1, 0) = 1 + 1 + 0 = 2
- IF и логический оператор OR (ИЛИ)
= IF (OR (А = 1, В = 3), 10, 5)
Если А = 1 или B = 3, у этих параметров будет значение 10
Если A не равно = 1, или B не равно 3, то у этих параметров будет значение 5
Достаточно выполнить одно из условий
- IF и логический оператор AND (И)
= IF (AND (x = 1, y = 2), 8, 3)
Если x = 1 и y = 2, у этих параметра будет значение 8
Если x не равно 1, и y не равен 2, то у этих параметров будет значение 3
Выполняться должны оба условия
Дополнительно

Рисунок 2.
Здесь condition number (номер условия) позволит только одному параметру быть Истиной в списке. Ассоциировав с Типом, вы можете управлять множеством вещей, просто выбирая правильный Тип.
Если вам нужен какой-то текст, значение которого вы по каким-либо причинам не хотите давать пользователю на легкое редактирование, поместите его в колонку Формулы, разместив в кавычках после знака равно (= «Do Not Change»). В столбце значений он отобразится серым.

Рисунок 3.