吳佳蓓,黃 銘
(合肥工業(yè)大學(xué)土木與水利工程學(xué)院,安徽 合肥 230009)
我國廣闊的地域決定了我國多變的自然氣候與復(fù)雜的地理條件,導(dǎo)致我國水資源時空分布不均。我國修建大量水利工程,用以調(diào)控水資源分布、優(yōu)化水資源配置。其中,大壩在防洪、灌溉、發(fā)電等方面發(fā)揮巨大作用,而大壩安全監(jiān)測是保障大壩安全運行的重要工作[1]。
由于大壩安全監(jiān)測項目和儀器數(shù)量眾多,監(jiān)測信息的采集與管理任務(wù)繁重,這就對傳統(tǒng)的大壩安全監(jiān)測技術(shù)提出了更高要求[2]。監(jiān)測自動化技術(shù)則彌補了傳統(tǒng)監(jiān)測的不足,大大提高了監(jiān)測數(shù)據(jù)采集工作的效率與頻次,從而采集到海量的監(jiān)測數(shù)據(jù),這些監(jiān)測數(shù)據(jù)需要得到有效地分析處理,才能準確反映出大壩的運行狀態(tài)[3]。
建筑信息模型(BIM)技術(shù)區(qū)別于傳統(tǒng)的CAD技術(shù),是一種可以貫穿于項目的全生命周期的新管理方法,具有高度可視化功能,是應(yīng)用于工程設(shè)計、建造、管理的數(shù)據(jù)化設(shè)計工具,能夠有效提高工作效率、實現(xiàn)可持續(xù)發(fā)展[4-5]。本文基于BIM技術(shù),采用visual studio與C#語言對Revit進行二次開發(fā),實現(xiàn)大壩三維模型與監(jiān)測數(shù)據(jù)的交互,構(gòu)建大壩的安全監(jiān)測信息系統(tǒng)。
Autodesk Revit Architecture是目前我國BIM體系中使用最廣泛的軟件之一。Revit在建模中提供統(tǒng)一標準的默認樣板文件,且基于默認樣板的任意新項目可繼承來自樣板的所有族文件,大大提高設(shè)計效率。Revit也能夠進行自由形狀的建模和參數(shù)化設(shè)計,創(chuàng)建項目獨有的族文件。
此外,Autodesk Revit系列所有軟件都提供Application Programming Interface,用于Revit的二次開發(fā)。Revit的二次開發(fā)允許使用者通過API接口,實現(xiàn)一些重復(fù)工作的自動化、添加自定義功能或?qū)悠渌治瞿M軟件等多項工作[6]。
本文為有效地實現(xiàn)對壩體結(jié)構(gòu)、監(jiān)測儀器模型、監(jiān)測儀器布設(shè)的可視化管理,以及對監(jiān)測數(shù)據(jù)的便捷有效分析等功能,結(jié)合開發(fā)軟件visual studio,并使用C#語言,實現(xiàn)Revit與其他軟件的交互,開發(fā)大壩的安全監(jiān)測信息系統(tǒng)。
2.2.1 系統(tǒng)結(jié)構(gòu)功能設(shè)計
大壩的安全監(jiān)測信息系統(tǒng)以Revit為開發(fā)平臺,構(gòu)建工程的三維模型,并結(jié)合開發(fā)軟件visual studio對Revit進行二次開發(fā),連接數(shù)據(jù)庫,實現(xiàn)數(shù)據(jù)的管理與預(yù)測分析[7]。大壩安全監(jiān)測信息系統(tǒng)的總體結(jié)構(gòu)圖如圖1所示。

