Revit. Фильтр по параметрам с групповыми условиями

Когда был написан плагин Рабочие наборы, то в нем был придуман инструмент фильтрации элементов по категориям и параметрам. Затем этот инструмент был перенесен в рабочие библиотеки Revit и в последствии внедрен в некоторые плагины – Копировать значения, Раскраска элементов, Сторона света. В работе находится переделка плагина Соединение элементов, в котором также будет использован этот инструмент.

И мы думали, что инструмент получился достаточно гибким, но недавно столкнулись с одной вроде бы простой задачей, при решении которой поняли – инструмент требует доработок!

Задача, которую решали в рамках плагина Рабочие наборы звучала просто – нужно чтобы в один рабочий набор попадали: все несущие колонны, все элементы категории «Каркас несущий», фундаменты и перекрытия, у которых стоит галочка «Несущие конструкции».

В принципе, решение было и выглядело так:

1 ru

Т.е. в фильтре по параметрам пришлось повторять условие совпадения категории, при том, что в фильтре по категориям они уже заданы. Согласитесь, не очень удобно. Да еще и догадаться надо до такого решения.

Решая эту задачу, в первую очередь, мы поняли, что настройку фильтров по параметрам необходимо показывать в отдельном окне, так как диалога, который всегда по ширине равен не более одной трети окна, недостаточно.

А само решение нам подсказали условия в поисковых запросах Navisworks, в которых имеются операторы «И», «ИЛИ» и «НЕ». И хотя в Navisworks не сразу понятно, как ими пользоваться, у нас мы постарались сделать все очевидным:

2 ru

Теперь можно создавать простое и групповое условие. Групповое состоит из таких же простых условий, но все они проверяются через оператор «И».

Также мы переработали строковое представление фильтров по параметрам, чтобы они были понятнее при прочтении.

Ну и резюмируя, решение для вышеописанной задачи:

3 ru

Как видите фильтр стал более лаконичен, логичен и понятен!

Приятной вам работы с ModPlus!