过滤器分为过滤器和选择过滤器,主要用来批量选择Revit文档里的我们所需要的图元。
下面我们开始演示过程,首先建立一个基本的接口环境
一.过滤器
1. FilteredElementCollect:被过滤元素收集器,得到的是需要过滤的元素,而不是过滤后剩下的元素
//建立收集器
FilteredElementCollector collector = new FilteredElementCollector(doc );
2. ElementClassFilter:元素类过滤器,根据类(族,族类别,族实例)对Revit文档中的元素进行过滤,获取所需传入类的元素
利用元素类过滤器对收集器进行过滤
ElementClassFilter classFiter = new ElementClassFilter(typeof(Wall));
collector = collector.WherePasses(classFiter);
最后通过把图元转换为id来提取出所需元素。然后通过Revit----附加元素—外部工具—add in Manager ——run来运行,成功。
3. ElementCategoryFilter:元素类别过滤器,所有基类为element类的元素都有一个category属性用于表示类所属的类别。
利用元素类别过滤器对收集器进行过滤
ElementCategoryFilter categoryFilter = new ElementCategoryFilter(BuiltInCategory.OST_Walls);
collector = collector.WherePasses(categoryFilter);
Category的名称可以通过如下方式查看,框出所选图元——附加工具——Revit Lookup——snoop current selection ,得到如下图
运行成功。
二.选择过滤器
主要是用户在执行命令过程中,让用户自行选择所要的构件或者构建集。
首先建立一个新类public class WallSelectionFilter : ISelectionFilter,并且实现接口,选择所需要选择构建的名称
在主函数里面添加ISelectionFilter wallFilter = new WallSelectionFilter();
IListelementList = uidoc.Selection.PickObjects(ObjectType.Element, wallFilter, "请选择墙");
生成解决方案,框选所需要选择的部分,成功。
网友评论