牛立軍 梁燕迪 王程
關(guān)鍵詞:BIM正向設(shè)計(jì);二次開發(fā);RevitAPI;MVC;參數(shù)化建模
中圖分類號(hào):TV222 文獻(xiàn)標(biāo)志碼:A doi:10.3969/j.issn.1000-1379.2022.03.030
引用格式:牛立軍,梁燕迪,王程.基于Revit二次開發(fā)的水利工程BIM正向設(shè)計(jì)研究[J].人民黃河,2022,44(3):155-159.
傳統(tǒng)二維設(shè)計(jì)模式存在信息共享效率低、各專業(yè)間設(shè)計(jì)信息交流不暢等弊端,直接導(dǎo)致二維設(shè)計(jì)出圖算量復(fù)雜、方案比選困難[1],因此有學(xué)者提出依托BIM技術(shù)實(shí)現(xiàn)正向設(shè)計(jì),克服傳統(tǒng)二維設(shè)計(jì)的缺點(diǎn)[2-3]。BIM正向設(shè)計(jì)是建立BIM三維模型,一模多用,完成從方案設(shè)計(jì)到施工圖設(shè)計(jì)的全過程[4]。BIM技術(shù)在北美、北歐等采用較多,發(fā)展成熟,已經(jīng)成為能夠帶來積極投資回報(bào)的技術(shù)。在國(guó)內(nèi),BIM正向設(shè)計(jì)模式投資大、見效慢,應(yīng)用范圍較小,且集中于建筑領(lǐng)域,在水利水電工程設(shè)計(jì)中的應(yīng)用還很少[5-6]。
從技術(shù)層面考慮,BIM正向設(shè)計(jì)模式在水利設(shè)計(jì)行業(yè)推廣的瓶頸主要是正向設(shè)計(jì)工具不統(tǒng)一[7]。水利工程設(shè)計(jì)涉及專業(yè)多,過程復(fù)雜,目前市面上已有的BIM軟件不能完全滿足水利工程正向設(shè)計(jì)的需求[8]。羅凱等[9]通過水閘樣板設(shè)計(jì),探索了BIM技術(shù)在水利工程正向設(shè)計(jì)中的應(yīng)用;龐瑞等[10]利用Catia和VisualFI對(duì)水利工程三維結(jié)構(gòu)體建?!浣睢S出圖過程進(jìn)行了探索;武桂芝等[11]基于Revit二次開發(fā),完成了對(duì)農(nóng)田噴灌系統(tǒng)工程量的提取;朱致遠(yuǎn)等[12]基于RevitAPI對(duì)Revit進(jìn)行二次開發(fā),實(shí)現(xiàn)了對(duì)水閘擋土墻穩(wěn)定分析計(jì)算和計(jì)算結(jié)果實(shí)時(shí)判別。前人的研究促進(jìn)了BIM技術(shù)的應(yīng)用,為BIM正向設(shè)計(jì)奠定了基礎(chǔ)。
筆者在前人研究的基礎(chǔ)上,通過分析水利工程BIM正向設(shè)計(jì)需求,綜合考慮正向設(shè)計(jì)的全過程任務(wù)和普適性,利用面向?qū)ο蟮木幊陶Z言和RevitAPI,采用MVC編程架構(gòu),形成基于Revit二次開發(fā)的水利工程BIM正向設(shè)計(jì)方法,以期促進(jìn)BIM正向設(shè)計(jì)在水利工程設(shè)計(jì)行業(yè)的廣泛應(yīng)用。
1實(shí)現(xiàn)技術(shù)
利用經(jīng)典MVC編程模式,基于Revit的應(yīng)用程序接口———RevitAPI對(duì)Revit進(jìn)行二次開發(fā),實(shí)現(xiàn)水利工程BIM正向設(shè)計(jì)。
1.1RevitAPI功能擴(kuò)展
RevitAPI是Revit的應(yīng)用程序接口,提供了大量命名空間和豐富的函數(shù),給Revit的二次開發(fā)功能定制提供支持,使得不同地區(qū)、不同行業(yè)用戶可以根據(jù)自身需求開發(fā)Revit插件,擴(kuò)展、豐富Revit的功能[13]。
Revit本身的自有命令主要是針對(duì)房屋建筑設(shè)計(jì),應(yīng)用于水利行業(yè)時(shí)可利用RevitAPI添加水利工程需要的水工結(jié)構(gòu)計(jì)算、工程量統(tǒng)計(jì)、水利工程概預(yù)算等功能,實(shí)現(xiàn)水利工程正向設(shè)計(jì)。
1.2MVC編程模式
MVC(Model?View?Controller)編程模式將程序模型(Model)、視圖(View)和控制器(Controller)分離開來,實(shí)現(xiàn)了程序功能模塊化[14],便于開發(fā)過程中對(duì)出圖、統(tǒng)計(jì)工程量、結(jié)構(gòu)計(jì)算、概預(yù)算各個(gè)模塊的調(diào)試。應(yīng)用于水利工程正向設(shè)計(jì)的MVC編程模式如圖1所示,可見正向設(shè)計(jì)區(qū)別于“逆向設(shè)計(jì)”之處在于先假設(shè)、后計(jì)算判斷。假定建筑物尺寸后,控制器獲取設(shè)計(jì)人員假定的數(shù)據(jù),代入模型中進(jìn)行計(jì)算,判斷計(jì)算結(jié)果的安全和經(jīng)濟(jì)合理性,若滿足規(guī)范且經(jīng)濟(jì)合理,則導(dǎo)出相應(yīng)設(shè)計(jì)成果,若不滿足規(guī)范或經(jīng)濟(jì)不合理,則重新假定參數(shù)。
2實(shí)現(xiàn)方法和原理
正向設(shè)計(jì)的實(shí)現(xiàn)思想主要是:針對(duì)一類水工建筑物創(chuàng)建參數(shù)化三維模型,以三維模型為基礎(chǔ),通過編譯代碼形成Revit插件,實(shí)現(xiàn)對(duì)三維模型參數(shù)的控制,達(dá)到三維可視化、交互式設(shè)計(jì);在此基礎(chǔ)上訪問模型參數(shù)數(shù)據(jù),根據(jù)插件中的結(jié)構(gòu)計(jì)算算法原理和概預(yù)算編制規(guī)程處理數(shù)據(jù),實(shí)現(xiàn)設(shè)計(jì)成果(計(jì)算書、圖紙、概預(yù)算等)的判斷和輸出。
2.1需求分析
水利工程BIM正向設(shè)計(jì)程序中的需求主要指功能需求:①建立水工建筑物構(gòu)件參數(shù)化三維模型庫(在Revit中稱為族庫);②輸入尺寸參數(shù),模型與參數(shù)聯(lián)動(dòng),滿足可視化交互式設(shè)計(jì)需求;③輸入高程、開挖坡度等,輸出建筑物設(shè)計(jì)圖紙(三維模型的三視圖投影和剖面);④按照規(guī)范公式輸入相應(yīng)的數(shù)據(jù),采用插件進(jìn)行結(jié)構(gòu)計(jì)算后輸出計(jì)算結(jié)果,導(dǎo)出計(jì)算書;⑤輸入鋼筋直徑,通過配筋計(jì)算程序插件計(jì)算受力筋截面面積,同時(shí)算出鋼筋根數(shù)和間距,調(diào)用Revit的鋼筋繪制方法自動(dòng)繪制鋼筋三維圖,并在剖面標(biāo)注點(diǎn)筋和線筋,實(shí)現(xiàn)自動(dòng)配筋,導(dǎo)出配筋圖紙和鋼筋表;⑥通過插件自動(dòng)統(tǒng)計(jì)三維模型的體積和鋼筋的體積,乘以相應(yīng)的容重作為工程量,其中土方開挖和回填工程量通過輸入構(gòu)件的尺寸和開挖坡度算出,選取概預(yù)算定額后,導(dǎo)出投資概算。
根據(jù)功能需求,以BIM三維模型為基礎(chǔ),根據(jù)用戶輸入的指令或數(shù)據(jù),經(jīng)程序處理后輸出相應(yīng)數(shù)據(jù),確定水利工程BIM正向設(shè)計(jì)業(yè)務(wù)流程。
2.2Revit參數(shù)化建模
二次開發(fā)中為實(shí)現(xiàn)Revit文檔的便捷訪問操作,選用了靈活性強(qiáng)、可操作性強(qiáng)的可載入族來創(chuàng)建族樣板文件。在Revit中通過拉伸、放樣、融合、旋轉(zhuǎn)和放樣融合等方式創(chuàng)建族;定義族參數(shù),對(duì)族參數(shù)進(jìn)行測(cè)試直至達(dá)到模型與參數(shù)聯(lián)動(dòng)效果。族參數(shù)定義的合理與否直接影響樣板文件的靈活性,因此在定義參數(shù)時(shí)應(yīng)處理好約束之間的關(guān)系,最大限度地給予模型靈活性,使得可通過參數(shù)調(diào)整,實(shí)現(xiàn)對(duì)設(shè)計(jì)的優(yōu)化創(chuàng)新[15-16]。
2.3開發(fā)環(huán)境搭建
代碼編譯前首先搭建開發(fā)環(huán)境,添加引用Revit API.dll和Revit APIUI.dll,添加命名空間;然后設(shè)置控制命令的更新模式和事務(wù)模式,從IExternal Command或IExternal Application派生類,重載相應(yīng)函數(shù),在函數(shù)接口中編寫代碼。
2.4視圖設(shè)計(jì)
視圖(View)即表現(xiàn)層,作為輸出數(shù)據(jù)并允許用戶操作的方式,僅為設(shè)計(jì)人員提供二次開發(fā)程序的訪問。為順利控制Revit中模型元素,反映模型隨參數(shù)輸入實(shí)時(shí)變化,顯示設(shè)計(jì)成果,除正向設(shè)計(jì)窗口外,Revit中的模型三維視圖、Excel工作簿(鋼筋表)、Word文檔(計(jì)算書和概預(yù)算)均為表現(xiàn)層的組成部分,因此正向設(shè)計(jì)人機(jī)交互窗口應(yīng)選用模態(tài)型窗體,成果形成后自動(dòng)彈出。表現(xiàn)層設(shè)計(jì)時(shí)應(yīng)以一致性、準(zhǔn)確性、布局合理化、操作合理性等為原則,簡(jiǎn)化一切與顯示界面無關(guān)的要素。
2.5控制器編寫
控制器(Controller)即控制層,在控制層中處理消息通信、關(guān)聯(lián)關(guān)系、事件等內(nèi)容,供業(yè)務(wù)模塊訪問,決定輸出的視圖,以響應(yīng)用戶請(qǐng)求。開發(fā)環(huán)境搭建完畢后,在重載函數(shù)的接口中編寫控制層代碼,實(shí)現(xiàn)把用戶輸入的指令和數(shù)據(jù)傳遞給業(yè)務(wù)模型,為模型中的每一種功能提供控制器,選擇視圖作為用戶指令的反饋。
2.6模型編寫
模型(Model)即程序業(yè)務(wù)邏輯,作為邏輯最復(fù)雜的部分,它對(duì)應(yīng)于數(shù)據(jù)表示和內(nèi)部數(shù)據(jù)處理。在正向設(shè)計(jì)的模型編寫中,結(jié)構(gòu)計(jì)算、配置鋼筋、統(tǒng)計(jì)工程量技術(shù)的實(shí)現(xiàn)對(duì)本文所述方法的可行與否至關(guān)重要,詳述如下。
2.6.1結(jié)構(gòu)計(jì)算
結(jié)構(gòu)計(jì)算是水工建筑物設(shè)計(jì)的重要部分,對(duì)建筑物各部位的截面尺寸及配筋量的確定起決定作用,有關(guān)荷載與內(nèi)力計(jì)算的原則及混凝土結(jié)構(gòu)的計(jì)算方法均嚴(yán)格依照《水工混凝土結(jié)構(gòu)設(shè)計(jì)規(guī)范》(SL191—2008)[17]。以落地槽設(shè)計(jì)為例,落地槽的計(jì)算項(xiàng)目是側(cè)墻底部截面和底板截面的厚度。其主要外部荷載為側(cè)墻外的土壓力和地下水壓力,其次是自重和槽內(nèi)水壓力。根據(jù)荷載計(jì)算結(jié)果計(jì)算出兩個(gè)截面的內(nèi)力(彎矩),從而最終輸出其厚度[18]。當(dāng)設(shè)計(jì)人員按照輸出的結(jié)果選定不同的厚度尺寸時(shí),即刻反映到三維視圖,落地槽隨之變化,墊層、土方開挖、土方回填等均隨之變化,事先生成的圖紙(落地槽的三視圖投影和橫斷面,包括標(biāo)注的尺寸)也隨之變化。
2.6.2配置鋼筋
在三維模型剖面中預(yù)置特定形狀的鋼筋,在代碼的事務(wù)中激活該配筋剖面,創(chuàng)建收集器形成元素集合,篩選出鋼筋元素的ID、鋼筋編號(hào)、鋼筋形狀編號(hào)、鋼筋種類等參數(shù)。根據(jù)設(shè)計(jì)人員輸入的環(huán)境類別確定鋼筋保護(hù)層厚度、鋼筋種類,根據(jù)設(shè)計(jì)人員輸入的鋼筋直徑,經(jīng)程序計(jì)算后得出鋼筋根數(shù)、間距;利用Revit提供的陣列方法對(duì)鋼筋創(chuàng)建線型陣列,針對(duì)不同部位的鋼筋分別采用相應(yīng)的陣列方向,實(shí)現(xiàn)鋼筋配置。
2.6.3統(tǒng)計(jì)工程量
在本文討論的方法中有兩個(gè)位置統(tǒng)計(jì)了工程量,一是圖紙中的工程量表,二是用于概預(yù)算的工程量。圖紙中工程量表的形成主要依托Revit明細(xì)表視圖,具體實(shí)現(xiàn)方法為:新建明細(xì)表視圖—添加明細(xì)表字段—勾選“逐項(xiàng)列舉每個(gè)實(shí)例”;通過代碼找到該視圖,使用GetSectionData獲取明細(xì)表的數(shù)據(jù)體部分,顯示于圖紙中。用于概預(yù)算的工程量統(tǒng)計(jì)主要利用Revit中默認(rèn)的模型體積參數(shù),通過獲取該項(xiàng)參數(shù),便可精確確定澆筑混凝土量、土方開挖回填量等;在概預(yù)算界面不同工程名稱分別套用相應(yīng)的定額,實(shí)現(xiàn)造價(jià)計(jì)算。其中土方開挖回填量為場(chǎng)地平整后的工程量,Revit本身有場(chǎng)地平整功能,地形圖導(dǎo)入后形成地形表面,利用場(chǎng)地平整命令可得出場(chǎng)地平整的挖填方,加上場(chǎng)地平整后的工程量即為開挖和回填土方量。
2.7調(diào)試
在編程軟件中編譯代碼,編譯成功后形成dll文件,針對(duì)dll文件創(chuàng)建后綴為addin的格式文件,實(shí)現(xiàn)插件的注冊(cè)。啟動(dòng)Revit運(yùn)行程序,插件會(huì)加載到Revit,檢驗(yàn)程序是否滿足功能需求。若編譯失敗或功能不滿足需求,則在表現(xiàn)層、控制層、業(yè)務(wù)層完善代碼,直至滿足功能需求為止。
3落地槽正向設(shè)計(jì)實(shí)例驗(yàn)證
落地槽(也稱流槽)是一種典型渠道護(hù)砌型式,可采用素混凝土結(jié)構(gòu)或鋼筋混凝土結(jié)構(gòu)。落地槽與常見的梯形渠道相比有占地少、便橋布置簡(jiǎn)單、管理維護(hù)需求小等優(yōu)勢(shì)。落地槽設(shè)計(jì)的關(guān)鍵是采用經(jīng)濟(jì)合理的結(jié)構(gòu)尺寸和較小的配筋率。因此,應(yīng)用BIM正向設(shè)計(jì)模式,同時(shí)展現(xiàn)技術(shù)指標(biāo)和經(jīng)濟(jì)指標(biāo),可方便地進(jìn)行多方案比選,以確定滿足結(jié)構(gòu)受力且經(jīng)濟(jì)合理的設(shè)計(jì)方案。
3.1功能需求分析
參照2.1節(jié)功能需求分析,確定落地槽BIM正向設(shè)計(jì)業(yè)務(wù)流程,如圖2所示。
3.2參數(shù)化建模
在Revit中選擇族樣板文件,采用拉伸和嵌套的方式創(chuàng)建落地槽三維模型。模型中主要包括槽深、槽內(nèi)水、地下水、原土層、回填土五部分,給各部分添加材質(zhì)屬性,真實(shí)狀態(tài)的落地槽模型三維視圖如圖3所示。為賦予落地槽模型最大的靈活性,定義尺寸參數(shù),并通過參數(shù)改動(dòng)測(cè)試確定參數(shù)。
3.3代碼實(shí)現(xiàn)
選擇Visual Studio作為開發(fā)平臺(tái)、C#作為編程語言。開發(fā)環(huán)境配置后,采用Winform界面開發(fā)模式,利用TabControl、GroupBox、Lable、TextBox等控件實(shí)現(xiàn)輸出設(shè)計(jì),利用Button、TextBox、RadioButton等控件或?qū)雝xt格式文件進(jìn)行輸入設(shè)計(jì)。
為在Revit面板中創(chuàng)建按鈕,選擇控制命令的事務(wù)和更新模式為ExternalApplication,新建類庫文件,從IExternalApplication接口派生,重載Onstartup()和On?Shutdown()函數(shù),添加PushButton主程序,即控制層代碼。
為新建項(xiàng)目、打開項(xiàng)目、修改參數(shù)、生成圖紙、結(jié)構(gòu)計(jì)算、配置鋼筋、鋼筋標(biāo)注、工程單價(jià)、概預(yù)算等功能模塊分別創(chuàng)建類文件,即業(yè)務(wù)層,以供控制層選擇調(diào)用。
代碼編譯成功后生成dll文件,創(chuàng)建后綴為addin的文件實(shí)現(xiàn)程序的注冊(cè)。在Revit中啟動(dòng)程序,如圖4所示,參照2.7節(jié)檢驗(yàn)其是否滿足功能需求。
經(jīng)檢驗(yàn),落地槽BIM正向設(shè)計(jì)程序可以滿足2.1節(jié)所述功能需求,由該程序生成的設(shè)計(jì)圖紙、配筋圖紙如圖5、圖6所示。
4結(jié)語
提出了基于Revit二次開發(fā)的水利工程正向設(shè)計(jì)實(shí)現(xiàn)方法,從功能需求出發(fā),綜合考慮正向設(shè)計(jì)全過程任務(wù),真正實(shí)現(xiàn)了一模多用。通過落地槽BIM正向設(shè)計(jì)實(shí)例,驗(yàn)證了該方法的可行性和高效性。
【責(zé)任編輯 張華巖】