描述:
專案中需要獲取風管的資料,要按照型別來獲取。用api把風管取出來,可是兩種風管的ducttype.name一樣,無法判別乙個風管型別是圓形還是方形,或橢圓。網上查了一些資料,現在做乙個總結。
解決方案一:
可以使用duct 型別的引數all_model_family_name 來判斷。
例如(c++版本):
autodesk::revit::db::mechanical::duct^ pduct=gcnew autodesk::revit::db::mechanical::duct;
string namestr=pduct->ducttype->parameter[builtinparameter::all_model_family_name]->asstring();//獲取字元形式的風管型別
對於英文版:
圓型的風管型別的值是:round duct
方形的風管型別的值是:rectangular duct
橢圓的風管型別的值是:oval duct
對於中文版:
圓型的風管型別的值是:圓形風管
方形的風管型別的值是:矩形風管
橢圓的風管型別的值是:橢圓形風管
解決方案二:
考慮獲取風管的截面形狀來判斷。
從風管型別獲取與風管型別關聯的彎頭族型別,然後開啟這個彎頭族,在從開啟的族文件中獲取連線件ductconnector的截面形狀。
詳細參見:
例如(c#版本):
using system;
using system.collections.generic;
using system.text;
using system.windows.forms;
using autodesk.revit .db;
using autodesk.revit.ui;
using autodesk.revit.attributes ;
using autodesk.revit.db.mechanical;
using autodesk.revit.ui.selection;
[transactionattribute(transactionmode.manual)]
public class revitcommand : iexternalcommand
ducttype ducttype = duct.ducttype;
//get the duct type's elbow parameter value.
parameter param = ducttype.get_parameter(
builtinparameter.rbs_curvetype_default_elbow_param);
familysymbol symbol =
doc.get_element(param.aselementid()) as familysymbol;
family family = symbol.family;
document familydoc = doc.editfamily(family);
filteredelementcollector collector =
new filteredelementcollector(familydoc);
collector.ofclass(typeof(connectorelement));
element firstconnector = collector.firstelement();
ductconnector connector = firstconnector as ductconnector;
taskdialog.show("duct section shape", connector.shape.tostring());
familydoc.close(false);
return result.succeeded ;
}}
說明:只驗證方案一,方案二未驗證。
如何用API從風管型別獲取風管型別的截面形狀
現在revit沒有開放直接可用的api從ducttype來獲取管道型別的形狀。本文給出了乙個替代解決辦法來獲取。思路是這樣的 從風管型別獲取與風管型別關聯的彎頭族型別,然後開啟這個彎頭族,在從開啟的族文件中獲取連線件ductconnector的截面形狀。這個事可以工作的。但是效率不是很高,因為需要開...
列舉型別的區分
原文出處 一般情況下,我們採用c風格的enum關鍵字可以定義列舉型別。cpp view plain copy enum uiviewanimationtransition cpp view plain copy 位移操作列舉定義 enum typedef nsuinteger uiviewautor...
python的鴨子型別
這次簡單介紹下 鴨子型別的概念。當看到乙隻鳥走起來像鴨子 游泳起來像鴨子 叫起來也像鴨子,那麼這只鳥就可以被稱為鴨子。鴨子型別關注點在物件的行為,而不是型別。在 python 和 go 中都可以實現鴨子型別。示例 如下 class duck def init self,name self.name ...