该文档介绍了Autodesk.Revit.DB.FilterNumericLess类,该类用于过滤Revit文档中数值属性小于指定值的元素。
public FilterNumericLess(ParameterId parameterId, double value)
1.创建一个Autodesk.Revit.DB.Document对象。可以使用Autodesk.Revit.UI.UIApplication.ActiveUIDocument.Document属性获取当前文档对象;
Document doc = UIApplication.ActiveUIDocument.Document;
2.实例化一个Autodesk.Revit.DB.ParameterId对象,该对象表示您想要过滤的属性的ID。您可以使用Parameter Class的方法获取该ID,如GetParameters方法。
Parameter parameter = element.GetParameters("Height")[0];
ParameterId paramId = parameter.Id;
3.实例化一个FilterNumericLess对象并传入paramId和要筛选的最大值
FilterNumericLess filter = new FilterNumericLess(paramId, 10.0);
4.使用Autodesk.Revit.DB.FilteredElementCollector类的构造函数实例化一个FilteredElementCollector对象
FilteredElementCollector collector = new FilteredElementCollector(doc);
5.使用WherePasses方法将FilterNumericLess对象应用于收集器对象
ICollection<Element> elements = collector.WherePasses(filter).ToElements();
6.现在您可以使用ICollection<Element>对象中的元素执行您想要的操作。
以下示例演示如何使用FilterNumericLess过滤所有高度小于10的墙。
Document doc = UIApplication.ActiveUIDocument.Document;
Autodesk.Revit.DB.BuiltInCategory category = Autodesk.Revit.DB.BuiltInCategory.OST_Walls;
// 获取所有墙
FilteredElementCollector wallCollector = new FilteredElementCollector(doc);
IEnumerable<Element> walls = wallCollector.OfCategory(category).ToElements();
// 创建一个FilterNumericLess对象并筛选高度小于10的墙
var heightParam = BuiltInParameter.WALL_USER_HEIGHT_PARAM;
FilterNumericLess heightFilter = new FilterNumericLess(new ElementId((int)heightParam), 10.0);
IEnumerable<Element> selectedWalls = walls.Where(e => heightFilter.PassesFilter(e));
// 对选定的墙进行操作
foreach (Wall wall in selectedWalls)
{
// 进行操作
}