该类表示用于过滤基于元素ID的过滤器规则。可以将其用作过滤器的一部分,以根据元素ID选择元素。
FilterElementIdRule(ElementId elementId, FilterNumericRuleEvaluator evaluator, bool inverted)
elementId
(必填项): 元素ID,此规则将根据该ID来确定是否应包含或排除元素evaluator
(必填项): 数值类型的规则评估器,用于比较元素ID和过滤器中提供的值。例如,可以使用FilterNumericEquals
来比较两个元素ID是否完全匹配。inverted
(可选项):一个布尔值,指示是否翻转过滤器结果。如果为“true”,则结果将被翻转。创建一个将过滤器规则应用于元素的示例:
// 假设有一个 ElementId 列表
List<ElementId> elementIds = new List<ElementId>()
{
new ElementId(1234),
new ElementId(5678),
new ElementId(9012)
};
// 创建一个将匹配 ElementId 为 "5678" 的规则
FilterNumericEquals equalsFilter = new FilterNumericEquals();
ElementId targetId = new ElementId(5678);
FilterRule rule = new FilterElementIdRule(targetId, equalsFilter);
// 使用规则过滤列表
FilteredElementCollector collector = new FilteredElementCollector(doc, elementIds);
IList<Element> filteredElements = collector.WherePasses(rule).ToElements();
在这个例子中,我们创建了一个将匹配元素ID为“5678”的规则。然后,我们将此规则应用于一个包含三个元素ID的列表中,并且只有一个元素ID与规则匹配。最终,我们使用规则过滤列表,并获取匹配的元素。