陶婉婉
摘要:文章從BIM模型的數(shù)據(jù)結(jié)構(gòu)入手,對其組成要素、數(shù)據(jù)結(jié)構(gòu)層級進行分析。然后提出從BIM模型中進行信息提取的方法,使用二次開發(fā)方法在Revit系列軟件的平臺上,對其API進行分析,并闡述代碼實現(xiàn)的過程。結(jié)合案例進行實證分析,驗證本文所提出方法的可行性,為加深BIM模型在工程項目領(lǐng)域中的運用提供了技術(shù)支撐。
Abstract: This paper starts with the data structure of BIM model, and analyzes its constituent elements and data structure hierarchy. Then, the method of extracting information from BIM model is proposed. The secondary development method is used to analyze the API on the platform of Revit series software, and the process of code implementation is explained. The empirical analysis is carried out in combination with the case to verify the feasibility of the proposed method and provide technical support for deepening the application of the BIM model in the field of engineering projects.
關(guān)鍵詞:BIM;數(shù)據(jù)提取;二次開發(fā)
Key words: BIM;data extraction;secondary development
中圖分類號:TU17;TU722 ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標(biāo)識碼:A ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文章編號:1006-4311(2019)08-0159-03
1 ?BIM模型數(shù)據(jù)結(jié)構(gòu)分析
BIM的全稱為Building Information Modeling,BIM模型的存在是為了給建筑工程進行可視化的三維建模,其本質(zhì)還是一個繪圖軟件,那么在BIM模型中最基本的單位就是圖元。圖元包括點、線、面等組成模型的最基本要素,包括模型圖元、視圖圖元和輔助圖元。而BIM除了繪圖軟件的基礎(chǔ)上,具有參數(shù)化的特點,也就意味著所謂的圖元并不僅僅意味著表面的可視化,還要將圖元所具備的參數(shù)屬性進行可視化。下面根據(jù)三種圖元類型來進行一一闡述。
1.1 模型圖元
模型元素是BIM模型中最重要的元素,表示建筑模型的幾何形狀,是建筑模型的重要組成部分。模型元素也稱為結(jié)構(gòu)構(gòu)件,分為結(jié)構(gòu)構(gòu)件和附屬構(gòu)件。結(jié)構(gòu)構(gòu)件可以獨立地存在于模型中,包括墻壁,地板等。而附著構(gòu)件則必須依附于結(jié)構(gòu)構(gòu)件而存在,包括門、窗等。
1.2 視圖圖元
在BIM模型中,視圖圖元指的是建筑模型的視圖以及明細表。視圖包括三維立面圖、平面圖、剖面圖、三維圖等,明細表主要是一些數(shù)據(jù)的整理與表達。
1.3 輔助圖元
輔助圖元是輔助于模型圖元的,分為基準(zhǔn)圖元和注釋圖元。其中,基準(zhǔn)圖元能夠通過軸網(wǎng)、參考平面、標(biāo)高等形式實現(xiàn)BIM模型在空間中的表達。而注釋圖元則指那些文字、尺寸和符號的標(biāo)注,對建筑模型進行細節(jié)的表達。
BIM模型的所有數(shù)據(jù)都是以工程項目的構(gòu)件比如墻、門、窗等為核心展開的,而每個構(gòu)件都是其本身各種屬性數(shù)據(jù)的整合。文章中的BIM模型是在Autodesk公司開發(fā)的Revit 2015平臺上進行建模的,在Revit2015中的模型工程項目中,它由兩種類型組成:結(jié)構(gòu)構(gòu)件和附屬構(gòu)件。而附屬構(gòu)件指的是門、窗、家具這些在模型中無法獨立存在,必須附著于結(jié)構(gòu)構(gòu)件上施工的構(gòu)件,如圖1所示。
2 ?Revit API解讀
從BIM模型中提取信息需要根據(jù)各個參與方對應(yīng)的工作內(nèi)容進行Revit API內(nèi)容編寫和代碼實現(xiàn)。文章根據(jù)常用的的一些構(gòu)件參數(shù)Revit API進行解析并設(shè)計算法,以 Revit 2015以及Visual Studio 2012為平臺,采用C#計算法編程語言進行編寫。
Revit API是Revit系列軟件的類庫,其存在主要有三個功能:一是覆蓋軟件本身的功能,并從更深層次的源代碼角度解析和調(diào)整模型;二是使所有用戶能夠使用API代碼進行二次開發(fā),創(chuàng)建新的命令,從而滿足用戶對于部分功能的縮放需求;三是使其能夠與第三方應(yīng)用軟件相連接,從而運用于分析應(yīng)用領(lǐng)域。
文章使用Revit API來對Revit系列軟件進行二次開發(fā),實現(xiàn)從BIM模型中提取數(shù)據(jù)的功能。而在這之前,首先需要下載軟件開發(fā)工具包(Software Development Kit),獲取Revit API幫助文檔以及RevitLookup的插件。然后下載Visual Studio 2012,選擇C#語言進行編程。同時,通過AddInManager插件來加載在Visual Studio 2012平臺上所編寫的二次開發(fā)插件。
其中,在Visual Studio 2012平臺上進行代碼編寫時,需要使用Revit API.dll和Revit APIUI.dll程序集。這兩個程序集所包含的內(nèi)容不同,具體如表1所示。而在信息提取的二次開發(fā)過程中,主要運用到的是Revit API.dll的IExternalDBApplication接口、Parameter方法、訪問DB級別的Element以及Revit APIUI.dll中的IExternalApplication相關(guān)接口、TaskDialogs任務(wù)對話框內(nèi)容。
3 ?BIM模型數(shù)據(jù)提取方法
對BIM模型信息的提取主要分為兩大內(nèi)容:一是BIM模型中所有的構(gòu)件清單,二是所有構(gòu)件所帶有的屬性參數(shù)。
Revit API對于建筑構(gòu)件的分類細度比較大,比如結(jié)構(gòu)柱的族類型下就包含圓形柱、方形柱等類型,然而在工程項目施工過程中,并不會因為柱子的族類型不同而影響施工工序,因此將Revit API中的構(gòu)件個體映射至較高較高層級的類上,然后再根據(jù)每個構(gòu)件的屬性參數(shù)來確定其工程量。Revit API映射的構(gòu)件類如表2所示。
僅僅從BIM模型中提取出構(gòu)件清單是遠遠不夠的,還需要將所有構(gòu)件所負有的參數(shù)化屬性信息提取出來才能夠得到完整的模型信息。對構(gòu)件屬性數(shù)據(jù)的提取能夠通過Revit API內(nèi)置參數(shù)(BuiltInParameter)或者共享參數(shù)(SharedParameter)從BIM模型中直接提取[4]。而提取的前提是建立重要的數(shù)據(jù)屬性API及其對應(yīng)的Revit API的迎神。常用的屬性參數(shù)映射整理如表3所示。
4 ?實證研究
為了驗證上文所提出的本體理論,本模型只有一層,如圖2所示,占地面積78平方米。在此模型中,含有所有常用的建筑結(jié)構(gòu)構(gòu)件,包括樓板、屋頂、梁、柱、門、窗。
從BIM模型中提取出所有構(gòu)件的族、幾何數(shù)據(jù)以及位置數(shù)據(jù),首先要在Visual Studio 2012平臺上利用C#語言對數(shù)據(jù)提取代碼進行編寫,具體代碼詳情如下:
FilteredElementCollector fec = new FilteredElementCollector(doc, doc.ActiveView.Id);
List
StringBuilder str = new StringBuilder();
foreach (var ele in listE)
{
Parameter vol = ele.get_Parameter(BuiltInParameter.HOST_VOLUME_COMPUTED);
Parameter area = ele.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED);
Parameter lev = ele.get_Parameter(BuiltInParameter.STAIRS_BASE_LEVEL_PARAM);
Options opt = new Options();
opt.View = doc.ActiveView;
if (vol!=null&&area!=null)
{
str.Append(ele.Category.Name.ToString() + "," + vol.AsDouble().ToString() + "," + area.AsDouble().ToString() + "\n");
}
}
TaskDialog.Show("The List of Componentsparameters", str.ToString());
return Result.Succeeded;
代碼撰寫完成后,使用AddInManager插件將此代碼附著于Revit 2015平臺上,提取出的所有構(gòu)件清單,此模型一共提取出26個構(gòu)件,整理如表4所示。
5 ?結(jié)論
通過對BIM模型中的數(shù)據(jù)結(jié)構(gòu)進行分析,結(jié)合Revit系列軟件的API,文章提出使用二次開發(fā)的方法來提取BIM模型的信息。并且最終通過實證研究驗證了文章所提出的二次開發(fā)的方法能夠有效地根據(jù)需求,提取Revit系列軟件平臺上BIM模型的構(gòu)件級相關(guān)數(shù)據(jù)信息,包括構(gòu)件的基本屬性、構(gòu)件的層次以及構(gòu)件之間的關(guān)聯(lián)關(guān)系。
參考文獻:
[1]韓鳳華.面向綠色建筑設(shè)計信息需求的數(shù)據(jù)標(biāo)準(zhǔn)化研究[D].大連理工大學(xué),2016.
[2]郭奕婷.基于BIM的進度計劃自動編排研究[D].華南理工大學(xué),2017.
[3]王紅林,周創(chuàng).基于IFC的BIM半結(jié)構(gòu)化數(shù)據(jù)庫研究[J].西安文理學(xué)院學(xué)報(自然科學(xué)版),2018,21(06):33-36.
[4]周洪波,施平望,鄧雪原.基于IFC標(biāo)準(zhǔn)的BIM構(gòu)件庫研究[J].圖學(xué)學(xué)報,2017,38(04):589-595.