岳喜娜, 吳學毅, 呂明珠
(西安理工大學 印刷包裝與數字媒體學院, 西安 710048)
隨著我國公路建設事業的快速發展, 橋梁行業更是實現了跨越式發展.在橋梁養護行業, 傳統的橋梁養護管理模式面對繁雜的數據報告, 容易產生數據錯誤或遺失現象, 因此橋梁養護公司為了降低企業成本, 提高工作效率, 紛紛轉向數字化病害檢測記錄方式[1], 而實現橋梁的三維建模是實現其工作的基礎.參數化建模是擴展橋梁建模靈活性的主要手段[2], 而專家系統是是實現橋梁結構建模邏輯的方法之一, 本文針對使用專家系統方法進行梁式橋三維參數化建模展開研究.
目前主流的橋梁建模平臺是基于Autodesk、Bently、Dassault 公司的產品, 最為常見的是基于對UG、CATIA、SolidWorks、Inventor 的二次開發來完成對模型的參數化建模[3-6].本文基于OSG 圖形開發技術采用邊界表示法完成了對梁式橋基本部件的參數化建模開發,并采用一種將梁式橋參數化建模與專家系統相結合的方法, 以提高梁式橋參數化建模的靈活性與可擴充性.
了解梁式橋參數化建模過程, 提取其普遍性建模流程, 是進行梁式橋參數化建模專家系統方法研究的前提.
1.1.1 組件參數化建模過程
常見的梁式橋組件包括: 空心板、小箱梁、連續板、重力式橋臺、輕型橋臺、蓋梁柱式墩、柱式墩等.對一類組件進行參數化建模的過程如下:
(1)明確組件類型, 確認組件結構參數值以及組件的下一級部件組成關系.
(2)建立組件全局坐標系, 設置坐標原點與組件中某一部件的局部坐標系原點重合.
(3)按照組件的下一級部件組成關系及拓撲空間位置拼接各個部件, 形成完整的組件.
(4)將拼接完的組件進行繪制并展示模型.
1.1.2 全橋參數化建模過程
梁式橋全橋建模從建模流程上, 類似于組件建模,從建模內容上, 比組件建模較為復雜.
(1)明確全橋的結構組成, 全部組件結構參數值.
(2)建立全橋的全局坐標系.其中X 軸與全橋的橋梁中心線重合, Y 軸與全橋縱橋線重合, 坐標原點與左側橋臺局部坐標系原點重合.
(3)按照全橋的結構組成及組件的空間拓撲關系拼接全橋.
(4)將拼接好的全橋模型進行繪制并展示.
提取梁式橋組件及全橋建模的一般過程(如圖1)可以發現, 專家總結的橋梁結構計算公式及拼接知識是完成組件及全橋建模的邏輯基礎, 也是專家系統的知識庫內容; 組件及全橋的建模過程中的組裝流程是推理機的主要內容; 對推理出的結果進行三維繪制可作為解釋機制, 驗證參數化建模的正確性; 因此, 知識庫、推理機、參數化建模模塊是系統的重要組成模塊[7].

圖1 梁式橋快速建模專家系統結構圖
知識庫: 知識庫中存儲著梁式橋部件結構計算類知識和組件及全橋的拼接類知識, 按照知識類別及推理機的數據需要, 將知識庫分為4 類; 同時選擇合適的知識表達方式, 并設計其數據庫表結構; 知識庫是實現整個推理過程的數據基礎.
數據庫: 數據庫中保存了系統運行過程中產生的一些必要數據.同時知識庫是以數據庫的形式存在, 因此數據庫中包含了知識庫.數據庫是實現系統運行與推理過程的數據依托基礎.
主推理程序: 提取組件建模及全橋建模拼接的過程性知識, 實現組件及全橋建模繪制的過程性程序.
人機交互界面: 一部分是用戶使用, 在這部分用戶能夠實現橋梁組件瀏覽和全橋快速建模.另一部分是針對知識工程師的接口, 工程師在知識庫編輯界面, 可編輯、擴充知識庫, 使得系統更具靈活性與可擴展性.
參數化建模模塊: 包括3 部分內容, (1)橋梁部件建模算法; (2)組件建模拼接算法; (3)全橋建模拼接算法.該模塊作為系統重要的一部分使得系統具有解釋性與可觀察性.
總結梁式橋參數化建模一般過程可以發現, 知識共含有2 類: (1)橋梁組件結構計算知識; (2)橋梁組件及全橋結構拼接知識.
2.1.1 橋梁組件結構計算知識
本文研究的橋梁組件共包含了7 類, 每一類組件下又包含了該組件下一級全部部件結構, 因此一個組件的結構計算知識包含了其下一級全部部件的結構計算知識之和.以組件空心板為例, 空心板結構組成如圖2, 由一塊左邊板, N 塊中間板和一塊右邊板組成.因此空心板結構計算類知識包含了這3 類部件的全部結構計算知識之和.

