Filter by Parameter Values
Overview
The ElementParameterFilter()
allows filtering elements that contain a specific value in one of its parameters. This filter is complex due to its utility and requires several steps.
Example
Step 1: Define the Parameter
-
BuiltIn Parameter:
param = BuiltInParameter.ALL_MODEL_INSTANCE_COMMENTS
-
User-Created Parameter:
iterator = doc.ParameterBindings.ForwardIterator()
while iterator.MoveNext():
if iterator.Key.Name == "ParameterToBeSearched":
param = doc.GetElement(iterator.Key.Id)
break
Step 2: Define the Value Provider
-
BuiltIn Parameter:
Provider = ParameterValueProvider(ElementId(param))
-
User-Created Parameter:
iterator = doc.ParameterBindings.ForwardIterator()
while iterator.MoveNext():
if iterator.Key.Name == "ParameterToBeSearched":
Provider = ParameterValueProvider(iterator.Key.Id)
break
Step 3: Define the Evaluator
- Example:
evaluator = FilterStringEquals()
Combining the Filter
- Final Filter:
Filter = ElementParameterFilter(FilterStringRule(Provider, evaluator, "Value", False))
Elements = FilteredElementCollector(doc).WherePasses(Filter).ToElements()