Пересечение наборов параметров в Revit-Api

Я пытаюсь изучить фильтр Quick, Slow и LINQ в Revit API с помощью Python. Поэтому я решил создать универсальный фильтр для любой категории, отфильтровав значения параметров или Семейство / Категория / Символ.

Теперь у меня есть набор элементов разных категорий (стены, полы, семейные символы и т. Д.), Взятые из FilteredElementCollector (документ), и мне нужно получить все параметры, которые есть в любом элементе коллекции. Другими словами, пересечение наборов параметров. Было бы идеально, если бы можно было сделать такой фильтр без использования LINQ.

uidoc = __revit__.ActiveUIDocument
doc = uidoc.Document

collector = FilteredElementCollector(doc)

list_of_categories = [
    ElementCategoryFilter(BuiltInCategory.OST_StructuralColumns),
    ElementCategoryFilter(BuiltInCategory.OST_Walls),
    ElementCategoryFilter(BuiltInCategory.OST_Floors)
]

logical_filter = LogicalOrFilter(list_of_categories)
collector.WherePasses(logical_filter)

Спасибо за любые идеи


person Alexey Ovchinnikov    schedule 09.07.2018    source источник
comment
Я могу подумать, как бы вы могли создать собственный класс с несколькими циклами для достижения этой цели - но это не было бы ни элегантным, ни быстрым, вы ищете что-то нестандартное?   -  person Callum    schedule 13.07.2018


Ответы (1)


Из того, что вы описываете, для меня это больше похоже на объединение наборов параметров, чем на пересечение. Возможно, вы захотите ознакомиться с функциями анализа и обработки параметров, которые я реализовал для RvtMetaProp, Revit C #. NET для импорта и хранения метасвойств, созданных в Forge.

person Jeremy Tammik    schedule 10.11.2018