过滤器

过滤器分为过滤器和选择过滤器,主要用来批量选择Revit文档里的我们所需要的图元。

下面我们开始演示过程,首先建立一个基本的接口环境

过滤器_第1张图片

一.过滤器

    1.  FilteredElementCollect:被过滤元素收集器,得到的是需要过滤的元素,而不是过滤后剩下的元素

        //建立收集器

       FilteredElementCollector collector = new FilteredElementCollector(doc );

         2.  ElementClassFilter:元素类过滤器,根据类(族,族类别,族实例)对Revit文档中的元素进行过滤,获取所需传入类的元素

     利用元素类过滤器对收集器进行过滤

     ElementClassFilter classFiter = new ElementClassFilter(typeof(Wall));

     collector = collector.WherePasses(classFiter);

过滤器_第2张图片

     最后通过把图元转换为id来提取出所需元素。然后通过Revit----附加元素—外部工具—add in Manager ——run来运行,成功。

过滤器_第3张图片

         3.  ElementCategoryFilter:元素类别过滤器,所有基类为element类的元素都有一个category属性用于表示类所属的类别。

利用元素类别过滤器对收集器进行过滤

ElementCategoryFilter categoryFilter = new ElementCategoryFilter(BuiltInCategory.OST_Walls);

collector = collector.WherePasses(categoryFilter);

过滤器_第4张图片

Category的名称可以通过如下方式查看,框出所选图元——附加工具——Revit Lookup——snoop current selection ,得到如下图

过滤器_第5张图片

运行成功。

过滤器_第6张图片

二.选择过滤器

主要是用户在执行命令过程中,让用户自行选择所要的构件或者构建集。

首先建立一个新类public class WallSelectionFilter : ISelectionFilter,并且实现接口,选择所需要选择构建的名称

过滤器_第7张图片
过滤器_第8张图片

在主函数里面添加ISelectionFilter wallFilter = new WallSelectionFilter();    

           IListelementList = uidoc.Selection.PickObjects(ObjectType.Element, wallFilter, "请选择墙");

生成解决方案,框选所需要选择的部分,成功。

过滤器_第9张图片

你可能感兴趣的:(过滤器)