李學鋒 趙啟明 毛銘陽
〔內容提要〕隨著BIM技術的深入應用,基于Revit軟件的工程量計算開始備受關注。由于Revit軟件自帶的計算規(guī)則和我國現行的GB50500-2013清單規(guī)則不同,在Revit模型中直接進行工程量計算的問題難以較好解決。本文以各平臺算量軟件的清單定額庫為基礎,采用Revit 2016軟件作為二次開發(fā)軟件平臺,Visual Studio 2017作為開發(fā)工具,選用C#語言進行基于“.NET”的編程工作,集成多種軟件開發(fā)技術實現Revit模型直接工程量的計算。
〔關鍵詞〕Revit模型 API接口 C#語言
一、BIM技術進行工程量計算的技術實現手段
一是應用程序接口(Application Programming Interface,API)。二是開放數據庫互聯(Open Database Connectivity,ODBC)。三是多數BIM軟件(如Revit)直接計算工程量并導出EXCEL,再由造價工程師匯總計算,其中IFC標準普遍使用于BIM中,以實現不同軟件平臺間的互通,但不一定符合國情,效率低。
二、基于C#語言的Revit直接工程量計算系統(tǒng)的開發(fā)
1.Revit API應用流程介紹。Revit API的應用流程為:新建項目→添加引用→編寫代碼→注冊、調試程序→開發(fā)完成。利用VS 2017創(chuàng)建類庫項目,然后添加“Revit API.dll”和“Revit APIUI.dll”的引用,實現“IExternal Application”和“IExternal Command”接口,完成類方法函數的編寫,創(chuàng)建“.addin”文件,啟動Revit 2016跟蹤程序執(zhí)行過程,顯示成功后在系統(tǒng)中集中管理并實際應用,如果顯示失敗,返回修改代碼。
2.系統(tǒng)功能需求設計的目標。針對目前工程算量軟件存在文件導入導出數據兼容性差、直接建模效率低等問題,本系統(tǒng)的開發(fā)實現目標為:信息自動識別提??;計算規(guī)則符合現行國家標準;自動套取定額;做法維護;參數化算量;設計變更自動識別處理;三維平臺數據交互;標準工程量表的導出等。
3.系統(tǒng)設計的邏輯架構。系統(tǒng)的邏輯架構分為數據存儲層、接口層和功能模塊層三個層次。數據存儲層添加清單庫、規(guī)則庫、屬性集庫和項目庫。其中,清單庫、規(guī)則庫、屬性集庫主要用來查詢和調用,項目庫主要是保存用戶進行預算時產生的項目文件;接口層主要指Revit平臺向公眾提供的一個API接口,使得開發(fā)人員能夠與內部操作系統(tǒng)取得聯系,進而在Revit平臺上自定義或擴展相應的功能;功能模塊層添加工程設置、模型映射、構件核對、套做法、計算式編輯、匯總計算、查看工程量、報表預覽。其中,計算式編輯、匯總計算、查看工程量、報表預覽、工程設置、套做法借鑒了傳統(tǒng)算量軟件的相應功能與代碼文件。系統(tǒng)的實現思路是:BIM模型設計→BIM設計信息識別、映射→套用做法→匯總計算→GB50500-2013清單項目列項→生成構件工程量表,輸出到Excel中?!癇IM設計信息識別、映射”是系統(tǒng)對設計階段Revit模型中所有構件對象的屬性信息進行識別、提取,并將這些信息自動映射為算量數據。
4.系統(tǒng)數據庫設計。本系統(tǒng)基于BIM數據管理平臺進行新增數據庫的設計,根據數據的使用性質,將其分為項目數據庫和公共數據庫兩部分。其中,項目數據庫主要用來保存用戶進行工程量計算時產生的項目數據,如生成的清單項目、工程量等數據。而公共數據庫則實現對公共數據的存儲,包括清單庫、規(guī)則庫和屬性集庫,該部分數據庫的內容比較固定,主要供查詢和調用。
三、系統(tǒng)功能的實現
系統(tǒng)功能實現是要在系統(tǒng)設計的基礎上,承接此前各個階段的工作,將設計構思轉化為具體實現,是系統(tǒng)整個開發(fā)過程中的實施階段。實現工作主要有:搭建系統(tǒng)實現的環(huán)境和相關功能界面;將新增加的數據庫關聯己有的BIM模型數據庫;編程實現系統(tǒng)相關功能的核心代碼及其他大量代碼;基于Revit建立符合我國工程實際的預算編碼體系;解決由Revit直接輸出工程量的關鍵性技術難題。鑒于開發(fā)工程量較大,本文僅以“新增選項卡頁及其命令按鈕”開發(fā)代碼為例,簡要介紹系統(tǒng)功能的實現。首先打開VS 2017,新建項目,選擇類庫,框架為“.NET Framework 4.5”。然后添加引用“RevitAPI”“RevitAPIUI”“System.Xaml”“Windows Base”“System. Core”“PresentationCore”。引用代碼如下。
然后在namespace下添加如下代碼
然后實現IExternal Application接口,實現Onshutdown和Onstartup函數。在Onstartup函數里創(chuàng)建Ribbon控件,代碼如下。
Ribbon Panel panel3-9與Ribbon Panel panel2類似,由于篇幅有限,文章中不做列舉。最后返回“return Result.Succeeded”完成代碼的編寫,將addin文件復制到Revit 2016的Addin文件夾下,重新啟動Revit 2016,選項卡新增功能如圖1所示。
四、結論
雖然BIM技術在我國已經應用多年,但是使用效果較發(fā)達國家還有較大距離。基于Revit 2016軟件直接計算工程量系統(tǒng)的建立,使建筑工程設計和算量工作僅需要基于一個平臺便能實現,預算人員無需數據轉換、無需重新翻模,設計階段的模型數據得到了高效、完整的利用,節(jié)省了大量時間,減少了人為錯誤。同時,BIM模型數據庫作為數據單一的共享源,使得各個階段的信息高度關聯,每個階段的結果數據也不再是一次性的靜態(tài)輸出,整個工作流程不再是單向不可逆的,一旦上游數據發(fā)生改變,下游只需修改與此關聯的局部信息,無需重新生成全部數據。