На прошлой неделе я читал курс "BIM мастер 2.0".
К курсу прилагалась методичка, и я решил опубликовать ее часть, посвященную формулам в Revit. Что называется, "как есть".
Пользуйтесь.
В формулах используются следующие операторы и функции:
Все следующие функции имеют стандартную запись:
функция (значение)
Например: sin (Угол) – синус параметра «Угол».
Имена параметров в формулах чувствительны к регистру. Если имя параметра начинается с заглавной буквы, например "Ширина", то формулах его следует вводить именно начиная с заглавной буквы.
Примеры использования функций в формулах:
Если нужно заблокировать от изменения из проекта значение какого-либо параметра, его значение пишут в формуле (для текста значение пишут в кавычках):
Для значений в формулах можно использовать функцию округления.
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), а потом, после округления – умножить на это число.
IF (<условие>, <значение, если выполняется>, <значение, если не выполняется>)
Пример: if (Площадь > 1 м², 500 мм, 300 мм)
Пример читается так:
Если Площадь больше 1м², то Отступ равен 500 мм, а если меньше – то Отступ равен 300 мм
При использовании параметры типа "Да/Нет" форма записи условия укорочена:
В условии можно использовать следующие операторы сравнения: "<", ">" и "=". Также поддерживается использование логических операторов: "AND", "OR" и "NOT".
На текущий момент не поддерживаются операторы "<=" и ">=". Однако, эти операторы может заменить логический оператор "NOT". Например, неравенство a<=b можно записать как NOT(a > b).
Примеры формул с условными выражениями:
Если Длина больше 350 мм, то пишем "Текст1", а если меньше или равно - пишем "Текст2"
Если параметр "х" равно 1 и параметр "у" равно 2, то пишем "8", а если "х" не равно 1, или параметр "у" не равно 2 - пишем "3"
Если параметр "А" равно 1, или параметр "В" равно 2, то пишем "8", а если параметр "А" не равно 1, и параметр "В" не равно 2 - пишем "3"
Если Длина меньше 10500 мм, то параметр равен 450 мм,
а если Длина больше или равна 10500 мм, но меньше 13500 мм, то параметр равен 900 мм,
а если Длина больше или равна 13500 мм, но меньше 16500 мм, то параметр равен 1500 мм,
а если Длина больше 16500 мм, то параметр равен 2400 мм.
Если нужно запараметризовать параметр типа "Да/Нет", также используется укороченная форма записи.
Еще больше про формулы вы можете прочитать в других статьях моего блога:
Семейства Revit. Параметризация вложенных семейств Revit.
Семейства Revit. Настраиваем массив "как импосты в витражах". Часть 1
Семейства Revit. Настраиваем массив "как импосты в витражах". Часть 2
Семейства Revit. "Центровка массива". Частный случай
Семейства Revit. "Уклон или градус? И то и другое, или ни в чем себе не отказывайте!"
Семейства Revit: параметр для отчетов
Немного про марки в Revit
К курсу прилагалась методичка, и я решил опубликовать ее часть, посвященную формулам в 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).
Примеры работы формул по округлению:
Площадь 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 мм.
Если нужно запараметризовать параметр типа "Да/Нет", также используется укороченная форма записи.
Еще больше про формулы вы можете прочитать в других статьях моего блога:
Семейства Revit. Параметризация вложенных семейств Revit.
Семейства Revit. Настраиваем массив "как импосты в витражах". Часть 1
Семейства Revit. Настраиваем массив "как импосты в витражах". Часть 2
Семейства Revit. "Центровка массива". Частный случай
Семейства Revit. "Уклон или градус? И то и другое, или ни в чем себе не отказывайте!"
Семейства Revit: параметр для отчетов
Немного про марки в Revit
ОтветитьУдалитьОтличные статьи) Подскажите , как правильно написать формулу для спецификации бруса?. Мне нужно посчитать, сколько 6м получится для проекта? ( у меня указаны длины каждого бруска , например 2м, 3м, 4м и тд) вроде сумма(if(2+3+4+n)<6=1),(if(2+3+4+n)<6=1),(if(2+3+4+n)
Александр)
УдалитьУ меня была похожая задача с канализационной трубой. Нужно было посчитать количество палок трубы исходя из длины участков. Я решил эту задачу с помощью формулы в спецификации
УдалитьПодскажите, если нужно задать условия текстовому параметру (Марка):
ОтветитьУдалить=IF (AND(Марка = 1 , Марка = 2), Параметр А, Параметр Б ). Но ревит не даёт задавать условия текстовым параметрам. Как выйти из ситуации?
Добрый день. Вот озадачился, нужно из суммы размеров число округлить в большую сторону и чтобы оно было кратно 300. Может кто встречал такое?
ОтветитьУдалить