在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...