基于A(yíng)utoCAD ARX的船閘閘首三維設計
針對國內船閘三維設計可視化效果不足的問(wèn)題,嘗試對船閘閘首三維設計技術(shù)進(jìn)行可視化結構設計的研究。采用C++的面向對象特性與AutoCAD提供的ObjectARX開(kāi)發(fā)工具相結合,研究閘首三維模型算法、閘首穩定性驗算程序算法,實(shí)現結構穩定性計算結果輸出,開(kāi)發(fā)閘首三維模型設計系統。通過(guò)工程實(shí)例進(jìn)行驗證分析,成果直觀(guān),能夠很好地輔助閘首結構設計,是對水工建筑物三維可視化設計技術(shù)的一種有益探討。
當前我國水運經(jīng)濟快速發(fā)展,但是內河航道開(kāi)發(fā)里程偏少,而且等級偏低,這與經(jīng)濟的發(fā)展趨勢極不相稱(chēng),嚴重制約內河運輸的發(fā)展。為解決內河水運的發(fā)展瓶頸,國家將大力發(fā)展內河航道建設,勢必要改擴建一批舊船閘和興建一批新船閘。
已有的船閘設計系統的結構模型較多采用二維幾何模型,模型表達信息詳細,但是設計過(guò)程抽象不直觀(guān),給閘首這種帶有復雜廊道的結構設計表達、修改和后續計算帶來(lái)許多困難,系統的通用性和普遍性較差。而三維CAD技術(shù)的發(fā)展和應用為設計結構的表達、修改和后續計算提供了很多方便,但是現有的船閘設計三維模型多是出自商用有限元軟件,只考慮與力學(xué)相關(guān)的結構,為簡(jiǎn)化模型,對細部結構的表達能力不足,同時(shí)因模型信息不全,造成模型數據可被其他軟件重復利用性差,常常導致相同數據的多次重建。
本文探討在船閘閘首設計中使用三維技術(shù)。由于閘首的類(lèi)型多,以人字門(mén)船閘閘首研究為例,介紹通過(guò)AutoCAD 二次開(kāi)發(fā)程序建立閘首三維模型的方法,程序建立的模型形象、修改容易、可表達的細節程度高、模型數據易于被用作其它用途。本文的算例利用模型數據進(jìn)行閘首穩定計算,以提高閘首設計的形象性和效率。
1、AutoCAD二次開(kāi)發(fā)技術(shù)應用
1.1、AutoCAD二次開(kāi)發(fā)工具選擇
AutoCAD 提供了4種常用的API開(kāi)發(fā)工具,Visual Lisp、VBA(VB)、ObjectARX和.NET,開(kāi)發(fā)工具的特點(diǎn)如下:LISP技術(shù)產(chǎn)生較早,但是其語(yǔ)法不常見(jiàn)不直觀(guān),特別是對于復雜對象,其開(kāi)發(fā)功能不強;VB(A)采用ActiveX接口,具有開(kāi)發(fā)簡(jiǎn)單直觀(guān)的特點(diǎn),但是開(kāi)發(fā)功能很有限,數據圖形創(chuàng )建速度慢;ObjectARX采用面向對象方法開(kāi)發(fā),直接調用AutoCAD底層函數,其開(kāi)發(fā)靈活,程序運行速度快;.NET通過(guò)封裝ObjectARX函數實(shí)現,開(kāi)發(fā)方式使用較晚,未完全封裝ObjectARX函數,開(kāi)發(fā)能力具有不確定性。
由于閘首三維結構復雜,結構對象的關(guān)聯(lián)因素較多,再加上三維模型數據量大,對程序運行速度要求高,因此采用ObjectARX作為閘首三維設計程序的開(kāi)發(fā)工具。
1.2、ObjectARX程序三維模型創(chuàng )建
通過(guò)使用AcDb3dSolid類(lèi),創(chuàng )建三維模型主要有3種方法:
1)直接通過(guò)提供三維實(shí)體所需的參數創(chuàng )建,主要是生成基本的三維實(shí)體。此類(lèi)函數創(chuàng )建的實(shí)體的形心為坐標原點(diǎn),這類(lèi)實(shí)體是指長(cháng)方體、平截頭體、球體和楔形體等。
2)通過(guò)基本的二維對象生成三維實(shí)體。主要的方法是對二維對象的拉伸、掃掠、旋轉和通過(guò)一系列二維對象放樣。二維對象在此主要指面域。
3)通過(guò)對已有實(shí)體的變換、剖切和布爾運算等操作實(shí)現新實(shí)體的創(chuàng )建。
1.3、三維模型數據共享與模型信息提取
模型創(chuàng )建的參數保存于文件數據庫中,可被除建模之外的用途共享,建立的模型的信息可通過(guò)程序提取,也保存于數據庫可供多用途共享。利用模型數據進(jìn)行閘首穩定計算時(shí),程序中提取可供共享的三維模型信息主要有實(shí)體的質(zhì)量、質(zhì)心、斷面的慣性距等。實(shí)體的質(zhì)量、質(zhì)心等參數通過(guò)使用實(shí)體對象的特性查詢(xún)函數getMassProp( )實(shí)現。
實(shí)體的斷面慣性距信息,通過(guò)剖切體實(shí)體獲得剖切斷面,通過(guò)使用剖切斷面特性信息查詢(xún)函數getMassProp()實(shí)現。斷面的創(chuàng )建與獲取主要用到以下3個(gè)函數:
1)實(shí)體切割函數:輸入參數為切割平面,輸出參數為切割獲得的兩個(gè)新實(shí)體。getSlice(const AcGePlane& plane, boolAdesk::Boolean getNegHalfToo, AcDb3dSolid*&negHalfSolid);
2)獲取實(shí)體斷面函數:輸入參數為切割平面,輸出平面切割實(shí)體形成的斷面。getSection(const AcGePlane& plane,AcDbRegion*& sectionRegion);
3)平面創(chuàng )建函數:在實(shí)體切割和取實(shí)體斷面時(shí)常用,此函數提供參數為面上點(diǎn)、X和Y向量。AcGePlane(const AcGePoint3d& or, constAcGeVector3d& uAxis, const AcGeVector3d& vAxis);
4、結語(yǔ)
本文使用AutoCAD軟件的ObjectARX開(kāi)發(fā)工具,采用面向對象方法開(kāi)發(fā)了相應的閘首三維可視化結構設計程序。本系統使用簡(jiǎn)單,可進(jìn)行批量?jì)?yōu)化設計,可使用同一個(gè)數據模型自動(dòng)完成多種設計任務(wù),設計過(guò)程及其成果直觀(guān)形象,設計修改容易,可大大降低設計工作量,提高設計效率,有較高的實(shí)用價(jià)值。
本文開(kāi)發(fā)的閘首三維設計程序的后續工作將進(jìn)一步完善和細化閘首三維模型的構建,并把三維模型信息共享用于閘首結構二維施工圖出圖、閘首四維施工模擬和閘首結構有限元分析等功能。