朱曉軍,王 鵬,彭 飛
(海軍工程大學(xué) 艦船工程系,武漢430033)
船體三維外形設(shè)計(jì)是船舶總體設(shè)計(jì)中的一個(gè)重要組成部分?,F(xiàn)有的船體形狀的基本圖形表示方法是型線圖,該方法可以在二維圖紙上直觀地展現(xiàn)船體的幾何尺度和形狀,是船舶靜力學(xué)中計(jì)算船體形狀各項(xiàng)參數(shù)和靜水力性能的重要依據(jù)[1-3]。但是在總體設(shè)計(jì)階段船體外形需要經(jīng)常修改,在設(shè)計(jì)階段結(jié)束時(shí)必須為船廠提供用于指導(dǎo)建造船體外殼的船體型線圖,因此如何快速準(zhǔn)確地確定船體三維外形同時(shí)獲得更加準(zhǔn)確的船體型線圖以及型值表是一個(gè)必須解決的問題。
CATIA軟件最早應(yīng)用于飛機(jī)制造領(lǐng)域[4],其功能覆蓋了曲面、線框、實(shí)體、加工、機(jī)構(gòu)分析和機(jī)器人操作規(guī)劃等方面,目前船舶制造領(lǐng)域已經(jīng)開始使用該軟件[5-6]。該軟件強(qiáng)大的曲面生成的功能,及具有多種二次開發(fā)的接口[7],使得其具有良好的人機(jī)交互界面,可以提高船舶設(shè)計(jì)過程的效率和質(zhì)量。本文研究利用CATIA軟件及其基于自動(dòng)化應(yīng)用接口宏命令的二次開發(fā)技術(shù)實(shí)現(xiàn)船體外形的建模方法,同時(shí)提出經(jīng)過改進(jìn)的船體外形型線圖方案,對(duì)于船舶設(shè)計(jì)以及建造過程具有一定的借鑒作用。
在CATIA建模方法中利用型值表得到各個(gè)剖面上各點(diǎn)的三維坐標(biāo)的基本原則如下:站號(hào)代表各點(diǎn)的x坐標(biāo),水線、甲板邊線、外板頂線、舷墻頂線代表各點(diǎn)的z坐標(biāo),其與橫剖線交點(diǎn)的半寬值代表各點(diǎn)的y坐標(biāo)。根據(jù)型值表得到控制點(diǎn)的坐標(biāo)之后,需要通過利用CATIA宏命令將其導(dǎo)入到建??臻g中并對(duì)異常點(diǎn)進(jìn)行處理。
利用編寫的CATIA宏命令調(diào)用以EXCEL文件形式存儲(chǔ)的型值表主要通過以下步驟完成。
1.1.1 創(chuàng)建CATIA建模空間
創(chuàng)建宏腳本文件,并加入宏腳本的入口點(diǎn)“CATMain”:
Language=“VBSCRIPT”
Sub CATMain
創(chuàng)建新零件,命名為“chuanti”:
Set documents1=CATIA.Documents
Set partDocument1=documents1.Add("Part")
Set partDocument1=documents1.Item("chuanti.CATPart")
這段腳本通過向“Documents”集合添加“Part”類型的文檔對(duì)象新建了一個(gè)零件文件"chuanti.CATPart"
1.1.2 CATIA與EXCEL的連接
Set chuanti=partDocument1.Part
set excel=getobject("E:〔**wigley.xls")
其中“E:〔**wigley.xls”代表EXCEL文件存儲(chǔ)的路徑。
1.1.3 EXCEL型值轉(zhuǎn)換為控制點(diǎn)三維坐標(biāo)
for j=p to m
for i=1 to n
t=chr(j)
x=△L*(i-1)
y=△H*(j-p)
z=excel.worksheets(1).cells.range(t&trim(cstr(i))).value
其中變量的取值范圍是根據(jù)型值表存儲(chǔ)在EXCEL文件worksheet中的位置確定的,需導(dǎo)入點(diǎn)型值所在列字母對(duì)應(yīng)的ASCⅡ碼值來確定的。如上述宏命令中,j為worksheet中型值所在列字母對(duì)應(yīng)的ASCⅡ碼值;i為型值表的行數(shù),一般等于站數(shù);△L為站距;△H為水線間距。對(duì)于型值表中的甲板邊線、龍骨線、縱剖線等,由于型值表記錄數(shù)據(jù)的特點(diǎn)需要單獨(dú)導(dǎo)入,以縱剖舷為例,需要通過以下宏命令進(jìn)行導(dǎo)入操作。
for i=1 to n
x=△L*(i-1)
y=excel.worksheets(1).cells.range("D"&trim(cstr(i))).value
z=excel.worksheets(1).cells.range("D"&trim(cstr(i))).value
在通過使用以上語句調(diào)入與船體型值表對(duì)應(yīng)的外形控制點(diǎn)的過程中,根據(jù)CATIA特點(diǎn),對(duì)于無具體型值的點(diǎn),初始化為0,這就使得導(dǎo)入到建??臻g中的點(diǎn)存在異常點(diǎn),可以手動(dòng)將這些點(diǎn)刪除,以便于船體外形樣條曲線的生成,以某2 200 t貨船為例,最終得到的空間點(diǎn)云見圖1。
圖1 船體外形空間點(diǎn)云圖
船體型線圖主要由船體的縱剖線圖、橫剖線圖以及半寬水線圖組成,對(duì)應(yīng)的型值表中提供了橫剖線與水線、甲板邊線、外板頂線、舷墻頂線交點(diǎn)的半寬值及橫剖線與縱剖線、甲板邊線、外板頂線、舷墻頂線交點(diǎn)的高度值,這些信息通過以上的處理已經(jīng)獲得了船體外形的基本的三維控制點(diǎn),下面主要介紹如何用這些基本點(diǎn)獲得控制船體外形的樣條曲線。
控制船體外形的基本的樣條曲線主要包括橫剖線、縱剖線、水線、站線、甲板邊線等,利用CATIA宏命令進(jìn)行繪制時(shí)的基本語句是相同的。以站線的獲取為例,介紹樣條曲線的自動(dòng)生成功能。
2.1.1 宏命令循環(huán)生成一條樣條曲線
1)選定樣條曲線生成后的存儲(chǔ)空間。
Set bodies1=part1.Bodies
Set body1=bodies1.Item("零部件幾何體")
Set hybridShapes1=body1.HybridShapes
讀取樣條曲線的各個(gè)控制點(diǎn)的位置信息:
Set hybridShapePointCoord1=hybridShapes1.Item(i)
2)設(shè)定生成的樣條曲線的參考平面以及參考點(diǎn)(A,B,C)。
Set reference1=part1.CreateReferenceFromObject
(hybridShapePointCoord1)
hybridShapeSpline1.AddPointWithConstraintExplicit reference1,Nothing,A,B,Nothing,C
2.1.2 創(chuàng)建所有站線的樣條曲線
在得到一條站線樣條曲線的基礎(chǔ)上,利用宏命令中的for-next循環(huán)完成多條樣條曲線的生成,添加新的油條曲線的命令語句如下。
Set hybridShapeFactory1=part1.HybridShapeFactory
Set hybridShapeSpline1=
hybridShapeFactory1.AddNewSpline()
hybridShapeSpline1.SetSplineType hybridShapeSpline1.SetClosing
每循環(huán)一次刷新得到新的樣條曲線:
body1.InsertHybridShape hybridShapeSpline1
part1.InWorkObject=hybridShapeSpline1
part1.Update
通過以上程序獲得最初的船體外形控制曲線,生成的曲線難免會(huì)出現(xiàn)一些不合理的地方,例如曲線端點(diǎn)處的切線方向不對(duì)、兩曲線結(jié)合處的光順問題等,這些不能通過調(diào)用宏命令對(duì)其進(jìn)行修飾,需要通過手動(dòng)操作對(duì)其進(jìn)行調(diào)整,主要使用的操作是定義樣條曲線端點(diǎn)處的切線方向或者在曲線結(jié)合處使用“圓-圓錐”等命令進(jìn)行修飾,最終得到的船體外形樣條曲線見圖2。
圖2 船體外形樣條曲線
由于型值表提供的數(shù)據(jù)比較少,得到的船體外形控制曲線不多,再加上船體某些部位主要是艏部和艉部的外形比較復(fù)雜,存在雙向曲度板,為了獲得較為光順的船體外形,根據(jù)現(xiàn)有的樣條曲線,在艏部和艉部添加必要的樣條曲線?;痉椒樵谛枰砑訕訔l曲線的部位設(shè)定參考平面(站線或者水線方向),利用該平面與水線或者站線的交點(diǎn)為控制點(diǎn)連接成樣條曲線。
船體外表面大部分是通過使用“網(wǎng)狀曲面”命令進(jìn)行繪制,該命令需要選擇的輪廓線與輪廓線、引導(dǎo)線與引導(dǎo)線不能相交。為滿足該命令的要求,需要對(duì)某些樣條曲線進(jìn)行“分割”或者“拼接”,無論是使用“分割”還是“拼接”命令,都不會(huì)改變?cè)袠訔l曲線的曲率,不會(huì)影響其光順性。
通過使用“網(wǎng)狀曲面”或者“填充曲面”等命令,初步得到船體外形,但為了保證船體外形的光順性,避免船體外形上存在“凹凸點(diǎn)”,需要利用圓角工具欄中的相關(guān)命令例如“可變圓角”、“三線內(nèi)切圓角”等對(duì)面與面的交接處進(jìn)行修飾,得到最終的船體外形見圖3。
圖3 船體外形
通過以上步驟得到船體的三維外形,在整個(gè)過程中為了保證樣條曲線以及船體外表面的光順性,對(duì)三維控制點(diǎn)、樣條曲線以及生成的外形曲面都進(jìn)行了修飾,從而使得原有的船體外形型值發(fā)生了變化,改變CATIA建??臻g的視角,可以顯示更新過的船體型線圖,見圖4。同時(shí)也可以利用該軟件的“測(cè)量”功能得到各個(gè)控制點(diǎn)的坐標(biāo),從而得到更新過的船體型值表。
圖4 船體外形更新過的型線圖
經(jīng)過上述步驟的處理,最終得到了該貨船光順的船體外形,并且得到了修改的船體型線圖。今后的工作還要完善以下方面的工作。
1)將修改的船體型線圖轉(zhuǎn)換為可供靜水力計(jì)算使用的型值表;
2)在利用CATIA軟件得到船體三維模型的過程中,盡可能少地減少人為的操作因素,提高其自動(dòng)化程度。
[1]盛振邦,劉應(yīng)中.船舶原理[M].上海:上海交通大學(xué)出版社,2003.
[2]朱 軍,王曉俠,查友其.樣條函數(shù)在船舶靜力計(jì)算中的應(yīng)用[J].船舶工程,2000(3):16-18.
[3]趙成璧,鄒早建.基于NURBS的船舶型線設(shè)計(jì)程序EHULL[J].武漢造船,2001(1):28-31.
[4]謝岳峰,余雄慶.基于CATIA二次開發(fā)的飛機(jī)外形參數(shù)化設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(17):3792-3794.
[5]徐俊路,陳順懷.基于CATIA二次開發(fā)的球首參數(shù)化設(shè)計(jì)[J].船海工程,2010,39(1):45-47.
[6]彭 輝.船體三維建模應(yīng)用技術(shù)研究[D].哈爾濱:哈爾濱工程大學(xué),2008.
[7]胡 挺,吳立軍.CATIA二次開發(fā)技術(shù)基礎(chǔ)[M].北京:電子工業(yè)出版社,2006.