Revit二次開發 獲取Element的族型別引數

2021-10-09 14:47:13 字數 1676 閱讀 6006

在revit中,如果想獲取element的例項引數,直接呼叫element的lookupparameter函式就可以了,但是想獲取型別引數,這樣操作卻找不到引數。

以牆為例,如下圖:

上圖中的「功能」和「牆體型別」是屬於型別引數,如果用上面的方法,是找不到這兩個引數的,也就沒辦法取到它們的值。那應該怎麼做呢?

有兩種方法實現。

用revit lookup檢視,會發現其中有個getvalidtypes:

點開:

其中,左邊的是族型別,右邊有個parameters,再點開:

這裡有我們需要的引數。

以下是示例**:

var param = ele.lookupparameter("結構用途");                        

icollectionvt = ele.getvalidtypes();

foreach (var eid in vt)

}

其中ele為所選的element。

同樣,開啟revit lookup,其中有個walltype:

點開,有個parameters:

再點開:

同樣找到了我們需要的引數。

以下是示例**:

wall wall = ele as wall;

walltype wt = wall.walltype;

parameter pwt = wt.lookupparameter("牆體型別");

string strwt = pwt.asstring();

其中ele為所選的element。

以上兩種方法都可以實現我們的目標,不過兩種方法各有優缺點。方法一的**比較冗長,不過比較通用。方法二則比較簡潔,但只能用於特定的族(主要是系統族),如果是自建族,那就要通過symbol(familysymbol)去取了,所以不具有通用性。

還有一種更簡單的方法,如果element可以轉成familyinstance,可以用如下**獲取:

familyinstance fi = element as familyinstance;

string strwidth = fi.symbol.lookupparameter("寬度").asvaluestring();

Revit二次開發 初學

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

Revit二次開發 Revit擴充套件儲存資料

revit二次開發過程中,需要將相關資訊儲存到rvt檔案中,再次開啟rvt的時候,可以通過讀取這些資訊,知道當前構件的基本狀態,或者將乙個特殊的資訊儲存到rvt檔案中,從revit2012開始引入了擴充套件儲存這個新技術,就是可以把一些資料儲存在revit中的某乙個物件上。且這個儲存操作,只能通過程...

Revit二次開發 分割族

如有不明白,請qq254033230詢問。其實在revit裡是不存在分割族的概念。對於基於線形的族,截面沿線都是一樣,要想達到分割的狀態,只需要把族基於線的那條線變短,然後再在分割點複製乙個新的族即可。過程是先獲得線的均分點,然後把族的線縮短,接著再複製族,即可變成均分的效果。主要方法見 priva...