羅 通, 練章華, 牟易升, 王進(jìn)豐
(1.西南石油大學(xué) 工程學(xué)院, 四川 南充 637001; 2.西南石油大學(xué) 油氣藏地質(zhì)及開發(fā)工程國家重點(diǎn)實(shí)驗(yàn)室,四川 成都 610500; 3.長江勘測規(guī)劃設(shè)計(jì)研究院, 湖北 武漢 430010)
渠道是整個干渠工程項(xiàng)目必不可少的組成部分,在水利水電行業(yè)發(fā)揮著調(diào)水與輸配水[1]的重要作用。渠道規(guī)劃與設(shè)計(jì)是關(guān)系國計(jì)民生的大事,近年來,三維設(shè)計(jì)技術(shù)已被國內(nèi)外學(xué)者應(yīng)用于渠道的規(guī)劃與設(shè)計(jì)中,如黃少華等[2]將CATIA引入了渠道施工詳細(xì)設(shè)計(jì),采用參數(shù)設(shè)計(jì)方法和模板技術(shù)建立了渠道的三維模型;覃志浩[3]將GEOPAK site運(yùn)用在渠道三維設(shè)計(jì)中,論述了渠道三維設(shè)計(jì)流程;桑國慶等[4]探索了三維動態(tài)可視化設(shè)計(jì)技術(shù)在大型渠道設(shè)計(jì)中的應(yīng)用,并與傳統(tǒng)二維設(shè)計(jì)方法進(jìn)行對比發(fā)現(xiàn)該三維設(shè)計(jì)技術(shù)能夠明顯提高設(shè)計(jì)效率;易平等[5]敘述了Autodesk Civil3D設(shè)計(jì)渠道的方法,應(yīng)用效果較好。但他們的渠道設(shè)計(jì)都需要操作復(fù)雜的通用軟件,設(shè)計(jì)過程繁瑣,設(shè)計(jì)工作量大,設(shè)計(jì)周期長,不僅要提前做好多種類型的模板,還要提前規(guī)劃好模型的設(shè)計(jì)參數(shù),這也對設(shè)計(jì)人員的設(shè)計(jì)經(jīng)驗(yàn)和素質(zhì)提出了更苛刻的要求,由此可見通用三維設(shè)計(jì)軟件在渠道設(shè)計(jì)中實(shí)用性不強(qiáng)。但是,目前沒有一款專門用于渠道設(shè)計(jì)并能簡化設(shè)計(jì)的三維軟件。因此,非常有必要對通用三維設(shè)計(jì)軟件進(jìn)行二次開發(fā)。
CATIA V5是法國達(dá)索(Dassault Systems)公司與美國IBM (International Business Machines Corporation)公司合作開發(fā)的、面向?qū)ο驝AD/CAE/CAM的產(chǎn)品,目前已廣泛運(yùn)用于飛機(jī)、汽車、船舶、水利水電等領(lǐng)域。它采用了全新的、基于組件的開放式體系應(yīng)用架構(gòu),允許使用者根據(jù)自己的需求進(jìn)行二次開發(fā)或定制相應(yīng)的應(yīng)用解決方案。目前,許多專家學(xué)者基于CATIA的二次開發(fā)技術(shù)分別在汽車零件部設(shè)計(jì)[6-10]、飛機(jī)零部件設(shè)計(jì)[11-15]、風(fēng)電葉片的建模技術(shù)[16]、船舶設(shè)計(jì)[17-19]、水電站工程的地質(zhì)開挖與處理[20-23]、大壩拱圈設(shè)計(jì)[24]、重力壩建模設(shè)計(jì)[25]等多個領(lǐng)域進(jìn)行了研究與探索。但是,目前沒有專家學(xué)者將CATIA的二次開發(fā)技術(shù)用于渠道的三維設(shè)計(jì),因此,需要基于CATIA的二次開發(fā)技術(shù)對渠道三維設(shè)計(jì)進(jìn)行研究。
CATIA V5的內(nèi)部模塊是基于CNEXT并能支持多種組件架構(gòu),具有多個二次開發(fā)接口,能夠運(yùn)用各種開發(fā)工具如CAA、JAVA、VB、腳本語言等實(shí)現(xiàn)二次開發(fā)。由于JAVA、腳本語言雖然簡單方便,但人機(jī)交互性較差[15],只適用于簡單的二次開發(fā)。利用VB(Visual Basic)二次開發(fā)CATIA的入門簡單,開發(fā)速度較快,但與CATIA本身底層架構(gòu)的緊密性不是最優(yōu)的,用其來實(shí)現(xiàn)渠道三維設(shè)計(jì)這樣復(fù)雜的程序比較困難。
CAA(Component Application Architecture)采用面向?qū)ο蟮木幊陶Z言C++,在CATIA底層對其進(jìn)行二次開發(fā),包含了一整套函數(shù)庫和組件庫,具有強(qiáng)大的交互、集成和自定義[20]的功能擴(kuò)展能力,非常適于深層次開發(fā)CATIA以實(shí)現(xiàn)復(fù)雜和功能強(qiáng)大的程序。因此,本文基于CAA的CATIA二次開發(fā)技術(shù),以渠道三維設(shè)計(jì)為研究對象,研究開發(fā)出一種比較實(shí)用的渠道三維設(shè)計(jì)應(yīng)用程序,以期簡化渠道設(shè)計(jì)工作量,縮短渠道設(shè)計(jì)周期,提高工作效率,同時也降低對設(shè)計(jì)人員的嚴(yán)格要求,以便讓更多的新技術(shù)應(yīng)用于渠道設(shè)計(jì)及水利水電工程設(shè)計(jì)中。
基于開放式、可擴(kuò)展的CAA組件架構(gòu),設(shè)計(jì)人員能通過二次開發(fā)完成對Dassault Systemes產(chǎn)品功能擴(kuò)展,也利于世界范圍內(nèi)的開發(fā)商以及使用者能夠參與軟件研發(fā)。CAA支持各種二次開發(fā)工作,并能與CATIA底層軟件系統(tǒng)無縫集成,非常便于設(shè)計(jì)人員的二次開發(fā)。CAA二次開發(fā)是依靠以Microsoft Visual Studio VC++為開發(fā)工具載體的可視化集成開發(fā)環(huán)境RADE和各種API接口程序來實(shí)現(xiàn)的。Dassault Systemes主要有CAA RADE快速開發(fā)環(huán)境、CAA CATIA V5 API、CAA ENOVIA LCA V5 API、CAA DELMIA V5 API、CAA ENOVIA PORTAL V5 API等CAA產(chǎn)品。
目前,采用所見即所得的面向?qū)ο蟪绦蛟O(shè)計(jì)OOP已經(jīng)成為軟件開發(fā)領(lǐng)域的主流,推動了軟件封裝性、抽象性、可復(fù)制性的發(fā)展。CAA基于面向?qū)ο蟪绦蛟O(shè)計(jì)OOP的組件對象模型(COM)和對象的連接與嵌入(OLE)技術(shù),更有利于設(shè)計(jì)標(biāo)準(zhǔn)化程序并使程序設(shè)計(jì)工作變得更簡單容易。Dassault Systemes的CAA組件系統(tǒng)架構(gòu)如圖1表示,其展示了Dassault Systemes各組件及產(chǎn)品之間的層次關(guān)系?;贑AA組件架構(gòu),以搭積木方式建立Dassault Systemes產(chǎn)品系統(tǒng),非常有利于系統(tǒng)的發(fā)展。為了更好地商業(yè)運(yùn)作,CAA分別被分設(shè)為多個軟件包(Configuration)和模塊(Product)。其中,CAA主要包括了CAA-Multi-workspace Application Building、CAA-C++ Extended Development、CAA-C++ Base Development、CAA-Java Base Development、CAA-Legacy Data Integration Development Configuration等5個配置軟件包;CAA主要包括的模塊(Product)有:CAA-C++ Source Checker、CAA-Teamwork Release Manager、CAA-C++ API Documentation Generator、CAA-Multi-Workspace Application Builder、CAA-CAA Data Model Customizer、CAA-Source Code Manager、CAA-Java Unit Test Manager、CAA-Web Application Generator for Legacy Database、CAA-Java Interactive Dashboard[26]。
圖1 CAA的組件系統(tǒng)架構(gòu)圖
CAA的安裝主要包括兩大部分(如圖2所示),首先應(yīng)安裝Dassault Systemes的CATIA V5、ENOVIA相關(guān)應(yīng)用軟件,然后安裝CAA和RADE模塊,便能利用VC++編程語言對CATIA進(jìn)行二次開發(fā)。
圖2 CAA的安裝順序圖
在進(jìn)行渠道規(guī)劃與設(shè)計(jì)時,需要比選渠道布置線路;在施工時也需要根據(jù)現(xiàn)場具體施工情況,對渠道設(shè)計(jì)進(jìn)行變更,可見一個設(shè)計(jì)方案的最終確定可能會經(jīng)歷多次的“設(shè)計(jì)-反饋-重新設(shè)計(jì)-評價(jià)”的環(huán)節(jié),若采用傳統(tǒng)的三維設(shè)計(jì)方法勢必會給設(shè)計(jì)人員帶來巨大的工作量,也會延長設(shè)計(jì)周期。因此,需要將CAA二次開發(fā)技術(shù)引入CATIA中,實(shí)現(xiàn)交互式、所見即所得的渠道三維設(shè)計(jì)功能程序。渠道三維設(shè)計(jì)程序?qū)崿F(xiàn)的主要功能(如圖3所示)主要包括渠道分段功能、渠道總體設(shè)計(jì)、渠道詳細(xì)設(shè)計(jì),渠道總體設(shè)計(jì)包括渠道軸線規(guī)劃、確定渠底高程、設(shè)計(jì)與放置渠道截面;渠道詳細(xì)設(shè)計(jì)包括渠道布置區(qū)域的地質(zhì)數(shù)據(jù)導(dǎo)入、渠道面與渠道體的生成、渠頂公路設(shè)計(jì)。
圖3 渠道三維設(shè)計(jì)程序的功能分解
渠道尤其是大型渠道如南水北調(diào)的渠道一般都比較長,將渠道規(guī)劃模型進(jìn)行分段設(shè)計(jì)與處理是適宜、合理的,其理由如下:
(1) 如果渠道特別長,設(shè)計(jì)時將對計(jì)算機(jī)軟硬件性能要求非常高,帶來不必要的巨大設(shè)計(jì)成本,因此需將渠道規(guī)劃模型進(jìn)行分段設(shè)計(jì)與處理;
(2) 在與建筑物交接處、渠道斷面變化處[2]、地形變化顯著處,需將渠道規(guī)劃模型進(jìn)行分段設(shè)計(jì)與處理;
(3) 將渠道規(guī)劃模型進(jìn)行分段設(shè)計(jì)與處理有利于支持在線、異地協(xié)同設(shè)計(jì)和模型數(shù)據(jù)的管理。
根據(jù)CATIA本身的數(shù)據(jù)處理能力和當(dāng)前各設(shè)計(jì)單位的軟、硬件配置情況來看,建議將渠道規(guī)劃模型的分段長度設(shè)定在15 km左右。
利用CAA提供的交互方式開發(fā)渠道分段功能。在CATIA原有的Product的Workbench中插入新的“渠道分段”工具條及“規(guī)劃模型分段”命令。執(zhí)行“規(guī)劃模型分段”命令后,程序會自動讀取《渠道模型分段控制表.xls》中關(guān)于渠道的起始樁號和終止樁號數(shù)據(jù)(如表1所示),據(jù)此將渠道規(guī)劃模型進(jìn)行分段處理,同時自動將渠道分塊的Catpart文件名信息寫入《渠道模型分段控制表》中。
表1 渠道模型分段控制表
為了更好地集成渠道三維總體設(shè)計(jì)功能,也為了設(shè)計(jì)人員能更方便、快捷地轉(zhuǎn)換到總體設(shè)計(jì)功能模塊,采用CAA批處理方式二次開發(fā)CATIA,即在CATIA“開始”菜單下的“機(jī)械設(shè)計(jì)”模塊中開發(fā)出一個名為“渠道總體設(shè)計(jì)”的Workbench工作臺,并在這個環(huán)境下插入能夠完成總體設(shè)計(jì)的各菜單和相應(yīng)的工具條及命令按鈕,如圖4所示。
(1) 進(jìn)入渠道總體設(shè)計(jì)模塊后,渠道軸線規(guī)劃命令、確定渠底高程命令、放置渠道截面命令才能夠被激活,否則呈暗色,這主要是防止渠道設(shè)計(jì)人員誤調(diào)用程序命令而開發(fā)的規(guī)避錯誤機(jī)制,以便減少程序系統(tǒng)不必要的運(yùn)行時間。
(2) 調(diào)用“渠道軸線規(guī)劃”命令后,程序會自動根據(jù)《渠道中心線坐標(biāo)表.xls》的中心線各端點(diǎn)的坐標(biāo)、端點(diǎn)所在渠道分段長度、樁號、中心線的轉(zhuǎn)彎半徑、角度、圓心坐標(biāo)等參數(shù)(如表2所示),繪制出該渠道中心軸線。
圖4 渠道三維總體設(shè)計(jì)模塊
表2 渠道中心線坐標(biāo)表
(3) 執(zhí)行“確定渠底高程”命令后,程序會根據(jù)《渠道總體布置表.xls》的各分段的樁號、坐標(biāo)、渠道水位、堤頂或一級馬道高程、渠底高程數(shù)據(jù)(如表3所示) 自動繪制出空間渠道線,最后程序運(yùn)行結(jié)果為平面渠道線和空間渠道線兩條。
表3 渠道總體布置表
(4) 點(diǎn)擊“放置渠道截面”命令后,程序會自動識別和篩選《渠道總體布置表.xls》的各分段渠道截面是否發(fā)生變化并記錄,在渠道截面發(fā)生變化的位置處自動放置該渠道截面;再調(diào)用預(yù)先定義好的渠道UDF模型,程序根據(jù)表3中的渠道截面參數(shù)自動將UDF模型中的截面形狀參數(shù)(如圖5所示)進(jìn)行更改生成與其匹配的某一截面形狀。
與渠道三維總體設(shè)計(jì)開發(fā)方法一樣,開發(fā)渠道三維詳細(xì)設(shè)計(jì)時也采用CAA批處理方式二次開發(fā)CATIA,即在CATIA“開始”菜單下的“機(jī)械設(shè)計(jì)”模塊中分別開發(fā)出一個名為“渠道詳細(xì)設(shè)計(jì)”的Workbench工作臺,并在這個環(huán)境下插入能夠完成總體設(shè)計(jì)的各菜單和相應(yīng)的工具條及命令按鈕,如圖6所示。
(1) 進(jìn)入渠道詳細(xì)設(shè)計(jì)模塊后,地質(zhì)數(shù)據(jù)導(dǎo)入命令、渠道面生成命令、渠道體生成命令、渠頂公路設(shè)計(jì)命令才能夠被激活,否則呈暗色,其目的與意義與前面總體設(shè)計(jì)類似。
(2) 點(diǎn)擊“地質(zhì)數(shù)據(jù)導(dǎo)入”命令后,程序會自動將起始樁號到終止樁號所指定的渠道分段區(qū)域內(nèi)的地質(zhì)數(shù)據(jù)導(dǎo)入。其中,導(dǎo)入的地質(zhì)數(shù)據(jù)包括地形網(wǎng)格、地形曲面、地質(zhì)邊界(在xy平面創(chuàng)建,須小于所獲取的地形范圍)。
(3) 為了彌補(bǔ)總體設(shè)計(jì)時放置截面的不足,同時也是為了增加放置截面的靈活性,在此增設(shè)了一個“手動放置截面”命令,以便設(shè)計(jì)人員能夠自由地在工程需要的部位放置一個截面。
(4) 點(diǎn)擊“生成渠道面”命令,程序會自動將截面沿著渠道中心線“掃略”成原始開挖面,然后再進(jìn)行自動修剪、切割等操作,最后將這些渠道面各要素縫合成一個完成的渠道面。
(5) 調(diào)用“生成渠道體”命令,程序會自動調(diào)用CATIA的“加厚”命令將前面生成的渠道面生成三維渠道體。
(6) 單擊“渠頂公路設(shè)計(jì)”命令后,程序會自動讀取《渠道總體布置表.xls》中渠頂公路相關(guān)參數(shù),自動選擇渠頂面、渠道方向,解析相關(guān)參數(shù),并調(diào)用空間曲面相關(guān)命令完成渠頂公路設(shè)計(jì)。
圖5 渠道UDF模型
圖6 渠道三維詳細(xì)設(shè)計(jì)模塊
本文以南水北調(diào)總干渠陶岔至沙河段渠道的設(shè)計(jì)為例,以便驗(yàn)證、測試程序的合理性與實(shí)用性。
(1)將CAA開發(fā)成果解壓放置在磁盤根目錄下,并檢查內(nèi)容和目錄格式是否完整;
(2)新建渠道三維設(shè)計(jì)的運(yùn)行環(huán)境,如圖7所示。
圖7 渠道三維設(shè)計(jì)程序的運(yùn)行環(huán)境
至此程序發(fā)布完成,同時在桌面上會生成一個名為“Channel CAA”的CATIA類型圖標(biāo)。雙擊該圖標(biāo),會啟動CATIA,用戶便可使用CATIA原所有功能和新開發(fā)的功能。
準(zhǔn)備和確定總干渠陶岔至沙河段的《渠道模型分段控制表.xls》《渠道中心線坐標(biāo).xls》《渠道總體布置表.xls》3個表格數(shù)據(jù)資料,注意文件格式的一致性、數(shù)據(jù)的準(zhǔn)確性。根據(jù)南水北調(diào)工程需要,在《渠道模型分段控制表.xls》(如表4)將此渠道分為7段進(jìn)行分別設(shè)計(jì);為了保證此渠道中心線的精度,在《渠道中心線坐標(biāo).xls》(如表5)取了共計(jì)240個坐標(biāo)點(diǎn);此渠道較長,為了考慮在其設(shè)計(jì)與施工中遇到的河渠交叉、公路橋交叉、渠渠交叉、鐵路交叉、分水口、節(jié)制閘、退水閘等情況,在《渠道總體布置表.xls》(如表6)共取了560組渠道數(shù)據(jù)。
表4 總干渠陶岔至沙河段渠道模型分段控制表
(1) 雙擊桌面上名為“Channel CAA”的CATIA類型圖標(biāo),啟動CATIA軟件并將將默認(rèn)創(chuàng)建的Product文件窗口關(guān)閉;
表5 總干渠陶岔至沙河段渠道中心線坐標(biāo)表
表6 總干渠陶岔至沙河南段總體布置表
圖8 總干渠陶岔至沙河段的渠道模型分段
(1) 從“開始”菜單—“機(jī)械設(shè)計(jì)”—“渠道總體設(shè)計(jì)”模塊,將工作臺切換到渠道總體設(shè)計(jì)模塊并激活其下關(guān)聯(lián)的各命令;
圖9 渠道軸線規(guī)劃命令的執(zhí)行結(jié)果
圖10 確定渠底高程命令的執(zhí)行結(jié)果
圖11 放置渠道截面命令的執(zhí)行結(jié)果
選擇CATIA的保存管理器保存此渠道設(shè)計(jì)文件,保存后的文件如圖12所示。至此,渠道規(guī)劃與設(shè)計(jì)完成,關(guān)閉渠道規(guī)劃模型視圖窗口。
圖12 保存的渠道規(guī)劃與設(shè)計(jì)文件
使用“打開”文件命令將需設(shè)計(jì)渠道段讀入,在此以樁號“4+992m”至“17+335m”渠道段為例,模型中包含本段渠道軸線、渠底中心線,起始樁號面、終止樁號面以及相關(guān)渠道截面。通過“開始”菜單—“機(jī)械設(shè)計(jì)”—“渠道詳細(xì)設(shè)計(jì)”模塊,將工作臺切換到渠道詳細(xì)設(shè)計(jì)模塊。
打開包含地質(zhì)信息的文件包,該文件包含樁號“4+992m”至“17+335m”渠道段的地形網(wǎng)格、地形曲面、地質(zhì)邊界等。復(fù)制Geo幾何圖形集,將其粘貼到“4+992m”至“17+335m”渠道段的模型中,注意渠道段起始樁號和終止樁號必須在該地形之內(nèi),如圖13所示。
在需要補(bǔ)充渠道截面的位置放置渠道截面,可直接調(diào)用模板進(jìn)行放置,并單擊“生成渠道面”命令,其運(yùn)行結(jié)果如圖14所示。
圖13 導(dǎo)入準(zhǔn)備好的地質(zhì)數(shù)據(jù)
圖14 生成的渠道面
圖15 生成的渠道體
圖16 設(shè)計(jì)的渠頂公路
(1)本文將CAA開發(fā)技術(shù)與CATIA軟件相結(jié)合所開發(fā)的渠道三維設(shè)計(jì)程序自動化程度較高、實(shí)用性較好,能解決水利水電行業(yè)渠道設(shè)計(jì)難題;
(2)通過南水北調(diào)的渠道設(shè)計(jì)實(shí)際運(yùn)用情況來看,本文的渠道三維設(shè)計(jì)方法能簡化水利水電行業(yè)的渠道設(shè)計(jì);
(3)通過與傳統(tǒng)三維設(shè)計(jì)渠道方法相比,本文的渠道設(shè)計(jì)方法能夠?qū)⑶涝O(shè)計(jì)效率提高20%左右,明顯縮短了設(shè)計(jì)周期,同時也保證了設(shè)計(jì)質(zhì)量;
(4)因本程序的開發(fā)比較系統(tǒng)與復(fù)雜,所以排水溝、墊板的設(shè)計(jì)以及工程量統(tǒng)計(jì)與報(bào)表等功能還正在開發(fā)中。