使用API區分風管的子型別 圓形 橢圓形 矩形

2021-07-29 10:17:51 字數 2006 閱讀 1040

描述:

專案中需要獲取風管的資料,要按照型別來獲取。用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 ...