Спецификации и расчеты через «процент»
Готовлю следующую статью по каркасам и закладным в шаблоне Weandrevit (начало здесь), но для начала нужно разобраться, как работают расчеты через «процент».
Сразу скажу: этот метод изобрел не я. Упоминания про него есть на форуме Autodesk, в русскоязычной сфере метод популяризировал Дмитрий Чубрик, а конкретную реализацию «сборочных единиц» предложил Павел Сазонов. Я же только, как водится, слепил всё вместе и присвоил себе все лавры (идеально!). Здесь просто опишу идею своими словами.
Так в чем же идея?
Вычисление итогов
В спецификацию Revit можно добавить параметр «Число», который будет выводить количество элементов, попавших в эту строку:
Но параметр этот немного странный: например, его нельзя использовать в формулах.
Одна из самых частых ошибок начинающих: выводим длину одной детали и их количество через «Число», и хочется ещё дать суммарную длину. Надо ведь просто умножить длину на количество — но не тут-то было:
Если нужно получить общую длину, то поступаем иначе: в формуле просто приравниванием к «Длине», но затем для этого параметра включаем «Вычислять итоги»:
При включении этого флажка Revit просто суммирует все числа, попавшие в одну строку спецификации. Можно даже сымитировать параметр «Число», введя расчетный параметр со значением «1» и тоже включив для него «Вычислять итоги»:
Теперь понятно, почему нельзя умножать на Число — это будет просто умножение на 1! Важно понимать, что даже если включена «Группировка» и мы видим в спецификации только три строки, то это только, так скажем, иллюзия. Все расчеты Ревит всё равно выполняет с каждым элементом отдельно (в моем примере формула посчитается 6 раз), и только после этого склеится в строки.
Ну, пока всё просто, это же азы Ревита. Или вы только начали изучать Ревит и не понимаете, о чем вообще речь? Записывайтесь на наш курс обучения!
Процент
Но что, если всё-таки нужно каким-то образом учесть в расчетах количество элементов? Самый житейский пример: оптовые цены ниже розничных, и если покупаем что-то в большом количестве — цена будет меньше, чем за штучный товар. Получается, в Ревите это не реализовать, ведь формула для одного элемента не может узнать о других элементах? Способ есть!
Посмотрим, как работает расчетный параметр через «Процент»:
Такой параметр может показать, какую долю занимают значения в одной строке от общего значения. Например, на данной картинке выводится доля длины каждого типа стен от общей длины всех стен. Звучит пока не очень полезно, но главное — то, что значение зависит не только от элемента в этой строке, но и от других строк!
Можно посчитать процент от ранее созданного параметра со значением «1» — тогда получим долю количества элементов в этой строке от общего количества:
Ну и что толку с этого процента, скажете вы? Вот тут начинается главная магия: формула «1 / процент»!
Для начала включу в спецификации «Для каждого экземпляра». У меня 6 элементов и каждый, значит, имеет долю 100/6 = 16.7% ≈ 17%:
16.7% можно записать как 0.167, и если посчитать «1 / 0.167» — снова получим исходное количество 6:
И это количество уже «реальное», в отличие от «иллюзии», созданной «вычислением итогов». Теперь элемент в первой строке знает, что он не одинок, а у него есть пять «братьев» — и число 6 можно использовать в формулах!
Кстати, если переключать сортировку, видно, что процентное значение меняется (как будто для него включено «вычислять итоги», хотя эта настройка для того параметра ничего не делает), но количество через «обратный процент» остается постоянным:
Можно посчитать «процентную долю» не от общего количества элементов, а внутри какой-либо группы. Для этого нужно, чтобы в спецификации была включена группировка по какому-либо параметру, и тогда в параметре процента можно считать не по «Общему итогу», а по этому параметру. Я сделаю побольше стен в разных типах, дам группировку по «Типу» и пересчитаю процент через «Тип»:
И вот каждый элемент в первой группе знает, что в этой группе шесть «собратьев», во второй — три и так далее. Кстати, выбирать для «процента» можно только параметры, по которым сделано группирование (ну оно и логично).
Ладно, всё это очень увлекательно, но как на практике-то применить?
Сценарий 1: оптовые закупки
Можно ввести формулу, результат которой будет зависеть от количества элементов. Предположим, если мы покупаем более 2 товаров одного типа, то нам дают скидку 20%:
Всё просто — проверяю количество, и если больше 2, то умножаю цену на 0.8.
Было бы ещё круто отсортировать спецификацию по размеру скидки или по количеству, чтобы в начале шли более «массовые» товары, а далее штучные, но почему-то в сортировке нельзя выбрать эти параметры:
Как думаете, почему? Пишите в комментариях!
Сценарий 2: среднее значение
В Revit помимо «Вычисления итогов» есть возможность получить минимальные и максимальные значения, свалившиеся в эту ячейку (появилось в Revit 2017):
Но можно ли получить среднее значение? Да!
Как бы мы посчитали среднюю длину калькулятором? Просуммировали бы все длины и поделили на количество. (Обращаю внимание, что если сложить максимальное и минимальное значение и поделить на 2 — получим медианное значение, а не среднее). В Ревите же мы сделаем наоборот: сначала поделим длину каждого элемента на их количество:
А затем включим «Вычислять итоги» для этой длины:
Проверяю: (2800+4900+4900+3300+4400+5100)/6 = 4233! Всё сходится. Можно и посимпатичнее всё оформить:
Сценарий 3: количество типов элементов
В спецификации видно, что в модели применены 4 типа стен. Но это я просто посчитал, тыкая пальцем в монитор. А можно ли именно получить в спецификации цифру 4? Да!
Для этого создам расчетный параметр с типом «Число» и просто приравняю его к «проценту»:
Сумма всех долей в одной группе равна 100%, поэтому, если включить «вычислять итоги» и убрать «для каждого экземпляра» — суммарное значение для каждого типа будет равно 1. А если теперь для этого параметра включить «Общий итог» — получим нужное нам число 4:
На этом пока всё! Ждите статью про использование этого метода для подсчета каркасов и закладных.
Всем привет! Тут мой блог об Autodesk Revit, а на самом деле — просто блокнот, куда я записываю свои идеи.
Надеюсь, что информация окажется полезной и интересной.
Параметры и формулы
Начал писать статью два года назад, опубликовал только сейчас. Иду на рекорд!
«Объединение параметров», которое в 2017 версии появилось — супер-крутая штука, если её правильно приготовить:
В 2015 версии, например, для такой спецификации пришлось бы отдельные столбцы городить:
Хвала Автодеску, что они следят за нашими проблемами и оперативно их исправляют!
А еще расскажу о том, для чего нужно вот это семейство в шаблоне (удивительно, но оно напрямую связано с сегодняшней темой):
Как всегда, добро пожаловать под кат.
Я тут вам немного формул принёс
Часто спрашивают: вот есть в семействе три элемента, на каждом — параметр видимости, и как сделать так, что один флажок включаешь — остальные выключаются:
Сейчас расскажу! (нет)
Округление: меньше килограмма до сотых, больше — до десятых
В форматировании спецификации мы можем указать, с какой точностью выводить значение.
Вот только небольшие значения лучше выводить с округлением до сотых, а большие — с округлением до десятых. Такое обычно надо в спецификации арматуры.
Подсчет элементов в спецификациях, запас, округление в Revit
Одной из самых больших преимуществ Revit является его работа со спецификациями. Благодаря множеству настроек и четкой логике программы можно создать спецификацию любой сложности. В этой статье я на конкретных примерах расскажу и покажу все особенности создания спецификаций в Revit.
Все примеры будут поделены на уровни сложности. Более легкие в реализации примеры будут в начале, более сложные в конце.
Небольшая вводная информация к примерам
Для примера создал семейство кубика с двумя типоразмерами « 300*300*300 » и « 500*500*500 ».
Семейство отнес к категории «Обобщенные модели».
По мере усложнения спецификации я буду редактировать это семейство.
Уровень сложности 1 «Просто посчитать количество»
Представим у вас в проекте есть какой-либо элемент загружаемого семейства. Теперь представим, что вы разместили таких объектов столько, что сами забыли. А считать вручную стыдно, BIM все-таки же.
Расставил для примера свои кубики 2 видов
На данном этапе вы скорее всего и наткнулись на эту статью. Ну что же, начнем.
Спецификации в Revit можно заметить в диспетчере проекта. Для них есть отдельная группа.
Для того, чтобы создать свою спецификацию, необходимо перейти на вкладку « Вид » и на панели « Создание » найти кнопку « Спецификации ».
Выпадающее меню «Спецификации»
Нажав на нее, перед нами появится список из нескольких видов спецификаций. Самыми востребованными являются спецификации 1 и 4. Начнем с 1 и создадим спецификацию количества элементов.
В открывшемся окне необходимо:
1. Определить категорию спецификации. Другими словами, если нужно посчитать семейства категории обобщенной модели, то необходимо выбрать категорию « Обобщенные модели ». Если вам необходимо посчитать в одной спецификации семейства разных категорий, то выбирайте самую первую строчку « Несколько категорий ». Таким образом, у вас получится спецификация нескольких категорий.
Узнать категорию семейства можно из диспетчера задач проекта, либо из свойств самого семейства.
2. В этом поле можно ввести имя новой спецификации. Потом его можно будет поменять.
3. Выбор стадии. Выбирать нужно ту стадию, к которой принадлежат объекты вашего подсчета. Из-за неправильного выбора стадии элементы могут не отобразиться в спецификации.
Нажав « Ок », откроется следующее окно.
В этом окне для начала нужно выбрать параметры, которые будут в новой спецификации. Если мы хотим посчитать количество кубиков каждого типа, то нам нужны параметры « Семейство и типоразмер », а также « Число ».
Для того, чтобы параметр попал в спецификацию, его необходимо выделить (1), нажать на кнопку переноса параметра (2), и после добавления всех параметров нажать « Ок » (3).
Полученная спецификация
Получилось не совсем то, что мы хотели. Но не стоит опускать руки, сейчас начнется самое интересное и познавательное.
Время для знакомства с настройками спецификации!
Для начала, где они? — В окне свойств вида, у меня вот справа. Пять кнопок в конце свойств, которые ведут в одно и тоже окно, но на разные вкладки.
Условно показал, какая кнопка какой вкладке соответствует. Я в большинстве случаев не обращаю внимания на какую из кнопок я кликаю, потому что в итоге произвожу настройки параллельно на нескольких вкладках.
А теперь вернемся к нашим кубикам, а точнее к спецификации на эти кубики. У нас была проблема, что списком отобразились абсолютно все кубики в проекте, хотя нам нужно было отобразить общее количество по каждому типу кубиков.
Для исправления данной ситуации перейдем на вкладку « Сортировка/Группирование » и уберем галочку « Для каждого экземпляра ».
Нажмем « Ок » и посмотрим, что получилось.
Выключенный «Для каждого экземпляра»
Вновь получилось не совсем то, что мы ожидали. Почему так произошло? Мы отключили параметр « Для каждого экземпляра » во вкладке « Сортировка/Группирование » и теперь Revit группирует все элементы по определенному признаку, а параметр « Число » считает количество элементов, группированных по этому же признаку. В первой колонке у элементов встречаются несколько разных значений, но так как ячейка одна, то Revit не выводит ничего.
Для решения этой проблемы, давайте настроим сортировку в этой же вкладке по параметру « Семейство и типоразмер » и посмотрим, что получится.
Чудо! Мы знаем сколько каких кубиков!
Уровень 1.5 «Без ADSK_Количество, Число, мам, пап и кредитов»
Странное название раздела, но оно того стоит. На этом примере у вас появится хорошее понимание основной логики подсчета параметров в спецификациях.
Предположим, что на все элементы нужно заложить запас. Допустим, процентов 17%. И все это нужно сделать в рамках Revit здесь и сейчас.
Для этого давайте познакомимся с расчетным параметром, который можно создавать в спецификациях. Чтобы его создать, необходимо перейти на вкладку « Поля » и кликнуть по кнопке со значком функции.
Откроется окно, в котором вы можете создать параметр, который может внутри себя содержать формулу, либо какое-либо значение. Для начала давайте просто попробуем вписать в него 1 и посмотрим, что получится.
Как видим, в колонке « Тест » все строчки имеют значение 1.
Теперь познакомимся со вкладкой « Форматирование ».
На этой вкладке можно менять заголовки у параметров, определять ориентацию и многое другое. Сейчас нас интересует список внизу. Тут настраивается отображение данных в колонке параметра.
Значение « Не рассчитано » означает, что параметр будет выводится в явном виде. Например, « Тест » у нас имеет значение 1. Поэтому Revit и выводит значение 1.
Если поставить « Вычислять итоги », то Revit будет складывать значения всех элементов в строке и выводить в ячейку итог. Это как раз-таки то, что нам нужно.
Значения в колонке параметра « Тест » с включенным вычислением итогов соответствуют значениям из колонки « Число »
Давайте рассмотрим детально как это произошло. Параметр « Тест » у всех элементов имел значение единицы. В первоначальном виде, когда мы настроили группировку по семейству и типоразмеру и не выбрали « Вычислять итоги » во вкладке « Форматирование », в спецификацию выводилось значение этого параметра. То есть, если у Кубика 300х300 значение было «1», то в спецификацию и выводилась «1». И все равно, что таких кубиков 16.
Когда мы выбрали у колонки Тест « Вычислять итоги », то Revit посчитал в спецификации сумму значений параметров « Тест » всех элементов строки. Другими словами, он просто сложил все значения « Тест » элементов строки. Например, для Кубика 300х300 это выглядело так: 1+1+1+1+…+1+1=16 (16 раз складывается значение параметра).
Если непонятно, то лучше перечитайте от начала этого пункта. А сейчас мы перейдем к первоначальной задаче – посчитать количество кубиков с запасом 17%.
Так как нельзя задать коэффициент и умножить его на значение итога, полученное при помощи « Вычислять итоги », то зададим запас на каждый элемент. То есть, если нужен запас в 17%, то зададим параметру « Тест » значение 1.17. Тогда 1.17 будет складываться и в итоге мы получим то же самое, что если бы умножили итог на 1.17:
1.17+1.17+…(складываем N раз)….+1.17 = 1.17 * (N)
Изменение уже созданного расчетного параметра.
Посмотрим, что получилось:
Для начала проверим правильность спецификации: умножим значение из колонки число на 1.17 и сравним со значением из колонки тест.
Вычисление корректные, теперь нужно правильно их представить в виде целых чисел. Тут есть два пути:
1. Настроить форматирование единиц к колонке « Тест »;
2. Достаточно сложный для понимания способ округления вверх до целого.
Сейчас рассмотрим первый путь, второй способ рассмотрим в следующем пункте.
Для начала откроем окно « Форматировать единицу ». Сама кнопка его открытия находится над спецификацией, но для ее активации сначала необходимо выделить столбец, в котором необходимо отредактировать формат единицы.
После открытия снимаете галочку с « Настройки по умолчанию ». Выбираете тип единицы « Фиксированные ». Далее задаете величину округления « 0 десятичных знаков ». Таким образом, у вас получится округлять значения согласно математическим правилам.
Спецификация с округлением по математическим правилам.
Такой способ округления плох тем, что может округлять и в меньшую сторону. Если ваш коэффициент запаса может такое терпеть, то вариант рабочий, если нет, то в следующем пункте мы рассмотрим округление до целого числа вверх.
Уровень 2 «Сложные трудности»
Как было сказано в предыдущем разделе, в этом мы рассмотрим, как округлять расчетный параметр « итого » (в нашем случае « Тест ») до целого числа вверх.
Расчетные параметры позволяют внутри себя производить различные операции преобразования. Например, можно использовать разные операторы:
Условия — if(условие, значение при выполнении условия, значение при невыполнении условия)
Округления – round(), roundup(), rounddown()
Арифметических действий — *,/,+,- и так далее.
Все точно так же, как и в параметризации семейств.
Давайте попробуем использовать оператор roundup(), который позволяет округлять числа до большего целого. Для чистоты эксперимента создадим дополнительный параметр « Округление вверх ».
Создание дополнительного расчетного параметра.
Вот что получилось.
Мне кажется, или нас пытаются обмануть…
Включим « Вычислять итоги » в новой колонке и посмотрим, что получится.
Нас обманывают! (для чистоты эксперимента отключил округление в «Тест»)
Как видно в спецификации, после включения « Вычислять итоги » у колонки с округлением вверх, мы получаем неприлично большие результаты. Так почему же так происходит?
Здесь мы сталкиваемся с важной особенностью и отличием спецификации в Revit от тех же таблиц Excel. В Revit происходит вычисление согласно значениям параметров элементов модели. Если в параметр содержит в себе единицу, то все манипуляции в расчетном параметре будут производиться с этой единицей. И все равно, что там стоит « Вычислять итоги ». Revit все равно будет считать исходя из значений параметров элементов.
В связи с этим мы не можем использовать значения, полученные при помощи вычисления итогов и просто умножать их на какое-либо число. В том же Excel мы вольны делать с числами что угодно, потому что их значения записываются в ячейку. В Revit значения постоянно вычисляются заново исходя из значений параметров в элементах модели.
Но, не начинал бы я эту статью, не зная, как это обойти. Самое время познакомиться с процентами в расчетных параметрах!
Для начала сама идея. Так как я не могу использовать значение « Вычислять итоги », то мне нужно записать в каждый элемент значение его общего количества в проекте. Другими словами, каждый элемент в себе будет иметь информацию о том, сколько таких же как он. В дальнейшем с этим значением я могу делать что угодно, потому что оно будет записано в каждый элемент и постоянно пересчитываться.
Вернемся обратно к процентам. Если я узнаю какой процент составляет элемент от его общего количества, то путем деления 1/% смогу узнать количество, из которого этот процент высчитывается. Если непонятно, то дальше я покажу это наглядно.
Наглядное отображение кубиков и их процентов.
Разобравшись с теорией, приступим к ее реализации в Revit.
Создадим параметр N = 1.
Узнаем какой процент эта единица будет составлять от общего числа « таких » единиц. Для этого создадим расчетное значение через процент от параметра N по имени и типоразмеру семейства. Для того, чтобы создать такой параметр, нужно поставить метку напротив « Процент ».
Процент N от всех N в этом типоразмере.
И наконец, создадим последний параметр, который будет делить единицу на полученный в предыдущем шаге процент.
Что получилось в итоге.
Последний столбец содержит в себе заветное число.
Для наглядности включу « Для каждого экземпляра ».
« Для каждого экземпляра » включен.
Как видно из этой спецификации, общее количество элементов записалось в каждый элемент. Уже с этим числом (1/N%) мы можем делать что угодно и получать корректные значения.
Создадим параметр « Количество с запасом ».
Исправим параметр « Округление вверх »: формулу и поставим « Не рассчитано » вместо « Вычислять итоги ». Также выключим для « Для каждого экземпляра ».
Исправленный параметр « Округление вверх » (не забудьте отключить « Вычислять итоги »!).
Вот что получилось.
Наш первоначальный « Тест » совпадает с « Количество с запасом », а это значит, что общее количество элементов с учетом запаса определяется правильно. « Округление вверх » теперь тоже работает правильно, округляя до ближайшего целого числа.
Скроем ненужные колонки путем установки галочки « Скрытое поле ».
Скрытие ненужных полей.
Скрыл ненужные поля.
В следующей статье я рассмотрю вопросы, связанные с оформлением спецификаций, где также покажу несколько лайфхаков.
Автор статьи: BIM менеджер ООО «АМКАД» rsaraev@amcad.ru
Формулы Revit
Синтаксис — это правила написания формул.Правила достаточно простые и обеспечивается это от части тем, что ревит знает не так много операций. Местами это усложняет работу, но в тоже время это упрощает освоение инструмента.
ТОП функций для формул revit
Сложение — «+» Вычитание — «-» Умножение — «*» Деление — «/» Округление — «round(x)» Округление вверх — «roundup(x)» Округление вниз — «rounddown(x)» Условное выражение ЕСЛИ — «If» Логический оператор И — «And» — сочетание выполнения условий Логический оператор ИЛИ — «Or» — выполнение хотя бы одного условия из перечисленных Логический оператор НЕ — «Not»
Округление в Revit
Иногда нужно не просто округлить число, но нужно сделать это кратно какой то величине или до определённого порядка.
Как в ревит округлить число до десятых? Округляя, мы стираем все знаки после запятой. Получается, когда мы хотим округлить до десятых, нам надо сначала увеличить число на 10, потом округлить, а потом обратно уменьшить на 10. = round( х * 10 ) / 10
Как в ревит округлить до определённой величины? Иногда нужно, чтобы шаг размеров был не просто без десятых, но и кратен какой-то величине. Например конструктора часто размер деталей делают кратным 50 или 100, причём округляют размер до 50 вверх. Как это сделать? Нам нужно разделить всю длину на части по 50 мм, округлить вверх (чтобы учесть последнюю часть длиной меньше 50мм), а далее обратно домножить на 50. = roundup( x / 50) * 50
Условные выражения в формулах Revit
Условные выражения используются, когда мы хотим через формулу сказать, что значение переменной зависит от каких-то внешних условий. Основным условным выражением служит условие «ЕСЛИ».
Функция «ЕСЛИ» в Revit
Объясним на примере: Допустим есть балка и её высота, зависит от её длины. Если длина балки больше 2 метров, то её высота должна быть 400 мм, а если меньше 2 метров, то 300мм. Это условие будет записано так:
= IF ( Длина > 2000, 400, 350) где «Длина > 2000» — это условие; «400» — значение в случае, если условие выполняется или, правильнее сказать, значение в случае, когда утверждение «Длина > 2000» — это ИСТИНА «350» — значение в случае, если условие НЕ выполняется или, правильнее сказать, значение в случае, когда утверждение «Длина > 2000» — это ЛОЖЬ
Итого, выражение ЕСЛИ записывается с помощью формулы = if( Условие, Значение если условие ИСТИА, Значение если условие ЛОЖЬ)
Функции «И, ИЛИ и НЕТ» в Revit
Эти параметры используются как самостоятельные, так и как вспомогательные к ЕСЛИ.
Как самостоятельные И Например, у нас есть параметр с типом данных Да/Нет (он же «булевый», он же «галочка», он же «чек-бокс»). «Да» его значение будет или «Нет», ИСТИНУ он обозначает или ЛОЖЬ — это тоже можно задать с помощью формулы. Например сказать «=Длина > 2000» — если длина действительно больше 2000мм, то значение параметра будет ИСТИНА, то есть поставится галочка. Можно сказать, что галочка ставится только если выполняется сразу два условия = AND (Длина > 2000; Ширина > 500) — если Длина больше и Ширина больше, то выражение ИСТИНА, а значит поставится галочка.
ИЛИ галочка может зависеть от соблюдения только одного из двух условий = OR (Длина > 2000; Ширина > 500) — если Длина больше, или если Ширина больше, то выражение ИСТИНА, а значит поставится галочка
НЕТ Нет используем для противопоставления. Например, когда нужно, чтобы был параметр ДА/НЕТ, значение которого противоположно значению другого параметра ДА/НЕТ. Например есть параметр «Левый» , который галочка и значение которого мы задаём вручную и есть параметр «Правый» , который тоже галочка и который мы уже не задаём, а который противопоставляется левому = NOT (Левый)
Функции Revit «И, ИЛИ и НЕТ» как вспомогательные в «ЕСЛИ»
Так как первое поле в ЕСЛИ — это условие, которое должное быть истиной или ложью, то там мы можем использовать «И», «ИЛИ» и «НЕТ» Например =IF ( AND (Длина > 2000; Ширина > 500) , 400, 350 ) =IF ( OR (Длина > 2000; Ширина > 500) , 400, 350 ) =IF ( НЕТ (Длина > 2000) , 400, 350 )
ЕСЛИ ЕСЛИ ЕСЛИ.
ЕСЛИ также может быть вложенным условием
Например Условие — Если длина балки больше 2000мм, то, если её ширина > 300, то высота должна быть 350, а если ширина меньше или равна 300, то высота должна быть 400, а ещё если изначальное условие — ЛОЖЬ и длина балки меньше 2000, то высота = 300.
Условие будет выглядеть так: = IF (Длина > 2000, IF(Ширина = 300, 350, 400) , 300)
Прочие операций revit
Степень «^» Возведение в степень: ^ (Пример: x^y, где число x возводится в степень y) Логарифмирование: log Извлечение квадратного корня: sqrt (Пример: sqrt(16)) Синус: sin Косинус: cos Тангенс: tan Арксинус: asin Арккосинус: acos Арктангенс: atan 10 в степени x —exp(x) Модуль числа: abs Pi—pi (3.141493. )
Нюансы формул Revit
- Размер имеет значение. «Длина» и «длина» — два разных параметра
- Если переименовать параметр, то он переименуется и во всех формулах где он был использован
- Если в формуле написать Длина без кавычек, то ревит будет искать параметр Длина, а если написать «Длина» в кавычках, то ревит посчитает что это какой-то текст.
- Единицы результата вычисления формулы должны совпадать с типом данных параметра. Например иногда формулу нужно домножить на 1мм или разделить на 1мм.