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