понедельник, 26 мая 2014 г.

Семейства Revit: параметр для отчетов

Хочу вам рассказать о специфическом типе параметра: "параметр для отчетов". Зачем он нужен? Он, по сути, "снимает" значение с размера и отражает его в спецификации. При определенных условиях его можно использовать и в формулах. В общем, удобная штука, доступная с 2012 версии.
Возьмем, например, площадь откосов окна. Некоторые особо дотошные архитекторы учитывают ее при подсчете отделки помещения. Стало быть, нужно ее посчитать. Как? Умножить неполный периметр окна на глубину откоса.
А как узнать глубину откоса? Обычный параметр экземпляра там не подойдет, т.к. мы меняем значение обычного параметра вручную (сами), а тут нужно, чтобы параметр менялся не нами, а системой, в зависимости от настроек стены и окна. Поэтому нужно использовать параметр для отчета!
Потренируемся на заготовке. Вот окно. Нам нужно вынести вот этот размер (выделен на скриншоте) и превратить его в параметр (естественно, общий параметр, чтоб его потом можно было добавить в спецификацию). При этом автоматически будет создан параметр для отчета (если галка "Параметр для отчета" не будет стоять автоматически, поставьте ее сами):
Загружаем окно в проект, ставим его в несколько стен разной толщины, проверяем (создадим спецификацию).

Ну, раз уж мы в проекте, вычислим площадь откосов. Для этого добавим расчетное значение по такой формуле:
(2 * Высота + Ширина) * Откосы.Глубина

Вроде, все ОК, все работает. Но если начать делать ведомость отделки по "методу Борисова", мы столкнемся с определенными сложностями. Например, чтобы добавить площадь откоса к отделке, придется постоянно смотреть в спецификацию... гораздо удобнее вынести площадь откоса в марку! Но это возможно, только если площадь считается непосредственно в семействе.
В общем, для удобства создадим еще один общий параметр "Откосы.Площадь" с той же формулой, что и в спецификации.

А вот и фигушки! Если параметр для отчета вынесен не на основу, то его нельзя использовать в формулах.
Будем разбираться. Что в нашем случае основа? Это стена, у нас же для окна используется шаблон на основе стены. Значит, параметр для отчета нужно вынести на ширину стены, а потом вычесть из него глубину вставки окна и толщину рамы, чтобы получить откос.
Чтобы параметр работал, нужно выносить размер для параметра на грани стены, а не на опорные плоскости. Для надежности можно изолировать стену :)
Размер параметра "Откосы.Глубина" нужно удалить, в свойствах снять галку "параметр для отчетов" и добавить к нему формулу:
Толщина стены - Глубина вставки - Рама.Толщина
Теперь все получилось. Снова напишем формулу вычисления площади откосов:
Осталась малость. Создадим марку окна, добавим в нее параметр "Откосы.Площадь".

Смотрим, как все работает в проекте:
Вот как-то так.
Итоговый файл проекта можно скачать ТУТ