Автор: 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)
Число элементов массива = Длина / Шаг
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqjJoZ8i1O1XZqhcCt9zRDKbxuOebOiNhyphenhyphen9TNsk8CTg_d6mY4XThbZuOqN6MNJluT17bBAF8yGPfPYEs4X6edJ5xjPw4_Ot5n4Pn5V-hw7DMbhI3yVXCThSQxn4-Sv-Er9cOip1kWCWchM/s400/42-01.png)
Если нужно заблокировать от изменения из проекта значение какого-либо параметра, его значение пишут в формуле (для текста значение пишут в кавычках):
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq58M3fpb0Kmo4Wd42I5W9fUMiW_o7x6_x2o9iuCuQzvqYuvtMaiXdvD7FjXEtuW2wXgtRdXDqzgcuxDX9t7mJoWk9V-KZcfUSD-9c-vqD6yNtWKC541vwaGBosbNVXWuU20LmtiiZMUrG/s400/42-02.png)
Для значений в формулах можно использовать функцию округления.
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 мм)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQjnsHlnp064YYeQckgtEJh6XrqixNCOhJWM6NPPwTa8dinVkoFNSQAob3a_0CgxZHGA-N5AhMI2J4g_SLa3oB1qrymLoJw4Wc7tbOACMSC0Ilbe02c1Q7cxs-wuj6muPZ0DJyrHIBBymV/s400/42-05.png)
Пример читается так:
Если Площадь больше 1м², то Отступ равен 500 мм, а если меньше – то Отступ равен 300 мм
При использовании параметры типа "Да/Нет" форма записи условия укорочена:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhw1YSCfYUZ6cARZVCILTaMP-DZgao3r884gHJ6Ox88FfiKZ-Em-B1XathjnbmRUMCEwf1etxsdkqT_AyW1ZuPPTWWtQVmWrWOgtxC_3wM1TY3cSvEssWa12Vvwe5VPyCAicPRFICSxGi7p/s400/42-07.png)
В условии можно использовать следующие операторы сравнения: "<", ">" и "=". Также поддерживается использование логических операторов: "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 мм.
Если нужно запараметризовать параметр типа "Да/Нет", также используется укороченная форма записи.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh14hcm_hyphenhyphenYrGinZYfM_ctox1xTwN_FQaGnxEg-dKeU8GTMk9VXsLN03yeCebyoFhw3_KAAHh_Hxd75X6aeURJv1DPkW0qrG6NTU4S21_1FV75lzjxpyOwWioNzAPt5KsVXIr98uOxLD-Vp/s400/42-06.png)