Автор: Dmitry Chubrik
На прошлой неделе я читал курс "BIM мастер 2.0".
К курсу прилагалась методичка, и я решил опубликовать ее часть, посвященную формулам в Revit. Что называется, "как есть".
Пользуйтесь.
Синтаксис формул
Формулы Revit поддерживают стандартные арифметические операции и тригонометрические функции.
В формулах используются следующие операторы и функции:
Сложение: +
Вычитание: -
Умножение: *
Деление: /
Возведение в степень: ^ (Пример: 3^2 – это 3 в квадрате, т.е. 3 в степени 2)
Все следующие функции имеют стандартную запись:
функция (значение)
Например: sin (Угол) – синус параметра «Угол».
Логарифмирование: log
Извлечение квадратного корня: sqrt
Синус: sin
Косинус: cos
Тангенс: tan
Арксинус: asin
Арккосинус: acos
Арктангенс: atan
10 в степени x: exp(x)
Модуль числа: abs
Число Pi: pi()
Имена параметров в формулах чувствительны к регистру. Если имя параметра начинается с заглавной буквы, например "Ширина", то формулах его следует вводить именно начиная с заглавной буквы.
Примеры использования функций в формулах:
Длина = Высота + Ширина + sqrt(Высота * Ширина)
Длина = Длина1 + Длина2
Площадь = Длина * Ширина
Площадь Круга = pi() * Радиус^2
Объем = Длина * Ширина * Высота
Ширина = 100 мм * cos(Угол)
Параметр = 2 * abs(a) + abs(b/2)
Число элементов массива = Длина / Шаг
Если нужно заблокировать от изменения из проекта значение какого-либо параметра, его значение пишут в формуле (для текста значение пишут в кавычках):
Для значений в формулах можно использовать функцию округления.
round(x) Функция round возвращает значение, округленное до ближайшего целого числа. При этом не учитывается направление округления. round(3.1) = 3, round(3,5) = 4
roundup(x) Функция roundup возвращает значение, округленное до максимального целого значения, большего или равного х. roundup(3) = 3, roundup(3.1) = 4
rounddown(x) Функция rounddown возвращает значение, округленное до минимального встроенного значения, меньшего или равного х. rounddown(3) = 3, rounddown(3.7) = 3
Округление работает только с числами без размерностей, т.е. не работает с параметрами длины, площади и т.п.
Чтобы округление работало, нужно в записи выражения с округлением сначала убрать единицы (делением на 1, единицы Revit подставит сам), а потом (после функции округления) вернуть единицы (умножением на 1).
Примеры работы формул по округлению:
Площадь 01 - простое округление
Площадь 02 - округление в меньшую сторону
Площадь 03 - настроено округление до десятых в большую сторону.
Чтобы округлять до конкретного числа, нужно сначала поделить значение на это число (в данном примере – поделить на 0,1), а потом, после округления – умножить на это число.
Синтаксис условных выражений
В Revit можно использовать условные выражения.
Структура условного выражения:
IF (<условие>, <значение, если выполняется>, <значение, если не выполняется>)
Пример: if (Площадь > 1 м², 500 мм, 300 мм)
Пример читается так:
Если Площадь больше 1м², то Отступ равен 500 мм, а если меньше – то Отступ равен 300 мм
При использовании параметры типа "Да/Нет" форма записи условия укорочена:
В условии можно использовать следующие операторы сравнения: "<", ">" и "=". Также поддерживается использование логических операторов: "AND", "OR" и "NOT".
На текущий момент не поддерживаются операторы "<=" и ">=". Однако, эти операторы может заменить логический оператор "NOT". Например, неравенство a<=b можно записать как NOT(a > b).
Примеры формул с условными выражениями:
IF со строковым параметром: IF (Длина > 350 мм, "Текст 1", "Текст 2")
Если Длина больше 350 мм, то пишем "Текст1", а если меньше или равно - пишем "Текст2"
IF и логический оператор AND (должны выполняться все условия, перечисленные в скобках): =IF (AND(x = 1 , y = 2), 8, 3 )
Если параметр "х" равно 1 и параметр "у" равно 2, то пишем "8", а если "х" не равно 1, или параметр "у" не равно 2 - пишем "3"
IF и логический оператор OR (должно выполняться хотя бы одно условие из перечисленных в скобках): =IF (OR( A = 1 , B = 2), 8, 3 )
Если параметр "А" равно 1, или параметр "В" равно 2, то пишем "8", а если параметр "А" не равно 1, и параметр "В" не равно 2 - пишем "3"
Вложенное IF-условие: =IF(Длина < 10500 мм, 450 мм, IF(Length < 13500 мм, 900 мм, IF(Длина < 16500 мм, 1500 мм, 2400 мм)))
Если Длина меньше 10500 мм, то параметр равен 450 мм,
а если Длина больше или равна 10500 мм, но меньше 13500 мм, то параметр равен 900 мм,
а если Длина больше или равна 13500 мм, но меньше 16500 мм, то параметр равен 1500 мм,
а если Длина больше 16500 мм, то параметр равен 2400 мм.
Если нужно запараметризовать параметр типа "Да/Нет", также используется укороченная форма записи.