樓 濤 ,包騰飛 ,
(1. 河海大學 水利水電學院,江蘇 南京 210098;2. 河海大學 水文水資源與水利工程科學國家重點實驗室,江蘇南京 210098;3. 三峽大學 水利與環(huán)境學院,湖北 宜昌 443002)
拱壩是一種高次超靜定空間殼體結構,加之常位處高山峽谷,所以其結構和邊界條件十分復雜。其中的雙曲拱壩在水平和鉛直界面都呈拱形,且雙曲拱壩的每個橫切面都不相同,參數嚴格約束,一般的三維軟件無法如此精細化建模[1-2]。隨著技術的發(fā)展,黃艷芳等[3]將CATIA引入水利工程三維建模中[4-5],但拱壩模型中存在許多異型體,這些異型體的模型參數復雜,且不易更改,如果光靠設計人員去一一構建,需要花費較多的時間,且效率不高。因此,本文基于CATIA進行了二次開發(fā),開發(fā)出了能夠實現拱壩結構快速構建功能的自動化建模程序,提高模型構建效率。CATIA 二次開發(fā)方法[7-8]主要有: 自動化對象編程(Automation API)和基于構件的應用編程(CAA-RADE)。達索公司的3DEXPERIENCE(3DE)平臺作為CATIA V6版本,集成了CATIA所有功能,并提供并行、修改協(xié)同等功能,因此對3DE平臺的CATIA模塊進行二次開發(fā)更具有應用價值。本文基于3DE平臺利用Automation API接口開發(fā)了拱壩三維建模二次開發(fā)程序,以某拱壩模型為例,對其三維模型進行構建,全過程以Python程序驅動CATIA模塊,通過模型特征參數構建拱壩[6,9],實現了拱壩三維模型快速、準確、智能的構建。
與其他主流三維軟件不同,3DE平臺以多階段建模、疊加模型、關聯(lián)模型為技術核心[10-12],為實現三維環(huán)境下的模型并行協(xié)同設計提供了基礎。
以往的工程設計中,常以二維圖紙為主,通過二維圖紙轉化為三維模型的方法,在三維軟件中進行建模。對于實際工程設計而言,以點線面為基礎元素,將一個設計對象劃分為多個基礎結構,分為多個階段進行建模,從低維疊加生成高維,使得整個工程設計也可以劃分為多個階段,提高效率的同時也降低了設計壓力。多階段建模使得三維模型在工序上也能將其分割。
要實現并行設計,最重要的一點就是要實現多人負責不同層級的信息,并能讓這些信息以一定的規(guī)則添加至同一個對象中,3DE平臺引用裝配的概念,使得一個模型能夠被若干子模型疊加組合,不同層級的信息也同時疊加在一起,組合成一個具備完整信息的模型。
在3DE平臺中,通過選擇支撐與約束的方法,可以將各個單獨的子模型關聯(lián)起來。3DE具有協(xié)同功能,就是通過對象的鏈接、引用等方法,將平臺中他人制作的模型作為自己的建?;A,對其進行修改或進一步的建模操作,但任何操作均與原模型獨立開來,不會修改他人模型,也不會占用他人模型使其無法編輯。這一特性實現了多人之間的協(xié)同修改,并統(tǒng)一了數據源。
拱壩的外形和邊界條件都很復雜,其壩體上游面受到的荷載通過拱的作用傳遞到兩岸壩肩,并通過梁的作用傳遞到壩基,承載能力很大,大大減小壩身斷面面積,從而減少混凝土用量,故在水工建筑中得到了廣泛應用。
拱壩的建模難度較高,主要是因為:(1)壩型繁多:按照水平拱圈的拱軸線的幾何性質,可劃分為圓弧型、拋物線型、橢圓型、對數螺旋線型等;對于圓弧雙曲拱壩,又可根據拱弧圓心數量劃分為單心、雙心、三心等。(2)不對稱性:由于拱壩的設計依托于地形,或受地質條件的影響,其左右拱往往不對稱,從而使左右拱弧拱心、兩端拱厚及圓心角都不相同。(3)對于雙曲拱壩,每層拱弧的拱心、拱厚及圓心角都不相同。
拱壩三維建??傮w設計思想是從整體到局部,即先構建拱壩整體,再對其局部結構進行單獨建模,根據約束關系對其進行裝配,形成一個整體,最后根據地形等高線構建壩體周圍的開挖巖體,形成一個完整的拱壩三維模型。具體步驟如下:
(1)構建壩體整體骨架模型。根據給定的模型參數,建立一系列高程參考平面,在參考平面內生成拱圈樣條曲線,連接形成閉合截面,然后根據多個截面,通過多截面實體放樣生成壩體三維實體模型,得到壩體整體模型。
(2)構建局部結構。根據給定的模型參數,構建表孔、深孔、導流底孔和放空底孔等局部結構的三維模型,然后根據約束關系與壩體整體進行布爾運算,達到建孔的目的,裝配成一個整體。
(3)構建開挖巖體。根據給定的地形圖和等高線,構建壩體開挖面,生成開挖巖體模型,與壩體裝配成一個完整的產品。
Python作為一門新興的高級編程語言,它的特點是簡潔明了。它的開源性、可移植性、可擴展性和可嵌入性使其能夠被廣泛應用。本文使用Python語言通過3DEXPERIENCE Automation(自動化)接口進行CATIA模塊的二次開發(fā),在Python3.6.5編譯器中通過仿寫VB代碼,利用CATIA模塊本身帶有的VB接口,通過簡單的代碼即可完成Python與3DE平臺的CATIA模塊的連接,后續(xù)就可以利用Python語言對需要的功能進行代碼編寫,實現模型構建的快捷操作。要對CATIA模塊進行二次開發(fā)首先要添加其編程接口的引用,在Python中操作CATIA COM部件根對象,需要先添加CATIA編程接口的引用。Python是面向對象的編程語言,在3DE的Automation中,每個對象都有相應的接口,要對某個對象進行操作必須先引用相對應的接口。3DE平臺提供了Automation幫助文檔,在幫助文檔中,可以方便快捷地查看某個對象所對應的接口。通過引用接口,可以獲取對象進行操作,構建所需模型。對CATIA進行二次開發(fā)的程序結構如圖1所示。
圖 1 對CATIA進行二次開發(fā)的程序結構Fig. 1 Program structure of CATIA secondary development
骨架模型是從拱壩整體層面以及所處的地理位置考慮的控制性結構,由點、線、面3種要素組成,其中點是最基本的,起控制性作用。拱壩骨架主要由不同高程的拱圈構成,其設計難點主要在于各層拱圈都不相同,模型參數復雜,因此,對CATIA模塊進行了二次開發(fā),針對不同類型的拱圈控制方程開發(fā)出相對應的建模程序,以達到快速構建拱壩模型的目的。本文以拱圈控制方程為拋物線型的某拱壩為例,控制方程分為4個區(qū)域,拱圈上的控制點平面(x,y)坐標根據所在位置滿足以下控制方程,參數根據不同高程而變化:
式中: Ruli為上游左岸拱圈曲率半徑;Ruri為上游右岸拱圈曲率半徑;Rdli為下游左岸拱圈曲率半徑;Rdri為下游右岸拱圈曲率半徑;Ouli為上游左岸拱圈曲率中心y坐標;Ouri為上游右岸拱圈曲率中心y坐標;Odli為下游左岸拱圈曲率中心y坐標;Odri為下游右岸拱圈曲率中心y坐標;αuli為上游左岸端點和拱圈曲率中心的連線與拱壩中心線之間的夾角;αuri為上游右岸端點和拱圈曲率中心的連線與拱壩中心線之間的夾角;αdli為下游左岸端點和拱圈曲率中心的連線與拱壩中心線之間的夾角;αdri為下游右岸端點和拱圈曲率中心的連線與拱壩中心線之間的夾角。
為實現參數化設計,將給定的模型特征參數制成EXCEL表格。在Python編譯器中,導入xlrd模塊,調用EXCEL表格,讀取所需的模型參數。以該方法調用數據,可以方便快捷地批量導入數據,同時也方便尋找和更改某一特定的模型參數,提高設計效率。
對于拋物線型拱圈,可以通過在CATIA草圖中直接生成拋物線的方式來構建,為達到批量生成的目的,通過獲取Factory 2D對象(用于操作二維對象)的方法,來繪制控制斷面。首先調用模型特征參數,通過AddNewPointCoord(添加點坐標)方法生成高程參考點。以高程參考點為基準,通過AddNewPlaneOffsetPt(通過偏移創(chuàng)建平面)方法可以生成一系列不同高程的草圖參考平面,然后在各個草圖中根據頂點坐標、拋物線軸線矢量、焦點距離,通過CreateParabola(創(chuàng)建拋物線)方法就能夠準確生成拋物線,以起始位置和終止位置截取所需要的拋物線段。為提高設計效率,該程序采用了for循環(huán)語句,高效批量生成各高程的拱圈拋物線,通過CreateLine(創(chuàng)建直線)命令連接各個拋物線的端點,以AddNewJoin(接合)命令將各條線拼接在一起(用于閉合線框),就形成了各個拱圈的閉合截面。
給定模型特征參數,以Python程序驅動3DE平臺中的CATIA模塊,可以快速得到拱壩骨架三維模型(圖2),且易于修改,并根據需求更改調用的模型參數即可獲得不同的拱壩骨架模型。在此基礎上,通過CreateSpline(創(chuàng)建樣條曲線)命令繪制邊坡線,通過CreateReferenceFromObject(以目標對象創(chuàng)建參考對象)命令添加接合后的各高程截面為參考截面,再以相同方法添加邊坡線作為參考線,最后通過AddGuide(添加引導)命令添加參考線作為引導線,以AddSectionToLoft(添加截面到體)命令添加參考截面,即多截面實體放樣生成拱壩主體,其中添加多條引導線可以避免壩體曲面的扭曲,使得到的拱壩模型更為精確(圖3)。該部分僅生成拱壩主體,且不包含孔洞和局部結構,故通過多截面實體命令就能生成實體。
圖 2 拱壩骨架模型Fig. 2 Arch dam skeleton model
圖 3 拱壩主體模型Fig. 3 Main model of arch dam
拱壩建模的一個難點在于其曲面的設計和異型體的構建,而拱壩模型除了主體壩體之外,還包括各種類型的局部結構,如表孔、深孔、導流底孔和放空底孔等,都屬于較難構建的異型體。3DE平臺中的CATIA模塊具有強大的3D設計功能,正好可以解決此類問題。依據給定的模型特征參數,在草圖中構建異型體斷面形狀,通過凸臺、凹槽、倒模等操作就可以生成異型體模型。根據約束關系,可以將這些局部結構模型與壩體主體進行布爾運算,裝配成一個整體。以表孔為例,整體可分為3部分,即上游壩面部分、下游壩面部分、中空挖孔部分,全過程也分為3個步驟,即實體構建、定位、裝配。
實體構建:3個部分實體均以Python輸入尺寸參數構建截面草圖,如圖4和5所示。
圖 4 表孔下游壩面截面Fig. 4 Sketch of downstream dam surface section for crest outlet
圖 5 中空挖孔截面Fig. 5 Sketch of hollowed-out section
參考平面通過CreateReferenceFromObject(以目標對象創(chuàng)建參考對象)命令添加AxisYZ(YZ平面),再以AddNewPad(凸臺)命令以指定厚度拉伸成實體,如圖6和7所示。
圖 6 表孔下游壩面實體結構Fig. 6 Solid structure of downstream dam surface for crest outlet
圖 7 中空挖孔實體結構Fig. 7 Hollowed-out solid structure
定位:以指定位置與原點的X,Y,Z坐標向量作為偏移方向和數值,通過AddNewTranslate(位移)命令將原處于原點位置的實體移動至指定位置,再以AddNewRotate(偏轉)命令以Z軸為旋轉軸,添加給定的偏轉角度,使其中截面與壩體正交。
裝配:上下游壩面部分以AddNewAssemble(裝配)命令與壩體裝配成一個整體,其中相交重疊部分會自動融合。中空挖孔部分作為要切除的對象,這里采用AddNewRemove(移除)命令使之前已裝配的整體移除該部分實體(圖8),即生成了表孔溢流面,因不是分別建孔后拼接的情況,所以不會發(fā)生表孔溢流面建模與壩體交叉錯位的情況。
全過程以Python程序驅動,調用模型數據,獲取并添加Body對象,在草圖編輯器中自動生成斷面形狀,在空間中拉伸為三維實體,通過倒模等操作修正其形態(tài),最終得到準確的局部結構模型,達到參數化建模的功能,完成設計參數向模型的傳遞過程,實現了拱壩局部結構三維模型快速、準確、智能的構建。
拱壩除自身結構復雜外,其邊界條件也很復雜,如果要對拱壩進行全面的分析或者結構計算,拱壩周圍的開挖巖體必不可少,因此本文還構建了壩體開挖巖體以作分析。壩體開挖巖體的構建主要通過LSV軟件和global mapper軟件獲取壩體周圍地形等高線圖,在CAD中對地形圖進行處理,提取點云數據,導入3DE中。在3DE的Terrain Preparation(地形)模塊中以點云生成地形網格面,修正之后根據拓撲關系生成質量較好的地形曲面,最后通過凸臺命令將整個曲面拉伸成三維實體結構,達到生成壩體開挖巖體的目的。左岸混凝土墊座作為單獨的部分以相同的方法生成三維實體模型。依據約束關系,將拱壩模型與開挖巖體裝配成一個產品,整體產品模型如圖9所示。該模型還可以輸出為CAE文件以作計算,這也是CATIA模塊的一大優(yōu)勢所在。
圖8 表孔裝配結果Fig.8 Assembly result of crest outlet
圖 9 整體產品模型Fig. 9 Integrated product model
基于3DE平臺的CATIA模塊的二次開發(fā),利用Python語言簡潔、開源、可移植性、可擴展性、可嵌入性和具有豐富的庫的特點,能夠高效、準確、智能地完成拱壩骨架三維模型的構建,后續(xù)再通過多截面實體、凸臺、裝配等命令和布爾運算依次構建生成壩體整體和開挖巖體。3DE平臺的CATIA模塊功能強大,可以進行復雜的曲面設計,應用于多種領域;在水工建筑物方面也有很大的應用空間,3DE平臺更是提供了協(xié)同設計的功能,從設計到施工到管理,包含了多種強大功能,有待利用。針對CATIA模塊,可以通過對其進行二次開發(fā),實現智能、高效、快捷的三維模型構建的功能,發(fā)展?jié)摿薮?。對于開發(fā)語言,如VB,Matlab,Python和C都可以使用,而簡潔的Python語言更是較好的選擇。