過濾器分為過濾器和選擇過濾器饱狂,主要用來批量選擇Revit文檔里的我們所需要的圖元犁罩。
下面我們開始演示過程,首先建立一個基本的接口環(huán)境
一.過濾器
??? 1.? FilteredElementCollect:被過濾元素收集器溜畅,得到的是需要過濾的元素钦无,而不是過濾后剩下的元素
??????? //建立收集器
?????? FilteredElementCollector collector = new FilteredElementCollector(doc );
???????? 2.? ElementClassFilter:元素類過濾器,根據(jù)類(族祠汇,族類別仍秤,族實例)對Revit文檔中的元素進行過濾,獲取所需傳入類的元素
???? 利用元素類過濾器對收集器進行過濾
? ?? ElementClassFilter classFiter = new ElementClassFilter(typeof(Wall));
? ?? collector = collector.WherePasses(classFiter);
???? 最后通過把圖元轉(zhuǎn)換為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 ,得到如下圖
運行成功菜拓。
二.選擇過濾器
主要是用戶在執(zhí)行命令過程中瓣窄,讓用戶自行選擇所要的構(gòu)件或者構(gòu)建集。
首先建立一個新類public class WallSelectionFilter : ISelectionFilter纳鼎,并且實現(xiàn)接口俺夕,選擇所需要選擇構(gòu)建的名稱
在主函數(shù)里面添加ISelectionFilter wallFilter = new WallSelectionFilter();? ??
??? ? ?? ? IListelementList = uidoc.Selection.PickObjects(ObjectType.Element, wallFilter, "請選擇墻");
生成解決方案,框選所需要選擇的部分贱鄙,成功劝贸。