該系統(tǒng)總體上分為四個模塊:大壩結(jié)構(gòu)管理、監(jiān)測儀器管理、監(jiān)測數(shù)據(jù)管理、監(jiān)測數(shù)據(jù)分析。
大壩結(jié)構(gòu)管理模塊是基于大壩三維實體模型,通過對大壩的三維模型進行縮放、移動、隱藏等操作,從大壩的整體、局部、剖面等多視角呈現(xiàn)大壩結(jié)構(gòu)。
監(jiān)測儀器管理模塊是按照監(jiān)測儀器的實體裝置,建立各監(jiān)測儀器的等比例族模型,直觀地體現(xiàn)監(jiān)測儀器類型以及儀器的具體布設(shè)位置。
監(jiān)測數(shù)據(jù)管理模塊主要用于監(jiān)測數(shù)據(jù)的高效管理。
監(jiān)測數(shù)據(jù)分析模塊是通過建立數(shù)學(xué)模型對實測數(shù)據(jù)進行預(yù)測分析,可對接多種數(shù)學(xué)模型以滿足不同情況下的建模分析需要。
2.2.2 系統(tǒng)開發(fā)流程
基于Revit的二次開發(fā),本文利用visual studio結(jié)合C#語言對系統(tǒng)的各項功能進行開發(fā)。基本流程如下:1)visual studio中新建類庫,添加引用“RevitAPI”“RevitAPIUI”;2)依據(jù)功能的具體要求編寫代碼,生成解決方案(dll文件);3)利用Revit的Add-In Manager模塊,對解決方案進行調(diào)試;4)部分功能調(diào)試成功后,在Revit的菜單欄中,添加自定義的選項卡頁,并在選項卡頁中添加對應(yīng)功能的命令按鈕。
系統(tǒng)中的監(jiān)測數(shù)據(jù)分析模塊是為了對數(shù)據(jù)庫中的監(jiān)測數(shù)據(jù)建立數(shù)學(xué)模型,進行分析預(yù)測,從而掌握工程的安全運行狀態(tài)。針對不同監(jiān)測數(shù)據(jù)的特點,系統(tǒng)中可嵌入不同的數(shù)學(xué)模型,本文以BP神經(jīng)網(wǎng)絡(luò)模型為例,對位移的沉降監(jiān)測數(shù)據(jù)進行建模計算,基本步驟如下:
首先,在(-1,1)內(nèi)隨機選定BP神經(jīng)網(wǎng)絡(luò)模型各神經(jīng)元之間連接權(quán)值和閾值的初始值;沉降的影響因素,確定輸入為時效因子、水位因子以及降雨因子,輸出為沉降值;以實測數(shù)據(jù)建立訓(xùn)練樣本;輸入訓(xùn)練樣本,按式(1)和式(2)計算各層輸出,同時計算誤差總和;若誤差總和滿足精度要求或訓(xùn)練次數(shù)達到5 000次,則結(jié)束訓(xùn)練,否則,修改權(quán)值和閾值后,繼續(xù)訓(xùn)練。
隱層輸出:
(1)
輸出層輸出:
(2)
其中,hj為隱含層各節(jié)點的輸入;yj為隱含層各節(jié)點的輸出;xi為輸入值;wij為輸入層到隱層的權(quán)值;θj為隱層閾值;ls為輸出層各節(jié)點輸入;Os為輸出層各節(jié)點的輸出;cjs為隱層到輸出層的權(quán)值;γj為輸出層閾值。
本文以某水庫大壩為例,按照上文系統(tǒng)的功能模塊劃分和開發(fā)流程,以Revit為平臺,結(jié)合visual studio和C#語言,開發(fā)基于BIM技術(shù)的大壩安全監(jiān)測信息系統(tǒng)。
Revit中建模一般是先建立項目的軸網(wǎng)和標高,然后利用軟件自帶的樣板文件和族文件,建立三維模型,再依據(jù)軸網(wǎng)和標高準確放置。由于水工建筑物的結(jié)構(gòu)不同于一般的建筑物,無法直接使用Revit提供的樣板文件與族文件。為了充分展現(xiàn)水工建筑物的特點,本文利用二維的CAD圖紙,對大壩的不同部分,如壩體、防浪墻、正常溢洪道、泄洪涵洞等,通過放樣、拉伸、融合、旋轉(zhuǎn)等操作,分別繪制三維模型,再通過軸網(wǎng)和標高進行整合,從而形成大壩的整體三維模型,如圖2所示。
為了更好地實現(xiàn)基于BIM的安全監(jiān)測功能,在大壩三維模型中放置監(jiān)測儀器的等比例三維模型,直觀體現(xiàn)儀器的類型以及布設(shè)位置[8]。利用Revit的“族”圖元特性,在項目中新建族模型,依照監(jiān)測儀器的實體裝置,通過放樣融合、旋轉(zhuǎn)等操作,創(chuàng)建各監(jiān)測儀器的三維模型,如圖3,圖4所示,并設(shè)置好模型的各項參數(shù),如幾何尺寸、材料等,以儀器的名稱命名,載入項目文件夾中,形成自定義族庫。
布設(shè)大壩的各類監(jiān)測儀器時,利用自定義族庫,只需確定監(jiān)測儀器的類型和布設(shè)的具體位置,載入對應(yīng)的族模型,即可快速在系統(tǒng)中設(shè)置監(jiān)測儀器三維模型。


