現在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演算法的實現,發現裡面有個技巧可以很容易做到這一點。我就立刻自己做了乙個實驗。如下可以獲取執行時變數的型別。其中心思想就是,運用模板函式的過載,是什...