圖2 空心板結構圖
空心板按照跨徑長度又可以分為7 類, 以表1 中展示的空心板部分知識為例, 舉出跨徑長度為6 m、8 m、10 m 的3 類空心板的結構計算知識.

表1 橋梁組件-空心板結構計算公式
2.1.2 橋梁組件及全橋結構拼接知識
對于每一類橋梁組件, 其結構組成都是固定的知識, 比如已知組件為空心板, 則知道空心板是由左邊板、若干塊中間板和右邊板拼接而成; 這一類知識屬于結構拼接類知識.而全橋的拼接知識與此類似.
梁式橋參數化建模需要兩類知識, 結合推理機進行推理時所需要的知識類型, 設計了4 類知識庫, 每類知識庫是按照知識特點進行劃分, 具有不同的作用.
2.2.1 組件結構參數庫
組件結構參數庫存放繪制一個組件所需要的結構參數數值的集合.以空心板為例, 繪制一跨空心板需要知道其全部的結構參數描述及參數的含義, 如: bNum:橋梁編號; span: 該聯跨徑組成; holenum: 孔號; length:跨徑長; bJ: 板間縫寬; kxbNum: 空心板數量; Gradient:彎斜坡度; Si: 蓋梁寬度中心距布孔線; Sj: 蓋梁寬度中心距墩柱中心線; D: 支座中心; 線距板端; H: 板梁高度;B: 右邊板右懸臂端部距道路設計線; bZ: 橫橋向支座中心距空心板中心線; hY1: 左邊板懸臂端部厚度; hY2:右邊板懸臂端部厚度; bB: 板梁寬度; bt: 中板頂寬;hG1: 左邊板懸臂根部厚度; hG2: 右邊板懸臂根部厚度;bY1: 左邊板懸臂寬度; bY2: 右邊板懸臂寬度; xT: 上倒角寬; yT: 上倒角高度; xJ: 下倒角寬; yJ: 下倒角高; hJ:底緣高度.以上的一組結構參數能夠滿足對空心板的三維外觀描述, 其它的橋梁組件結構參數庫, 都有一套可以用來描述自己三維結構的特殊參數.其設計方式和空心板類似.
2.2.2 組件知識庫
組件知識庫中存放了計算組件結構參數的計算公式,為2.1.1 節所描述的知識類型, 屬于專家總結的元知識.
以空心板知識庫為例, 圖3 是其跨徑長度為10 m的知識庫內容.

圖3 跨徑長度為10 米的空心板知識庫
2.2.3 模型拼接庫
模型拼接庫中存放了繪制該模型(組件或全橋)所需要的下一級結構拼接關系、部件繪制函數名稱和部件個數約束等.具體存放的是2.1.2 節描述的知識類型.
2.2.4 模型繪制信息庫
模型繪制信息庫存放了繪制該模型(組件或全橋)所需要的全部信息.如一座橋梁的繪制信息庫(已選上部結構為空心板、橋臺結構為輕型橋臺, 墩柱類型為蓋梁柱式墩)會存儲: N 跨空心板的繪制信息,N-1 個蓋梁柱式墩的繪制信息和2 個輕型橋臺繪制信息.每一條繪制記錄中會包含當前繪制組件的三維空間坐標、模型繪制函數等.
2.3.1 知識表達方式
常見的知識表達方式包括一階邏輯謂詞表示法、產生式表示法、語義網絡表示法、框架表示法、過程表示法、面向對象表示法等, 這些知識表達方式各有特定的適用條件, 且各有優缺點.本文結合2.1.1 節中知識類型的特點, 選擇產生式規則結合公式表達式作為知識的表達方式.
產生式規則的具體表示為“IF a Then b”, 這與橋梁結構計算知識的表示方式非常接近, 因此采用產生式規則能夠很好的解釋當前知識點.將知識采用產生式規則方法表達舉例如下:
if (組件類型==“空心板”&&跨徑長度==“10 米”&&參數名稱描述==“蓋梁長度”) then (蓋梁長度=“(A×G+70)/cos(E)”).
2.3.2 公式解析器的應用
上一節知識表達式的后件是固定值或參數計算公式.計算公式是以字符串類型存在的, 字符串類型的公式失去了公式原本的意義, 因此為了解決公式的解析計算, 本文引入公式解析器來完成對字符串類型的公式的求解計算.
(1)橋梁結構計算公式的分類
① 固定值.圖4 中, 可以看到板梁高度是由一個固定值表示.公式解析器需要完成將字符串類型的變量轉變為一個整形值.

