通过Revit界面“视图或View”命令选项卡下的“过滤器或Filters”, 用户可以创建自己的过滤器对象。这样你可以为你的过滤器结果设置不同的显示样式和特征。
通过Revit 的API同样可以实现编程创建视图过滤器。
下面这些代码演示了如何创建一个柱子类型的视图过滤器(给定柱子的名称)。从这里可以了解创建的过程和需要调用的函数。
注意: 这里给类型名称的内置参数是:
ALL_MODEL_TYPE_NAME
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.ApplicationServices;
using Autodesk.Revit.Attributes;
[TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public class RevitCommand : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string messages, ElementSet elements)
{
UIApplication app = commandData.Application;
Document doc = app.ActiveUIDocument.Document;
Transaction trans = new Transaction(doc, "ExComm");
trans.Start();
List<ElementId> categories = new List<ElementId>();
categories.Add(new ElementId(BuiltInCategory.OST_Columns));
ParameterFilterElement parameterFilterElement = ParameterFilterElement.Create(doc, "Comments = foo", categories);
parameterFilterElement.Name = "JoeTest";
FilteredElementCollector parameterCollector = new FilteredElementCollector(doc);
Parameter parameter = parameterCollector.OfClass(typeof(FamilySymbol)).FirstElement().get_Parameter(BuiltInParameter.ALL_MODEL_TYPE_NAME);
List<FilterRule> filterRules = new List<FilterRule>();
filterRules.Add(ParameterFilterRuleFactory.CreateEqualsRule(parameter.Id, "610 x 610mm", true));
parameterFilterElement.SetRules(filterRules);
trans.Commit();
return Result.Succeeded;
}
}