大壩的監(jiān)測項目眾多,數(shù)據(jù)量大,為對監(jiān)測數(shù)據(jù)進行有效的管理,本文利用數(shù)據(jù)庫技術(shù),結(jié)合Revit二次開發(fā),在Revit中建立監(jiān)測項目與數(shù)據(jù)的關(guān)聯(lián),實現(xiàn)對監(jiān)測數(shù)據(jù)的高效便捷管理,并采用了兩種方法,一種是在菜單欄中建立與數(shù)據(jù)關(guān)聯(lián)的命令按鈕;另一種是通過監(jiān)測儀器的三維模型,直接關(guān)聯(lián)數(shù)據(jù)。
大壩的安全監(jiān)測方案依據(jù)工程實際進行設(shè)計,例如降雨量監(jiān)測在工程中可以放置雨量計進行監(jiān)測,也可直接使用當(dāng)?shù)氐臍庀髷?shù)據(jù)。考慮以上兩種情況,本文對降雨量監(jiān)測數(shù)據(jù)采用第一種關(guān)聯(lián)方式。
為實現(xiàn)降雨量監(jiān)測項目與數(shù)據(jù)的關(guān)聯(lián),在visual studio中新建類庫,添加引用“RevitAPI.dll”“RevitAPIUI.dll”,實現(xiàn)IExternalApplication接口。在類庫中新建winform窗體,獲取從數(shù)據(jù)庫中讀取的降雨量監(jiān)測數(shù)據(jù),利用C#語言編寫winform窗體與Revit交互代碼,并在菜單欄中生成相應(yīng)的命令按鈕,從而實現(xiàn)降雨量監(jiān)測項目與監(jiān)測數(shù)據(jù)的關(guān)聯(lián)。使用者單擊Revit菜單欄中的“降雨”按鈕,即可查詢數(shù)據(jù)庫中降雨的監(jiān)測數(shù)據(jù),如圖5所示。

系統(tǒng)對位移、滲流量等具有三維模型的監(jiān)測項目,使用了上文中的兩種方法關(guān)聯(lián)數(shù)據(jù),下文以位移監(jiān)測數(shù)據(jù)關(guān)聯(lián)為例,對第二種方法的使用進行闡述。
基于Revit軟件參數(shù)化建模的特性,每個監(jiān)測儀器模型在建立時,擁有不同且唯一的ElementID[9]。在新建的類庫中,同樣添加引用并實現(xiàn)IExternalApplication接口,不同的是編譯代碼時,使用pick object()方法,將測點的ID號與類庫中的winform窗體綁定,從而實現(xiàn)儀器三維模型與數(shù)據(jù)的關(guān)聯(lián)。使用者在系統(tǒng)中查看位移測點時,單擊該測點的三維模型,即可查詢該測點的監(jiān)測數(shù)據(jù),如圖6所示。

從系統(tǒng)中調(diào)用監(jiān)測數(shù)據(jù)分析模塊,實現(xiàn)監(jiān)測數(shù)據(jù)的預(yù)測分析。本文以沉降監(jiān)測數(shù)據(jù)分析為例,采用模塊中的BP神經(jīng)網(wǎng)絡(luò)模型進行分析預(yù)測。依據(jù)大壩的實際情況,選取時效因子t、水位因子h、前期雨量和(前3天)R1-3為輸入因子,將測點2018年9月1日~9月25日的實測數(shù)據(jù)作為訓(xùn)練樣本,當(dāng)模型的總體誤差降至0.001或訓(xùn)練次數(shù)達到5 000次時停止訓(xùn)練。BP神經(jīng)網(wǎng)絡(luò)對測點的25組實測數(shù)據(jù)進行計算,并預(yù)測后3天的沉降,如圖7所示。其中沉降的實測值與擬合值的相對平均誤差為0.65%,預(yù)測沉降的平均相對誤差為0.58%,表明本文構(gòu)建的BP神經(jīng)網(wǎng)絡(luò)模型精度較高,預(yù)測效果較好[10-11]。

本文基于BIM技術(shù),在Revit中,利用二維CAD圖紙建立工程的三維模型,依照監(jiān)測儀器實體裝置,建立監(jiān)測儀器族模型,并利用visual studio和C#語言,對Revit進行二次
開發(fā),實現(xiàn)系統(tǒng)與數(shù)據(jù)庫的交互,內(nèi)建安全監(jiān)測模型,對監(jiān)測數(shù)據(jù)進行預(yù)測分析。以某水庫大壩作為工程實例,構(gòu)建大壩的安全監(jiān)測信息系統(tǒng),全方位呈現(xiàn)了大壩結(jié)構(gòu)、監(jiān)測儀器類型及布設(shè),提高了安全監(jiān)測的可視化程度;數(shù)據(jù)管理模塊通過Revit與數(shù)據(jù)庫的交互,實現(xiàn)了監(jiān)測數(shù)據(jù)的高效管理;監(jiān)測數(shù)據(jù)分析模塊建立的BP神經(jīng)網(wǎng)絡(luò)模型,對實測數(shù)據(jù)的預(yù)測分析取得較好的預(yù)測效果[12]。