圖4 空心板元知識
② 普通公式計算.圖4 中左邊板懸臂寬度的公式為: “(B-A×G)/2”.公式解析器需完成變量替換以及基本算術表達式的計算功能.
③ 含有特殊數學符號的公式計算.如蓋梁柱式墩的部件蓋梁, 其長度的計算公式為“(A×G-70)/cos(E)”,公式解析器需要解析特殊的數學符號(cos, tan, sin, abs).
④ 帶有IF 語句的公式.圖4 中板梁寬度的計算公式為“IF((B-A×100)<150, 100, IF((B-A×125)<150, 125,(B-50)/A))))”.這是一個帶有IF 語句的具有特定邏輯判斷語句的公式, 因此公式解析器需要能夠自動解析這種類型的數學公式, 實現對本文所特有的橋梁公式的解析工作.
(2)公式解析器流程
圖5 是公式解析器總的計算流程, 圖6、圖7、圖8 是總流程下對應功能的詳細計算流程.其中最為核心的是最內側公式表達式處理, 是整個公式解析計算最重要的部分[8].

圖5 公式解析器運算流程圖

圖6 預處理流程圖

圖7 邏輯語句處理流程圖
(3)計算結果展示
表2 列舉了9 項普通公式采用公式解析器及微軟計算器分別計算的結果值及誤差值, 可以看出誤差精確到千分之一, 能夠滿足本項目的計算精度.
表3 是4 組對含有IF 語句公式的計算結果, 邏輯結果判斷正確, 能有效計算特殊數學公式.

圖8 最內側公式表達式流程圖

表2 普通計算公式結果統計

表3 含IF 語句公式計算結果統計
推理機調用知識庫中的知識, 按照專家思考問題的邏輯, 對提出的問題給出合理的答案.
本文研究最終驗證手段是參數化建模結果, 因此,推理機給出的答案是參數化建模所需要的結構參數數據和模型繪制數據.推理機需求解的問題是特定模型的特定求解過程.因此推理機的推理內容包括: 對組件建模所需信息進行推理和對全橋建模進行推理.
對組件推理完成拼接和建模參數的求解, 并將具體參數傳遞給參數化建模模塊實現模型的繪制是推理機的推理過程(如圖9).組件繪制推理過程中主要包括兩方面: (1)組件對應的組件結構參數庫推理; (2)組件對應的模型繪制庫推理.全橋繪制推理過程也主要包括兩方面內容: (1)主梁組件、橋臺組件、橋墩組件的組件結構拼接庫推理; (2)全橋對應的模型繪制庫推理.二者推理過程類似.

圖9 推理機主要推理流程
3.2.1 組件結構參數庫推理過程
圖10 為組件對應的結構參數庫推理流程, 具體推理流程如下:
(1)判斷組件類型, 到該組件對應的組件結構參數庫中獲取繪制該組件所需要的全部結構參數值標簽.
(2)到該組件對應的組件知識庫中逐條查找各值標簽所對應的結構參數計算公式, 并返回查找結果.
(3)采用公式解析器對獲取到的公式表達式進行解析計算, 并將計算結果返回.
(4)按照參數值標簽將返回的計算結果存儲在組件結構參數表對應的值標簽下, 至此完成組件結構參數庫推理流程.

圖10 結構參數庫推理流程圖
3.2.2 模型繪制信息庫推理過程
圖11 為模型繪制庫推理流程, 具體流程如下:
(1)根據所選組件類型, 到組件對應的模型拼接庫中查找, 查找到該組件模型拼接庫的全部記錄信息.
(2)逐條解析模型拼接庫的記錄信息, 獲取本條記錄信息下部件名稱、部件個數、部件繪制函數等相關信息, 依據這些信息計算該部件在整個組件中的三維空間坐標.
(3)逐條將(2)中得到的全部信息存放在該組件對應的模型繪制庫中, 此時, 組件的模型繪制庫中包含了繪制該組件模型所必須的繪制信息.至此完成組件的模型繪制庫推理流程.
參數化建模模塊是將推理機推理出的數據結果通過參數化建模算法建立相對精確的三維實體模型[9], 實現結果驗證.
整橋由組件拼接而成, 組件由部件拼接而成, 因此部件的建模算法最為基礎.一般部件的建模流程如圖12 所示.

圖11 模型繪制庫推理流程圖

