隋國棟, 張幸幸, 董福品
(1. 華北電力大學(xué), 北京 102206; 2. 中國水利水電科學(xué)研究院流域水循環(huán)模擬與調(diào)控國家重點(diǎn)實(shí)驗(yàn)室, 北京 100038)
近十幾年來,隨著土石壩的施工工藝的創(chuàng)新和新型材料的應(yīng)用,我國高土石壩的建設(shè)處于高速發(fā)展階段[1]。隨著壩高的增加,對土石壩安全性也提出了更高的要求。在土石壩的設(shè)計(jì)流程中,土石壩的數(shù)值分析是其中的重要環(huán)節(jié),而數(shù)值分析過程中工作量最大的環(huán)節(jié)莫過于建模。傳統(tǒng)土石壩三維建模采用交互式方法。交互式建模的優(yōu)點(diǎn)在于其直觀的表達(dá)方式,且能適應(yīng)較為復(fù)雜場景。但其創(chuàng)建過程復(fù)雜、耗時(shí)長,且不易修改[2]。所以尋找一種速度快、精度高的土石壩三維建模方法有其必要性。參數(shù)化建模能有效解決上述問題,尤其是在壩型方案比選和壩體材料分區(qū)比較分析中,參數(shù)化建模能大大提高工作效率。
參數(shù)化建模,是指在建模之前首先對模型的構(gòu)造特征進(jìn)行分析,提取模型特征參數(shù),通過建立參數(shù)與模型之間的對應(yīng)關(guān)系,輸入控制參數(shù)即可創(chuàng)建模型[3]。
參數(shù)化建模的優(yōu)點(diǎn)在于[4]:(1)速度快。輸入特征參數(shù)后,建模過程會(huì)通過預(yù)先編寫的程序自動(dòng)快速完成。(2)易修改。利用模型中施加的幾何約束,修改某一特征參數(shù),其他幾何特征也會(huì)隨之改變,不用全盤修改。(3)通用性強(qiáng)。初次建模程序設(shè)計(jì)完成后,可以通過輸入不同的參數(shù),達(dá)到對同一系列其他不同規(guī)格模型建模的目的。
充分發(fā)揮參數(shù)化建模優(yōu)越性的一個(gè)重要的前提是所建模型系列的相似性,即所建模型為同一“類”。這樣即可把工作重心放在以二次開發(fā)的方式搭建參數(shù)與模型之間的聯(lián)系上。CATIA的二次開發(fā)完成后,輸入不同的參數(shù)即可快速創(chuàng)建同一“類”不同參數(shù)的模型。土石壩發(fā)展近百年來,其壩型也逐漸趨于穩(wěn)定,現(xiàn)高土石壩的壩型主要有土質(zhì)心墻堆石壩、混凝土面板堆石壩和瀝青混凝土心墻堆石壩。基于此前提,對CATIA進(jìn)行二次開發(fā),實(shí)現(xiàn)土石壩的參數(shù)化建模,能夠大大提高土石壩建模的效率。
CATIA是法國達(dá)索公司出品的CAD/CAE/CAM一體化軟件,在航空航天、汽車制造、機(jī)械制造、電子電器等領(lǐng)域得到廣泛應(yīng)用。其優(yōu)點(diǎn)在于強(qiáng)大的三維參數(shù)化建模能力,并且CATIA開放了大部分接口,提供了很好的二次開發(fā)平臺(tái)[5]。
通過C/C++、VB等語言編寫程序,在CATIA上實(shí)現(xiàn)自定義功能,這種技術(shù)叫作CATIA二次開發(fā)。CATIA二次開發(fā)的方式主要有兩種:CAA(組件應(yīng)用構(gòu)架)和Automation API(自動(dòng)化應(yīng)用接口)。兩種方式各有其優(yōu)缺點(diǎn),具體介紹如下。
(1)CAA是基于組件的定制開發(fā)方式。用戶在快速應(yīng)用開發(fā)環(huán)境RADE(Rapid Application Development Environment)中,利用CATIA開放接口,采用C++語言編程,把自己的知識(shí)集成到特定的 CATIA 應(yīng)用模塊中,實(shí)現(xiàn)對CATIA的二次開發(fā)[6]。RADE為集成在Microsoft Visual Studio平臺(tái)中的CATIA二次開發(fā)環(huán)境,包含完整的編程工具組。該開發(fā)方式運(yùn)行速度快、擴(kuò)展性強(qiáng),但對開發(fā)技術(shù)要求較高,且系統(tǒng)維護(hù)較復(fù)雜。
(2)Automation API。利用CATIA提供的Automation API,用VB語言對CATIA進(jìn)行二次開發(fā)。大多以Visual Basic 6.0作為開發(fā)環(huán)境[7]。具體的操作流程為:以CATIA中錄制宏的功能生成的VBScript代碼為基礎(chǔ),在Visual Basic 6.0開發(fā)環(huán)境中進(jìn)行編譯,將模型的重要參數(shù)作為輸入變量,生成可執(zhí)行文件,達(dá)到參數(shù)化建模的目的[8]。另外,也可將生成的VBScript嵌入到HTML的網(wǎng)頁中。第三種常用的開發(fā)環(huán)境為Excel-VBA。VBA(Visual Basic for Application)為Visual Basic的一種宏語言,主要用來擴(kuò)展Windows的應(yīng)用程序功能,特別是Microsoft Office軟件。Excel-VBA即為Excel中以VB為基礎(chǔ)的宏語言。
本文選擇Automation API二次開發(fā)方式,此方式學(xué)習(xí)成本較低,基礎(chǔ)代碼可以通過CATIA錄制宏的功能獲得。開發(fā)環(huán)境為Excel-VBA,較前兩種開發(fā)環(huán)境,采用Excel-VBA對CATIA進(jìn)行二次開發(fā)的優(yōu)點(diǎn)在于可以方便快捷地讀取Excel單元格中的大量數(shù)據(jù)。開發(fā)模式概括見圖1,在Excel軟件提供的Visual Basic編輯器中采用Excel-VBA語言編程,創(chuàng)建Excel中存儲(chǔ)的參數(shù)與土石壩三維模型之間的聯(lián)系,達(dá)到土石壩三維參數(shù)化建模的目的。
只要確定土石壩的幾個(gè)典型斷面,便可確定土石壩的基本幾何形狀。在典型斷面中加密斷面便可提高土石壩三維建模的精度。所以,本文采用“斷面法”實(shí)現(xiàn)土石壩三維模型的建立,即:先繪制控制斷面的節(jié)點(diǎn),連結(jié)節(jié)點(diǎn)生成控制斷面,重復(fù)上述過程生成若干控制斷面,最后由控制斷面“放樣”得到土石壩實(shí)體。
程序設(shè)計(jì)過程中,斷面上每個(gè)節(jié)點(diǎn)的生成可以采用循環(huán)語句,連結(jié)節(jié)點(diǎn)生成每個(gè)控制斷面的過程可以模塊化,使程序易讀、易修改、易維護(hù)。對CATIA進(jìn)行二次開發(fā)的程序結(jié)構(gòu)如圖2所示。
圖2 對CATIA進(jìn)行二次開發(fā)的程序結(jié)構(gòu)
程序結(jié)構(gòu)中幾個(gè)重要應(yīng)用程序編程接口(API)簡介[9]如下。
Application:要對CATIA進(jìn)行操作,首先是要連接到它的com接口,打開CATIA文件。
Documents:是零件(Part)、產(chǎn)品(Product)、工程圖(Drawing)等對象的合集。
Part:是零件文檔最上層的對象,獲取Part對象后可以操作零件文檔。
Bodies:實(shí)體對象的合集。
Body:是Bodies中某一特定的實(shí)體對象,它包含了操作零件文檔所需的大部分重要的屬性、方法和對象。
Sketches:草圖對象的合集,Part對象的一個(gè)屬性,獲取Sketches對象即可創(chuàng)建修改草圖。
Factory2D:草圖元素的構(gòu)造器,可以通過它在草圖特征中繪制點(diǎn)、線、圓弧、整圓等。
OriginElements:Part對象的一個(gè)屬性,用來描述零件文件的三維軸系統(tǒng)。獲取該屬性后,可以訪問零件文檔的參考平面。
Shapefactory:實(shí)體特征構(gòu)造器,獲取該對象后,可以完成凸臺(tái)、放樣、旋轉(zhuǎn)體等實(shí)體特征的創(chuàng)建。
以白云混凝土面板堆石壩為例,介紹土石壩三維參數(shù)化建模過程(見圖3)。
圖3 土石壩參數(shù)化建模過程
(1)數(shù)據(jù)前處理。在AutoCAD中獲取斷面信息,其中包括每個(gè)控制斷面垂直壩軸線的位置,以及每個(gè)控制斷面草圖中節(jié)點(diǎn)的絕對坐標(biāo)。本文統(tǒng)一獲取每個(gè)斷面的13個(gè)節(jié)點(diǎn)信息,將1節(jié)點(diǎn)設(shè)為原點(diǎn)(0,0),其他節(jié)點(diǎn)的絕對坐標(biāo)轉(zhuǎn)換為相對坐標(biāo)(單位:m)。以“0+4”斷面為例,節(jié)點(diǎn)編號(hào)及相對坐標(biāo)如圖4所示。將斷面位置及節(jié)點(diǎn)相對坐標(biāo)輸入到Excel相應(yīng)的單元格中,如圖5所示(省略部分?jǐn)嗝婕肮?jié)點(diǎn)信息)。
圖4 “0+4”斷面中節(jié)點(diǎn)編號(hào)規(guī)律及相對坐標(biāo)
圖5 Excel中輸入的斷面信息
(2)創(chuàng)建參考面。依次獲取Application、Documents、Part、Bodies、Body對象,打開CATIA軟件并新建一個(gè)零件文件。獲取OriginElements對象,以X-Z面為基準(zhǔn)面,讀取Excel表格中“斷面位置”列中每個(gè)斷面的偏移距離,創(chuàng)建25個(gè)參考面,如圖6所示。創(chuàng)建參考面的目的是確定控制斷面垂直壩軸線的位置,為各控制斷面的繪制提供基準(zhǔn)面。
圖6 創(chuàng)建參考面
(3)在參考面上繪制控制斷面。獲取Sketches對象,打開草圖編輯器。隨后獲取Factory2D對象,繪制控制斷面。分別以創(chuàng)建的25個(gè)參考面為基準(zhǔn)面,讀取Excel中的節(jié)點(diǎn)坐標(biāo),生成節(jié)點(diǎn),將節(jié)點(diǎn)依次連結(jié)生成閉合平面。最終繪制成25個(gè)控制斷面,如圖7所示。
(4)利用放樣工具生成實(shí)體。獲取Shapefactory對象,打開實(shí)體特征構(gòu)造器。依次選取相鄰的兩個(gè)斷面“放樣”生成24個(gè)實(shí)體,完成土石壩三維參數(shù)化建模。土石壩三維實(shí)體最終效果如圖8所示。
基于此模型便可開展隨后的壩體分區(qū)工作。采用圖9所示的壩體材料分區(qū),將分區(qū)邊界依次輸出,并拉伸為曲面。利用輪廓曲面便可將土石壩實(shí)體依次切割為8個(gè)分區(qū)。在CATIA裝配模塊中將8個(gè)模塊裝配為一個(gè)“產(chǎn)品”,達(dá)到三維土石壩分區(qū)的目的,壩體分區(qū)后的效果見圖10。
圖7 創(chuàng)建控制斷面
圖8 土石壩實(shí)體
圖9 壩體材料分區(qū)
注:①混凝土面板;②墊層區(qū);③過渡區(qū);④新鮮、微風(fēng)化灰?guī)r主堆石區(qū);⑤弱風(fēng)化砂巖,灰?guī)r次堆石區(qū);⑥弱風(fēng)化、非級配灰?guī)r石區(qū);⑦新鮮、微風(fēng)化灰?guī)r石區(qū);⑧干砌石護(hù)面
(a)壩體最大剖面
(b)三維模型
本文采用的基于CATIA二次開發(fā)的土石壩三維參數(shù)化建模方法,能夠快速準(zhǔn)確地創(chuàng)建精度較高的土石壩模型。整個(gè)建模過程中,工作量相對較大的環(huán)節(jié)在于前期數(shù)據(jù)的處理,需人工處理斷面節(jié)點(diǎn)坐標(biāo)信息,并將其輸入到相應(yīng)的單元格中,而其他建模步驟,只需單擊“創(chuàng)建”按鈕,程序會(huì)自動(dòng)化完成。該方法對于縮短創(chuàng)建土石壩模型時(shí)間具有明顯效果,如有必要,隨后的廊道和防滲墻等其他水工設(shè)施的建立可以在該方法所創(chuàng)建模型的基礎(chǔ)上展開??傊?,本文探索出的基于CATIA二次開發(fā)技術(shù)的參數(shù)化建模方法可以大大提高土石壩三維建模的效率,進(jìn)而縮短土石壩仿真分析周期。