revit 二次开发之收集器、过滤器和选择器
一、收集器
主要是在文档中,收集出所需要的元素和对象,在revit的定义中,收集器是一个可以迭代的对象。
名称 | 功能 |
---|---|
FilteredElementCollector(Document) |
从文档种收集所需要的元素
|
FilteredElementCollector(Document, ElementId) | 从文档和试图种收集需要的元素 |
FilteredElementCollector(Document, ICollection<(Of <<'(ElementId>)>>)) | 从指定的元素种收集需要的元素 |
包含的主要过滤函数
函数名称 | 函数功能 |
OfCategory(BuiltInCategory.OST_Doors); |
通过类别收集 |
OfCategoryId(new ElementId(BuiltInCategory.OST_Doors)); |
通过类别id收集 |
OfClass(typeof(Wall)); |
通过类型收集 |
WherePasses(new RoomFilter()); |
通过过滤器收集 |
2、FilteredWorksetCollector工作集收集器
文档中过滤出指定工作集的元素,其代码如下:
函数名称 | 作用 |
OfKind | 主要是WorksetKind类别的区分 |
WherePasses(new RoomFilter()); | 通过过滤器收集 |
二、过滤器
过滤器是配合收集器一起工作的,主要是用于更加细致过滤工作,所有的过滤器都继承自ElementFilter,其基本关系如下:
每个过滤器都有自己的作用,这里不细细说,可以参考之前的微博:revit二次开发之 过滤器一 - Min.Xiaoshuang - 博客园
三、选择器 ,主要实现ISelectionFilter 接口实现。
在revit中,通常需要选取指定对象和类型,则需要实现ISelectionFilter接口,相结合在Selection对象中,进行指定构件的选取。
其主要包含两个接口:
AllowElement | 允许选取的元素 |
AllowReference | 允许选取的引用 |