圖12 一般部件繪制流程圖
如連續板的繪制過程, 首先根據二維輪廓圖, 確定連續板的橫截面及相關結構參數, 再根據結構參數確定坐標原點與坐標系, 從二維結構參數計算三維頂點坐標, 最后依據頂點坐標繪制三維模型[10].
4.2.1 組件建模拼接算法
組件拼接算法是在已獲得部件建模算法、組件結構參數及組件繪制數據基礎上, 將組件繪制成三維模型的算法.通常拼接組件的流程, 如圖13, 具體為:
根據傳入的組件類型, 在MFC_OSG 類中匹配組件對應的結構參數信息和組件繪制信息, 并解析組件繪制信息完成橋梁組件的繪制.

圖13 組件建模拼接算法
4.2.2 全橋建模拼接算法
在全橋拼接過程中會將整橋的繪制信息、上部結構、橋臺結構和橋墩結構的結構參數信息全部傳遞給MFC_OSG 類, 只需要解析傳遞進來全橋繪制信息, 匹配每一個組件對應的繪制模型函數與繪制模型坐標位置, 借助OSG 中位姿變換節點, 將每個組件放置于特定位置, 即可完成全橋的模型繪制, 如圖14 所示.
知識庫的編輯模塊通過對知識庫內容的增刪改查完成知識擴充及修改, 為系統增加了擴充性.用戶通過選擇組件類型、跨徑長度等條件調取相應的組件知識庫完成知識的查看.用戶通過編輯知識展示區域, 選擇增加、刪除、修改等功能, 完成對當前知識的修改, 且修改內容直接存儲入知識庫中, 主界面見圖15.
基于上述系統設計, 本文在VS2013 (Microsoft Visual Studio 2013)平臺上, 采用OSG 庫, 利用MFC界面庫, 使用三層架構的系統架構開發了一個梁式橋快速建模專家系統.6.1.2 節詳述其應用過程.
6.1.1 參數化建模結果
本文依次對7 類橋梁組件及全橋模型進行系統建模, 其建模結果展示如圖16 至圖23.
6.1.2 系統結果展示
如圖24 為系統主界面, 包括3 部分, 橋梁BIM 組件建模, 全橋建模和知識庫管理.以全橋建模為例, 詳述系統運行過程.在全橋建模模塊, 輸入繪制一個橋梁所需主要參數后, 點擊快速計算按鈕, 生成全橋模型如圖25.主要參數不變, 修改跨徑組成, 系統能夠生成不同全橋建模結果, 圖25 為6 跨橋梁, 圖26 為9 跨橋梁.
在全橋生成過程中, 首先系統從界面傳入主結構參數, 然后對比該實例的參數與數據庫中已有實例的參數, 若已有, 則調取推理出的數據及繪制方案, 將其傳遞給參數化建模模塊, 完成模型繪制并展示在界面上.若無, 則利用推理機中的全橋推理流程, 檢索相應知識庫, 完成數據及繪制方案推理, 將結果傳遞給參數化建模模塊, 完成模型繪制并展示在界面上.

圖14 全橋建模拼接算法

圖15 知識庫編輯主界面

圖16 空心板模型

圖17 連續板模型

圖18 小箱梁模型
BIM 組件的建模流程可參考全橋建模流程.知識庫的編輯可參照第5 節.

圖19 輕型橋臺模型

圖20 蓋梁柱式墩模型

圖21 重力式橋臺模型

圖22 柱式墩模型

圖23 全橋模型

圖24 系統主界面

圖25 6 跨全橋建模結果

圖26 9 跨全橋建模結果
(1)參數化建模結果
對比專家給出的橋梁及組件三維圖形, 能夠正確建立模型形狀.三維建模結果準確.在全橋拼接時, 存在拼接縫隙, 說明系統計算結果有偏差, 計算精度待改進.
(2)知識庫編輯結果
可通過增刪查改方式修改知識庫中的存儲的知識內容, 可修改推理機所依賴的知識內容.
(3)專家系統結果
該專家系統能夠準確運行, 通過用戶在界面輸入少量必要的主要參數, 就能準確完成一座橋梁的粗建模, 完成自動化建模過程, 且結果準確.
本文采用一種結合專家系統與梁式橋參數化建模的方法, 該方法通過構建專家系統的各功能模塊以及各模塊之間的聯系, 能夠實現根據用戶輸入的少量主要參數自動完成整橋及組件的參數化建模.通過知識庫編輯完成對知識的修改, 進而影響參數化建模所依賴的數據計算方式, 使用戶參與到梁式橋參數化建模的過程中.該方法促進了梁式橋參數化建模的靈活性和可擴展性, 避免了傳統程序“一經寫定, 不易修改”的弊端.