using Autodesk.Revit.DB; namespace ShrlAlgoToolkit.Revit.Assists; /// /// 创建参数的参数过滤器 /// public class ViewFilterAssist { /// /// 类别视图过滤器 /// /// /// public static ElementParameterFilter CreateCategoryFilter(BuiltInCategory builtInCategory) { ElementParameterFilter commonElementParameterFilter = null; List commonFilterRules = new(); List commonCategoryForRules = new() { new(builtInCategory) }; if (FilterCategoryRule.AllCategoriesFilterable(commonCategoryForRules)) { FilterCategoryRule commonCategoryRule = new(commonCategoryForRules); commonFilterRules.Add(commonCategoryRule); commonElementParameterFilter = new ElementParameterFilter(commonFilterRules); } return commonElementParameterFilter; } /// /// 参数的参数过滤器 /// /// /// /// public static ElementParameterFilter CreateParameterFilter(BuiltInCategory builtInCategory, params FilterRule[] rules) { ElementParameterFilter commonFilter = null; List commonFilterRules = new(); List commonCategoryForRules = new() { new(builtInCategory) }; //判断类别是否可用于过滤器 if (FilterCategoryRule.AllCategoriesFilterable(commonCategoryForRules)) { //类别规则 FilterCategoryRule commonCategoryRule = new(commonCategoryForRules); commonFilterRules.Add(commonCategoryRule); foreach (var rule in rules) { commonFilterRules.Add(rule); } commonFilter = new ElementParameterFilter(commonFilterRules); } return commonFilter; } /// /// 视图过滤器过滤规则 /// /// /// 元素Id或整型值 /// public static FilterRule CreateParameterFilterRule(BuiltInParameter parameter, int value) { var paramId = new ElementId(parameter); var filterRule = ParameterFilterRuleFactory.CreateEqualsRule(paramId, value); return filterRule; } }