Revit過濾器

1.過濾器

1.1ElementClassFilter?
ElementClassFilter的作用是根據(jù)類,來過濾Revit文檔中的元素,即獲取到符合傳入類的元素。ElementClassFilter的構造函數(shù)定義是:ElementClassFilter(Type type)??。

使用實例:

public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Document doc = uidoc.Document;

            FilteredElementCollector collector = new FilteredElementCollector(doc);//建立收集器

            ElementClassFilter classFilter = new ElementClassFilter(typeof(Wall));//利用ElementClassFilter對收集器進行過濾
            collector = collector.WherePasses(classFilter);

            //將過濾得到的圖元轉換為id
            IList<ElementId> elid = new List<ElementId>();
            foreach (Element el in collector)
            {
                elid.Add(el.Id);
            }
            //將圖元設置為選中狀態(tài)
            uidoc.Selection.SetElementIds(elid);

            return Result.Succeeded;

        }
測試結果

1.2ElementCategoryFilter??
ElementCategoryFilter即元素類別過濾器。Category(類別)!所有基類為Element類的元素都擁有一個Category屬性用于表示這個元素屬于的類別或者子類別,詳見上一篇數(shù)據(jù)結構。

  ElementCategoryFilter?? categoryFilter = new ElementCategoryFilter??(BuiltInCategory.OST_Walls);//將元素的類別作為傳入?yún)?shù)來過濾元素
            collector = collector.WherePasses(categoryFilter);

元素的類別可以采用如圖方法查看:

查看元素類別
測試結果

2.選擇過濾器
在執(zhí)行命令的過程中,讓用戶自行選擇構件或構建集。

主函數(shù)中的實現(xiàn):
ISelectionFilter WallFilter = new WallSelectionFilter();
            IList<Reference> elementList = uidoc.Selection.PickObjects(ObjectType.Element, WallFilter, "選擇墻");
接口的實現(xiàn):
public class WallSelectionFilter : ISelectionFilter
    {
        public bool AllowElement(Element elem)
        {
            if(elem is Wall && elem.Name == "常規(guī) - 200mm")
            {
                return true;
            }
            return false;
        }

        public bool AllowReference(Reference reference, XYZ position)
        {
            return false;
        }
    }
選擇過濾器
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 視頻連接v.bimcc.com/course/35/tasks 常用過濾器:過濾器、選擇過濾器 一、過濾器 建立一...
    _skyky閱讀 1,619評論 0 2
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評論 19 139
  • 與其說“時間”是個富有距離感的代表詞 還不如說時間是個吞噬光陰的殺手 它就像一把雙刃劍, 我閉上眼睛,太陽在東方;...
    暖心人cc閱讀 512評論 0 0
  • 模板: 網(wǎng)名 斷舍離第 天分享 踐行內(nèi)容: 踐行時間: 踐行成果: 踐行體悟: 例如: 小魚兒 斷舍離第1天分享 ...
    一朵花的距離閱讀 402評論 0 0
  • 吶,時間如同煮在沸水中的一大塊冰。 剛開始的時候,我們坐在爐火邊,希望獲得剛剛好的溫度,在溫暖中安然入睡。這冰塊也...
    學弟家的小鯨魚閱讀 299評論 0 1

友情鏈接更多精彩內(nèi)容