При работе с инструментом Dynamo есть интересная особенность с округлением и сегодня мы с вами ее разберем.
Мы с вами привыкли к математическому округлению, ему еще нас учили в школе, поэтому для нас правильно округлить 2.5 до 3.
Dynamo использует банковское округление. Оно отличается от математического тем, что предполагает округление к ближайшему четному числу, что мы с вами и наблюдаем.
На ваш вопрос зачем вообще придумали такое округление отвечу: для статистики! Дело в том что в случае с математическим округлением мы округляем в меньшую сторону 4 значения (1, 2, 3, 4) и в большую 5 (5, 6, 7, 8, 9), как вы видите получается не совсем честная картина. Банковское округление делает округление статистически верным, что важно для бухгалтеров........СТОП!
НО МЫ ИНЖЕНЕРЫ-СТРОИТЕЛИ!
Давайте смотреть, как вернуться к такому родному математическому округлению.
Нам необходимо прибегнуть к Python, для этого вбейте в поисковой строке Python Script. Не переживайте строчка кода совсем маленькая.
- OUT = round (IN[0], IN[1]).
- IN[0] - значение или группа значений (подобное будет решаться через циклы), которые мы хотим округлить.
- IN[1] - до какого знака после запятой будет происходить округление.
В Dynamo, который поставляется совместно с Revit 22 появилась возможность переключения версий языка Python. В 3 версии Python округление работает по банковскому правилу, то есть мы возвращаемся к тому же НОДу "Math.Round"
В скрипте могут уживаться НОДы Python Script 2 и 3 версии, но если в будущем не будет возможности воспользоваться переключением, то покажу вам "костыль" выглядит ужасно, работает просто:
Хитрость крайне проста, к нашему числу мы прибавляем очень малое значение. В программировании множество решений, возможно именно вы найдете лучшее.