如何编程创建Revit里面的视图过滤器对象


通过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;
  }
}


你可能感兴趣的:(如何编程创建Revit里面的视图过滤器对象)