劉勇杰,胡勇,鄭紹春
(武漢理工大學(xué) a.高性能船舶技術(shù)教育部重點實驗室;b.交通學(xué)院,武漢 430063)
?
一種基于CATIA二次開發(fā)的船體外形建模方法
劉勇杰,胡勇,鄭紹春
(武漢理工大學(xué) a.高性能船舶技術(shù)教育部重點實驗室;b.交通學(xué)院,武漢 430063)
為了快速得到船體三維外形,以某11 000 DWT散貨船為例,運用CATIA二次開發(fā)技術(shù),簡化重復(fù)性建模工作,精簡建模操作流程,較快得到比較理想的船體三維外形。詳細(xì)介紹船體外形型值點、外形樣條曲線和外表面的創(chuàng)建方法。
船體外形;CATIA;二次開發(fā);VBA;Excel
在實際建模過程中,往往要進(jìn)行許多重復(fù)性的操作,這在船體三維外形設(shè)計中也不例外。而且,船體外形在總體設(shè)計階段需要經(jīng)常修改[1],這為傳統(tǒng)建模方法增加了很大工作量和難度。因此,如何快速有效的建立船體三維外形是一個亟待解決的問題。
CATIA廣泛應(yīng)用于航空[2-3]、造船[4-5]、汽車[6-7]等眾多行業(yè),是世界上領(lǐng)先的產(chǎn)品設(shè)計與創(chuàng)新方案解決平臺[8]。其中,CATIA V5開放了很多接口,提供了很好的二次開發(fā)平臺,在船體外形設(shè)計方面也有一定的的研究應(yīng)用,如采用進(jìn)程內(nèi)VBScript腳本編程方式完成了船體的建模工作[9];采用進(jìn)程外VB編程方式完成了球首的參數(shù)化建模設(shè)計[10]。但是,這部分工作所述方法程序開發(fā)環(huán)境智能化程度低,使用不方便,如沒有代碼提示、語法高亮顯示等功能;或者由于軟件版本參差不齊,影響接口之間的通信,增加了開發(fā)的難度。因此,提出采用進(jìn)程內(nèi)VBA腳本編程方法來完成船體三維外形建模工作。
通過編程來訪問CATIA的對象有很多種不同的方法[11],見表1。對于其他的程序或腳本而言,CATIA只是一個對象連接與嵌入(object linking and embedding,OLE)自動化對象服務(wù)器,任何能訪問COM(component object model,部件對象模型)對象的程序或腳本都能訪問CATIA的對象并對其進(jìn)行操作。
表1 編程訪問CATIA對象的方法
在CATIA Automation中所有的數(shù)據(jù)都被封裝成對象的形式,并形成樹形結(jié)構(gòu),如圖1所示。主根位于Application中,并逐層分解為Document,Cameras和Windows 3種形式的對象。每個對象都有其自己操縱集合的方法和屬性,如添加(Add)、刪除(Remove)、獲取子項(Item)方法和數(shù)量(Count)屬性等,這樣就可以通過根對象逐層對所有其他對象進(jìn)行訪問。
VBA對象是指Excel中的各種元素,即Excel對象[12](見圖2)。VBA程序要自動化操作和控制Excel應(yīng)用程序,則必須要與Excel所提供的對象進(jìn)行通信,比如訪問某工作表、修改某批單元格的數(shù)據(jù)等。所有的Excel對象構(gòu)成了Excel的對象模型。其中比較常用的對象為Application、Workbook、Worksheet、Range和Cells等。
圖1 CATIA對象結(jié)構(gòu)
圖2 Excel對象結(jié)構(gòu)
以某11 000 DWT散貨船的電子版型線圖作為原材料,使用CATIA(P3 V5 R20版本號)軟件進(jìn)行船體外形三維建模等相關(guān)工作研究。該型線圖主要包括橫剖線圖、縱剖線圖、半寬水線圖、型值表、主尺度欄等,另附肋骨型線圖。船舶三維坐標(biāo)系是以中線面、中站面和基平面3個互相垂直的平面的交線為x,y,z坐標(biāo)軸,以船艏、船舶右舷和上方分別為x,y,z軸的正方向。而CATIA環(huán)境的坐標(biāo)系y軸正方向的定義與船舶坐標(biāo)系相反。因此,將型值點都取正值在CATIA中得到的是船舶的左舷。
2.1 進(jìn)程內(nèi)以VBA腳本編程方式創(chuàng)建型值點
錄制生成點的宏腳本,在CATIA自帶的VBA開發(fā)環(huán)境下進(jìn)行編輯調(diào)試。調(diào)試運行成功后的生成型值點的代碼如下。
Sub CATMain() ‘入口函數(shù)
Set documents1 = CATIA.Documents ‘獲取文檔集合
Set partDocument1 = documents1.Add("Part") ‘添加新的零件文檔
Set part1 = partDocument1.Part ‘獲取part對象
Set hybridBodies1 = part1.HybridBodies ‘獲取幾何圖形集對象
Set hybridBody1 = hybridBodies1.Add() ‘添加一個幾何圖形集對象
Set hybridShapeFactory1 = part1.HybridShapeFactory ‘獲得HybridShapeFactory對象
Set part1 = partDocument1.Part
Set Excel = GetObject(******) ‘訪問Excel文件
For i = 2 To 645
X = Excel.worksheets(1).cells(i, 2).Value ‘給X賦值
Y = Excel.worksheets(1).cells(i, 3).Value ‘給Y賦值
Z = Excel.worksheets(1).cells(i, 4).Value ‘給Z賦值
Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(X, Y, Z) ‘建立點
hybridBody1.AppendHybridShape hybridShapePointCoord1
part1.InWorkObject = hybridShapePointCoord1
Next
part1.Update
End Sub
以上代碼中,******代表.xls(x)文件在計算機上存儲的完整路徑(可以通過選中該文件,然后按住Shift同時點擊鼠標(biāo)右鍵“復(fù)制為路徑”,最后粘貼獲得)。每行代碼單引號后面的文字是說明性的注釋語言,且錄制產(chǎn)生的宏腳本中把Dim語句給注釋或刪掉(不影響程序的正常運行),以上是修改后的最終代碼。For循環(huán)表達(dá)式的書寫格式與型值在Excel文檔中的格式密切相關(guān),合理的數(shù)據(jù)保存格式可以簡化程序結(jié)構(gòu)。以上代碼對應(yīng)的數(shù)據(jù)格式如圖3,型值點每一站從上到下依次排列,最終得到的型值點云圖見圖4。
圖3 型值點保存格式
圖4 運行腳本程序后在CATIA中生成的點云圖
2.2 使用CATIA示例宏文件獲取點(線、面)
在CATIA的創(chuàng)成式曲面設(shè)計(general shape design,GSD)模塊中,包含一個錄有宏腳本的.xls文件,保存在CATIA安裝目錄下,一般路徑為…intel_acodecommandGSDPointSplineLoftFromExcel.xls。該文件初始格式如圖5,其中每一個StartCurve和EndCurve之間的橫向的3個數(shù)值分別代表x,y,z坐標(biāo),即每一行代表一個點,每一對StartCurve和EndCurve代表一根樣條線。運行此文件中名稱為Feuil1.Main的宏輸入1、2、3可以分別對應(yīng)生成點、線、面。這里,將每一站上的型值點分別復(fù)制到相應(yīng)的StartCurve和EndCurve之間(見圖6),在CATIA的GSD模塊環(huán)境下,成功得到型值點云圖,見圖7。(執(zhí)行宏輸入2得到的線框圖見圖8,輸入3執(zhí)行后系統(tǒng)提示錯誤)這種方法其實是CATIA進(jìn)程內(nèi)VBA腳本編程方法的另一種表現(xiàn)形式。
圖5 初始格式
圖6 修改后的格式
圖7 輸入“1”得到的點云圖
圖8 輸入”2”得到的初始線框圖
3.1 樣條曲線的自動生成
由于已經(jīng)獲得了型值點,希望進(jìn)一步獲得相應(yīng)的樣條線。所以,錄制宏腳本的環(huán)境也在存在已知點的基礎(chǔ)上進(jìn)行,如此能夠更加準(zhǔn)確的獲得腳本代碼,這大大有利于宏腳本調(diào)試工作的進(jìn)行。調(diào)試運行成功后的部分代碼如下。
For i = 18 To 35
Dim hybridShapePointCoord1 As HybridShapePointCoord
Set hybridShapePointCoord1 = hybridShapes1.Item(i)
Dim reference1 As Reference
Set reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1)
hybridShapeSpline1.AddPointWithConstraintExplicit reference1, Nothing, -1#, 1, Nothing, 0#
Next
以上代碼是通過錄制存在已知點的情況下建立樣條線的宏腳本,然后單純的進(jìn)行部分重復(fù)代碼的刪減和適當(dāng)位置添加For-Next循環(huán)調(diào)試完成的,操作簡單方便。通過修改變量i的取值范圍,使對應(yīng)一組控制點生成樣條線。圖9a)是i取值1~17和18~35范圍時生成的2根橫剖線。
3.2 船體外形樣條曲線的最終生成
通過多次重復(fù)執(zhí)行或嵌套多重循環(huán)語句,可以達(dá)到自動化生成整個船體樣條曲線的目的,采用上述示例文件宏命令中的2選項也可以完成樣條曲線的一鍵生成。然而,不難發(fā)現(xiàn),該船體曲線在艏部和艉部比較復(fù)雜,在一鍵生成樣條線時出現(xiàn)了錯誤,見圖8。其主要原因是準(zhǔn)備階段型值點數(shù)據(jù)錄入處理不恰當(dāng),在Excel中進(jìn)行排序的簡單操作后即可達(dá)到預(yù)想的結(jié)果。采用這種方法,在某種程度上,把自動化建模工作轉(zhuǎn)化為了數(shù)據(jù)的編輯整理工作。分步生成橫剖線、縱剖線、水線的結(jié)果分別如圖9b)、9c)和9d)所示,通過對稱操作后最終得到的船體外形線框圖見圖10。
圖9 船體外形線框建模流程圖
圖10 船體外形線框三視圖
在得到船體外形線框圖之后,需要選擇特定的樣條線利用相關(guān)命令創(chuàng)建曲面。船的艏艉部外形比較復(fù)雜,而型值表所提供的型值有限,往往需要局部添加樣條線或控制點?;痉椒ㄊ抢脜⒖计矫媾c站線或者水線相交獲得控制點,進(jìn)而得到樣條線,也可以利用肋骨型線圖。
創(chuàng)建曲面的命令主要是采用“多截面曲面”“網(wǎng)狀曲面”和“填充曲面”,需要利用CATIA的自由曲面和創(chuàng)成式曲面設(shè)計多工作臺協(xié)同完成,這也是CATIA功能的強大之處之一。其中,在船體平行舯體部分采用“多截面曲面”命令,在船艏艉通過“網(wǎng)狀曲面”和“填充曲面”相結(jié)合的方式完成。在此過程中,還要用到“切割”和“接合”命令對樣條線進(jìn)行適當(dāng)編輯以滿足曲面命令的使用需要。最終得到的比較光順的船體外形見圖11。
圖11 船體外形三視圖
得到較光順的船體外形之后,通過參考面與船體外形相交,可以分別得到橫剖線、水線、縱剖線等,經(jīng)過“投影”等命令編輯處理后可在CATIA工程圖模塊中形成相應(yīng)的型線圖(樣式參考圖10);然后參考面再與線相交就能得到新的型值點。運用“測量”命令依次測量所得型值點,再利用“設(shè)計表”命令把型值點導(dǎo)出到Excel表格中,進(jìn)行適當(dāng)?shù)木庉嫕M足型線圖里型值表的格式要求后,保存為.csv格式,在CATIA工程圖模塊中利用“從CSV創(chuàng)建表”命令可直接導(dǎo)入該型值表,以形成最終完整的型線圖。
采用進(jìn)程內(nèi)VBA編程方法對CATIA進(jìn)行二次開發(fā),提高了建模效率,較快的完成了對船體三維外形的建模工作,結(jié)果表明該方法是可行有效的。且該二次開發(fā)方法較前述其他方法具有開發(fā)環(huán)境友好、代碼簡潔、接口通信方便、應(yīng)用門檻低等優(yōu)勢。使用者只需要具備基本的編程知識就能完成相關(guān)功能的二次開發(fā)工作,省時省力,可操性強,容易上手,適合廣大相關(guān)從業(yè)人員以及初學(xué)者借鑒使用,具有一定的實用價值。
[1] 顧敏童.船舶設(shè)計原理[M].2版.上海:上海交通大學(xué)出版社,2001.
[2] 謝岳峰,余雄慶.基于CATIA二次開發(fā)的飛機外形參數(shù)化設(shè)計[J].計算機工程與設(shè)計,2008,29(14): 3792-3794.
[3] 李惠宇,黃俊.基于CATIA VB二次開發(fā)的機翼幾何外形參數(shù)化建模研究[J].飛機設(shè)計,2015,35(2):1-4.
[4] 廖顯庭,劉家新.基于CATIA二次開發(fā)的散貨船艙段參數(shù)化設(shè)計[J].船海工程,2011,40(2):58-60.
[5] 鄧小龍,柳存根.船舶三維數(shù)字化設(shè)計研究[J].船舶工程,2010,32(5):40-43.
[6] 董廷.基于CATIA二次開發(fā)的車身骨架建模[J].客車技術(shù)與研究,2010,32(6): 18-20.
[7] 吳文龍,金新燦.基于CATIA二次開發(fā)的轉(zhuǎn)向架構(gòu)架參數(shù)化建模[J].鐵道機車車輛,2015,35(1):47-50.
[8] 羅朝陽.基于CATIA游艇機艙可視化設(shè)計[D].武漢:武漢理工大學(xué),2013.
[9] 朱曉軍,王鵬,彭飛.船體外形的CATIA建模方法[J].船海工程,2013,42(2):13-15.
[10] 徐俊路,陳順懷.基于CATIA二次開發(fā)的球首參數(shù)化設(shè)計[J].船海工程,2010,39(1): 45-47.
[11] 胡挺,吳立軍.CATIA二次開發(fā)技術(shù)基礎(chǔ)[M].北京:電子工業(yè)出版社,2006.
[12] 孟學(xué)多,鐘晴江.VB程序設(shè)計基礎(chǔ)與VBA應(yīng)用[M].杭州:浙江科學(xué)技術(shù)出版社,2011.
A Modeling Method of Hull Form Based on CATIA Secondary Development
LIU Yong-jie, HU Yong, ZHENG Shao-chun
(a.Key Laboratory of High Performance Ship Technology (Ministry of Education) b.School of Transportation,Wuhan University of Technology, Wuhan 430063, China)
In order to get the hull form rapidly, the secondary development technology based on CATIA was used to avoid a large quantity of repetitive modeling work and simplify modeling steps. Taking a 11 000 DWT bulk carrier as an example, the methods of creating the offset points, splines and outer surface of the hull form in the proposed method were introduced in detail.
hull form; CATIA; secondary development; VBA; Excel
10.3963/j.issn.1671-7953.2017.04.017
2016-12-27
國家自然科學(xué)基金(51379167)
劉勇杰(1992—),男,碩士生
研究方向:船舶先進(jìn)制造技術(shù)
U662
A
1671-7953(2017)04-0077-05
修回日期:2017-02-27