|
通过Revit界面“视图或View”命令选项卡下的“过滤器或Filters”, 用户可以创建自己的过滤器对象。这样你可以为你的过滤器结果设置不同的显示样式和特征。
通过Revit 的API同样可以实现编程创建视图过滤器。
下面这些代码演示了如何创建一个柱子类型的视图过滤器(给定柱子的名称)。从这里可以了解创建的过程和需要调用的函数。
注意: 这里给类型名称的内置参数是:
- [csharp] view plaincopy
- ALL_MODEL_TYPE_NAME
- [csharp] view plaincopy
- 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;
- }
复制代码 作者:叶雄进文章来源:http://blog.csdn.net/joexiongjin/article/category/782739
|
|