Autodesk.Revit.DB.FilterRule
是Revit API中的一个类,用于描述Revit视图或元素的过滤规则。过滤规则可以用来过滤元素、图形、注释、尺寸等,以满足特定的场景需求。
该类有一个用于构造实例的构造函数:
public FilterRule(ParameterValueProvider provider, FilterNumericRuleEvaluator evaluator)
参数说明:
provider
: 用于提供参数值的 ParameterValueProvider
对象。evaluator
: 用于评估过滤规则的 FilterNumericRuleEvaluator
对象。该类有以下重要属性:
用于获取过滤规则中对应参数的 ParameterValueProvider
对象。
public ParameterValueProvider Provider { get; }
用于获取过滤规则中的评估器 FilterNumericRuleEvaluator
对象。
public FilterNumericRuleEvaluator Evaluator { get; }
该类没有公共方法。
下面的代码示例演示了如何创建一个用于过滤钢筋柱直径大于等于100mm的过滤规则:
// 获取参数定义中的“直径”参数
var diameterParam = new FilteredElementCollector(doc)
.OfCategory(BuiltInCategory.OST_Rebar)
.OfClass(typeof(Rebar))
.GetFirstElement()
.GetParameters("直径")
.FirstOrDefault();
if (diameterParam != null)
{
// 构造参数值提供者
var diameterProvider = new ParameterValueProvider(diameterParam.Id);
// 构造过滤规则评估器
var evaluator = new FilterNumericGreaterOrEqual();
// 构造过滤规则
var filterRule = new FilterRule(diameterProvider, evaluator);
// 设置过滤规则的值为100
var ruleValue = new FilterDoubleRuleValue(100);
// 应用过滤规则
var filter = new ElementParameterFilter(filterRule, ruleValue);
var columnElements = new FilteredElementCollector(doc)
.OfCategory(BuiltInCategory.OST_StructuralColumns)
.WherePasses(filter)
.ToList();
}
Autodesk.Revit.DB.FilterRule
类提供了创建过滤规则的便捷接口,可以更方便地完成针对Revit元素或视图的过滤需求。在应用过滤规则时,需根据实际情况选择合适的过滤规则评估器,以获得最优效果。