using Autodesk.Revit.DB;
namespace ShrlAlgo.Toolkit.Revit.Helpers;
///
/// 创建参数的参数过滤器
///
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;
}
}