溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Revit如何通過過濾器獲取元素

發(fā)布時間:2022-03-18 13:56:58 來源:億速云 閱讀:88 作者:iii 欄目:大數(shù)據(jù)

今天小編給大家分享一下Revit如何通過過濾器獲取元素的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

獲得元素的辦法:

1、創(chuàng)建一個收集器(Collector)

FilteredElementCollector fil = new FilteredElementCollector(doc);

這里舉個栗子:

你媽剛從超市買了過年要吃的蠶豆和綠豆,結(jié)果被你個混小子打破袋子,全都掉在地上混在一起,你媽要你馬上給她整理好,你天資聰慧不想一顆一顆去撿,想了一個好辦法就是用篩子篩選出來,那么我們要先把散落在地上的大豆和綠豆用簸箕掃起來,收集器在這里就是簸箕的作用,把散落在doc的構(gòu)件收集起來裝在fil這個容器里。

2、創(chuàng)建一個過濾器

ElementClassFilter el = new ElementClassFilter(typeof(Wall));(類過濾器)

過濾器就是我們的篩子,可以用來篩選蠶豆和綠豆,留下你想要的。當然篩子的種類有多種多樣,我們的API同樣提供了多種篩子。

ElementCategoryFilter eld = new ElementCategoryFilter(BuiltInCategory.OST_Doors);(類別過濾器)

過濾好了以后,要拿出來你需要的東西,那么我們需要進行獲取。

(1)調(diào)用 fil.WherePasses( );

  fil.WherePasses(el);這樣我們就獲取了收集器fil中的墻的類型。

          fil2.WherePasses(el2);我們獲取了收集器fil2里的所有的門。

         有些人可能會有疑問,或者會犯這種錯誤:在同一個收集器里調(diào)用兩次.WherePasses( ),這會造成一個問題你所取得的構(gòu)件是0個。因為收集器你篩選一遍獲得墻之后,你再去篩選就只剩下墻了,你不可能再去篩選出來門。可你能從墻里再篩選出來疊層墻。這就像你在豬圈里能找到豬,在豬里能找到小黑豬,但你肯定找不到驢,是一個道理。(可能比喻不夠恰當,但就是這個理。)

(2)利用邏輯過濾器

  ElementClassFilter el = new ElementClassFilter(typeof(FamilyInstance));(過濾出族實例)

            ElementCategoryFilter eld = new ElementCategoryFilter(BuiltInCategory.OST_Windows);(過濾出窗戶)

            利用邏輯過濾器來過濾族實例里的窗戶:

            LogicalAndFilter door = new LogicalAndFilter(el, eld);

(3)of的簡便方法

利用of來獲取墻:

  fil.OfClass(typeof(Wall));

利用of來獲取窗戶:

  fil.OfClass(typeof(FamilyInstance)).OfCategory(BuiltInCategory.OST_Windows);

以上就是“Revit如何通過過濾器獲取元素”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI