如何用API從風管型別獲取風管型別的截面形狀

2021-06-13 02:10:48 字數 1496 閱讀 7666

現在revit沒有開放直接可用的api從ducttype來獲取管道型別的形狀。本文給出了乙個替代解決辦法來獲取。

思路是這樣的: 從風管型別獲取與風管型別關聯的彎頭族型別,然後開啟這個彎頭族,在從開啟的族文件中獲取連線件ductconnector的截面形狀。

這個事可以工作的。但是效率不是很高,因為需要開啟族的文件(editfamily),對於需要連讀取多個風管型別的介面形狀,需要一些等待的時間。

原文請參見:

實現**如下:

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區分風管的子型別 圓形 橢圓形 矩形

描述 專案中需要獲取風管的資料,要按照型別來獲取。用api把風管取出來,可是兩種風管的ducttype.name一樣,無法判別乙個風管型別是圓形還是方形,或橢圓。網上查了一些資料,現在做乙個總結。解決方案一 可以使用duct 型別的引數all model family name 來判斷。例如 c 版...

如何用API函式獲取網絡卡或硬碟的序列號

include include api getadaptersinfo 標頭檔案 include api strcmpia 標頭檔案 pragma comment lib,iphlpapi.lib pragma comment lib,shlwapi.lib include api stringcb...

如何用C 獲取執行時變數的型別

在上資料庫實現技術的時候,老師提到了乙個問題 如何在執行時獲取乙個變數的型別,這用c實現好像要大費周折。今天正好碰到乙個問題想看看c stl中的sort演算法的實現,發現裡面有個技巧可以很容易做到這一點。我就立刻自己做了乙個實驗。如下可以獲取執行時變數的型別。其中心思想就是,運用模板函式的過載,是什...