Revit二次開發之「遍歷過濾物件」

2022-02-12 08:10:03 字數 1706 閱讀 3937

遍歷過濾物件,得到想要的物件,是revit二次開發乙個重要的操作。

/**revit物件的標識

* revit物件的類名稱

* 直接可以用類名唯一標識出來:如:wall,walltype,floor,floortype..

* 不同物件,但是共用乙個類:familyinstance,familysymbol,family,element

* * rervit物件的category名稱

* 通過revit的category可以唯一標識物件的類別

* 門例項和門型別具有相同的category

* * 其他屬性

* 如所在的樓層

* 如某乙個引數的值

* * 如何識別revit中不同的物件

* 根據標識來識別區分不同的物件

* 只使用類名來判斷

* 它們的特點:

* 片關能容納其它物件或特定用途的類

* 如:wall,floor,contfooting,celingandfloor等系統族的例項

* * 如果通過類名無法分別出來,需要聯合物件的類別(category)來判斷

* 門窗柱等物件沒有專用的類來表示,都是familyinstance的例項

* 用category來判斷其類別

* 用列舉型的builtincategory,來建立elementcategoryfilter物件,支援多國語言

*/[transaction(transactionmode.automatic)]

[regeneration(regenerationoption.automatic)]

public

class

getelement : iexternalcommand個"

, lists.count);

messagebox.show(strmsg);

//使用過濾器

filteredelementcollector collector2 

=new

filteredelementcollector(doc);

elementclassfilter classfilter 

=new

elementclassfilter(

typeof

(familyinstance));

elementcategoryfilter catfilter 

=new

elementcategoryfilter(builtincategory.ost_doors);

//把過濾器聯合起來

logicalandfilter logicalfilter 

=new

logicalandfilter(classfilter, catfilter);

collector2.wherepasses(logicalfilter);

ilist

<

element

>

list2 

=collector2.toelements();

strmsg 

=string

.format(

"有門個

", list2.count);

messagebox.show(strmsg);

}catch

(exception e)

return

result.succeeded;}}

Revit二次開發 過濾元素

在revit二次開發中,過濾指定型別元素的需求是很常見的,比如說獲取標高 軸網 三維檢視 familysymbol等等,於是乎 元素過濾服務 public static class filterelementservice filteredelementcollector collector vie...

Revit二次開發 初學

前言 由於工作需要,近期開始學習revit二次開發知識。學習的同時將學習過程與小夥伴們一起分享,希望後來的小夥伴在看到我的學習筆記的時候有所幫助。說明由於revit的版本在不斷更新中,所以我在學習revit的時候選擇了從revit自帶的幫助檔案開始學習,不同版本的revit,就看相應的help檔案。...

revit二次開發之單位轉換

revit內部基本單位是英呎,如果要獲取或設定構件引數數值需要進行單位轉換,比如轉換為基本的公釐或公尺等單位 1.可以使用常規方式進行轉換 1英呎等於0.3047999995367公尺,等於304.7999995367公釐 2.可以使用revitapi內建的轉換函式進行目標單位的轉換 使用unitu...