пятница, 9 июня 2017 г.

Рубрика "Спросите у Чубрика". Спецификация Revit с округлением количества в строке

Наконец появился вопрос, достойный рубрики "Спросите Чубрика" )) 
"Добрый день!
Формирую спецификацию. Бывают позиции, для которых нужно заложить запас (в %-х от проектного количества). Хоть отдельной строкой, хоть одной строкой с примечанием, что учтен запас. 
Пытаюсь создать расчетное значение с применением параметра Число (которым обозначается в Revit количество элементов). А его нет в списке допустимых для формулы параметров. Пробую вручную ввести формулу: Число * 0.1. Выдает ошибку, что поле "Число" не может использоваться в формулах.
Может есть у кого опыт с решением задачи?"

Я набросал вариант такого рода спецификации (не смотрите, что это стены).
Округлённый результат для суммарной длины + для количества, всё с запасам 10%:


Итак, чтобы добиться такого результата, нам надо использовать расчетные значения.
Но не простые расчетные значения, а расчетные значения-процент.


Итак, для начала разберемся, как это работает.
Предположим, мне надо определить, какой % от общей площади квартиры занимает жилая и нежилая площадь:


Тогда я сгруппирую спецификацию сначала по параметру "Номер квартиры", потом по параметру "Тип помещения" и получу такую картинку:


Теперь надо добавить расчетное значение-процент, при этом в списке "Из" выбрать тот параметр, для которого надо рассчитать процент, а в списке "По" - тот параметр, который надо взять за 100% (в нашем случае это "Номер квартиры")


И мы получим вот такой результат (это стандартная спецификация из нашего шаблона Revit 2017):


Итак, если с теорией мы разобрались, приступим к практике. Для начала, решим такую задачу:
У нас есть стены разной длины. Надо для каждой стены посчитать длину с запасом 10%, потом сложить общую длину построчно и округлить ее до целых (будем работать в метрах).
Вот какую спецификацию мы имеем на входе: 




Чтобы что-то округлять (использовать функцию roundup), надо, чтобы значение не формировалось в результате включения галки "вычислять итоги", а было записано единым числом. Т.е. мне надо получить в СТРОКЕ значение Итого из СТОЛБЦА.

Это можно сделать так:
1. Создаем расчетное значение-процент с такими настройками (значение ожидаемо составит 100%, но если мы поставим галочку "для каждого экземпляра", увидим другой результат, более понятный):




2. Создаем расчетное значение, в котором длину делим на параметр % длина и получаем суммарную длину всех экземпляров стен одинаковой длины.



Мы получили общую длину в одной строке, что логично, если посмотреть именно на "развернутую"спецификацию - мы же делили 3,70 на 4%, а не на 100!

Итак, надеюсь что более или менее вам понятно, что мы сделали. 
Теперь если мне надо округлить результат и добавить запас, просто добавляю еще одно расчетное значение с формулой: roundup(1.1*Длина общая/1м)*1м
Обратите внимание на метры!



И, наконец, переходим к самому сложному для понимания - к аналогичной операции с количеством...

У нас есть общая длина, есть длина единицы... как посчитать количество? ))))



и посмотрим на это в "развёрнутой" спецификации:



Теперь осталось добавить коэффициент и округлить:



Вот такой нетривиальный, но полностью автоматический способ!