龔京風(fēng), 李瑞潔, 陳子昊, 王 晴
(1.武漢科技大學(xué) 汽車與交通工程學(xué)院, 湖北 武漢 430065; 2.中國(guó)艦船研究設(shè)計(jì)中心, 湖北 武漢 430064)
螺旋槳在船舶等領(lǐng)域得到廣泛應(yīng)用。不論是在螺旋槳的設(shè)計(jì)制造階段,還是在研究水動(dòng)力、流噪聲、空泡特性及優(yōu)化設(shè)計(jì)等方面,都需要建立螺旋槳葉片三維模型。然而,傳統(tǒng)三維手工建模方法對(duì)操作人員使用軟件的熟練度有一定要求,且需要投入大量時(shí)間和精力,建立模型的準(zhǔn)確性受人為因素影響。因此,提出螺旋槳自動(dòng)建模方法,可有效克服手動(dòng)建模操作繁瑣、工作量大、容易出錯(cuò)等缺點(diǎn),具有重要的工程實(shí)際意義。為了避免傳統(tǒng)螺旋槳葉片幾何建模方法中手工操作量大的缺點(diǎn),劉勇杰等[1]提出一種基于CATIA平臺(tái)的三維建模方法。該方法利用 Excel 表格完成槳葉型值點(diǎn)的計(jì)算,采用VB.net語(yǔ)言編寫(xiě)坐標(biāo)點(diǎn)批量導(dǎo)入程序,讀取保存在Excel里的型值點(diǎn)坐標(biāo)值數(shù)據(jù),在CATIA中生成描述螺旋槳葉曲面的型值點(diǎn)。該方法需要在Excel表格中手動(dòng)操作,對(duì)用戶操作熟練程度有一定要求,建模工作量仍然較大。吳利紅等[2]采用MATLAB語(yǔ)言編制槳葉型值點(diǎn)計(jì)算程序,將計(jì)算得到的型值點(diǎn)存入標(biāo)準(zhǔn)ProE格式文件,然后在ProE中手動(dòng)依次導(dǎo)入每一層葉切面型值點(diǎn),未完成槳葉輪廓線、曲面的自動(dòng)生成,后續(xù)需手動(dòng)建立槳葉模型且操作步驟繁多。王艷龍等[3]結(jié)合螺旋槳二維圖繪制方法和CATIA曲面逆向設(shè)計(jì)方法,運(yùn)用螺旋槳二維投影輪廓建立螺旋槳三維模型,生成面向CFD的三維模型。該方法需要在AutoCAD根據(jù)圖譜設(shè)計(jì)方法得出的型值表中繪制螺旋槳二維圖形,且在CATIA軟件中的操作較復(fù)雜。謝云平等[4]采用船舶設(shè)計(jì)軟件平臺(tái)NAPA自帶的NAPA Basic語(yǔ)言編制宏程序?qū)崿F(xiàn)槳葉型值點(diǎn)的自動(dòng)計(jì)算。安邦等[5]利用MATLAB軟件將螺旋槳的基本參數(shù)及不同半徑處葉切面二維坐標(biāo)轉(zhuǎn)換為空間笛卡爾坐標(biāo),然后將其導(dǎo)入SolidWorks建立三維幾何模型。
為實(shí)現(xiàn)螺旋槳葉片自動(dòng)化建模,依據(jù)槳葉二維圖制圖原理和幾何特征推導(dǎo)槳葉型值點(diǎn)計(jì)算公式,將計(jì)算得到的型值點(diǎn)存入帶宏命令的Excel表格,在CATIA中讀取該表格,形成槳葉曲面。采用Python語(yǔ)言,將上述流程程序化,形成操作簡(jiǎn)單、界面簡(jiǎn)潔的螺旋槳葉片曲面自動(dòng)建模軟件。軟件內(nèi)置智能化提示,為用戶正確操作提供指導(dǎo)。
基于螺旋槳設(shè)計(jì)參數(shù)可以得出葉切面型值點(diǎn)的二維坐標(biāo)。根據(jù)不同半徑處的弦長(zhǎng)、拱度、厚度等輪廓參數(shù),計(jì)算得到型值點(diǎn)與導(dǎo)邊弦長(zhǎng)方向的距離X、葉背型值點(diǎn)與弦長(zhǎng)的垂直距離Y1、葉面型值點(diǎn)與弦長(zhǎng)的垂直距離Y2。建立坐標(biāo)系(見(jiàn)圖1):以螺旋槳軸線為z軸,指向船尾方向?yàn)檎?;以弦長(zhǎng)為y軸,指向隨邊方向?yàn)檎?;坐?biāo)原點(diǎn)位于弦長(zhǎng)C的中點(diǎn)。二維槳葉型值點(diǎn)坐標(biāo)為
式中:y0為葉片型線y坐標(biāo);z0背為葉片型線葉背z坐標(biāo);z0面為葉片型線葉面z坐標(biāo)。
圖1 二維葉切面示例
依據(jù)槳葉二維圖制圖原理和幾何特征推導(dǎo)三維槳葉型值點(diǎn)計(jì)算公式[6]。將初始二維螺旋槳型值點(diǎn)沿y軸移動(dòng)側(cè)斜Cs距離、繞x軸逆時(shí)針旋轉(zhuǎn)螺距角β、沿z軸移動(dòng)縱傾Ra距離,其中側(cè)斜Cs為槳葉投影在垂直于槳軸的平面上時(shí),不對(duì)稱的投影輪廓槳葉的葉梢與參考線間的距離,縱傾Ra為母線上的點(diǎn)到垂直于軸線且通過(guò)母線與軸線交點(diǎn)的平面的距離。最后向相應(yīng)半徑為r的圓柱面投影得到螺旋槳三維型值點(diǎn)坐標(biāo):
式中:x背為葉背x軸坐標(biāo)值;x面為葉面x軸坐標(biāo)值;y背為葉背y軸坐標(biāo)值;y面為葉面y軸坐標(biāo)值;z背為葉背z軸坐標(biāo)值;z面為葉面z軸坐標(biāo)值。
利用樣條曲線依次連接槳葉型值點(diǎn),生成葉切面輪廓曲線、槳葉隨邊曲線和槳葉導(dǎo)邊曲線。用蒙皮法填充封閉曲線,生成曲面。利用結(jié)合命令使得到的曲面組合為一個(gè)完整光滑、無(wú)縫隙的槳葉曲面模型,最后通過(guò)封閉曲面命令得到槳葉幾何模型[7-8]。
采用Python語(yǔ)言調(diào)用Excel和CATIA控制建模流程,實(shí)現(xiàn)螺旋槳葉建模的自動(dòng)化,流程如圖2所示。
圖2 槳葉自動(dòng)建模流程圖
根據(jù)推導(dǎo)的型值點(diǎn)計(jì)算公式編寫(xiě)程序語(yǔ)言計(jì)算坐標(biāo),用循環(huán)語(yǔ)句將坐標(biāo)點(diǎn)按順序存入帶宏命令的Excel表格GSD.xls,計(jì)算流程如圖3所示。
圖3 型值點(diǎn)的計(jì)算及存儲(chǔ)
對(duì)于不同的槳葉,葉切面?zhèn)€數(shù)、切面型值點(diǎn)個(gè)數(shù)不同。通過(guò)分析用戶提供的二維參數(shù)表,自動(dòng)獲取葉切面?zhèn)€數(shù)、切面型值點(diǎn)個(gè)數(shù),建立的建模軟件具有良好的通用性。根據(jù)式(2)計(jì)算三維型值點(diǎn),程序代碼如下:
xB(i,:)=rcos(((X-0.5C+Cs)cosβ-Y1sinβ)/r);
yB(i,:)=rsin(((X-0.5C+Cs)cosβ-Y1sinβ)/r);
zB(i,:)=(X-0.5C+Cs)sinβ+Y1cosβ+Ra;
xC(i,:)=rcos(((X-0.5C+Cs)cosβ-Y2sinβ)/r);
yC(i,:)=rsin(((X-0.5C+Cs)cosβ-Y2sinβ)/r);
zC(i,:)=(X-0.5C+Cs)sinβ+Y2cosβ+Ra。
計(jì)算得到的型值點(diǎn)存入Excel表GSD.xls,程序代碼如下:
xlswrite(exportfile,{‘StartCurve’},‘Feuil1’,strcat(‘A’,num2str(k+2)));
xlswrite(exportfile,B_CT,‘Feuil1’,strcat(‘A’,num2str(k+3)));
xlswrite(exportfile,C_CT,‘Feuil1’,strcat(‘A’,num2str(k+3+dian)));
xlswrite(exportfile,{‘EndCurve’},‘Feuil1’,strcat(‘A’,num2str(k+2+2dian)));
GSD表原有宏命令可以實(shí)現(xiàn)將點(diǎn)導(dǎo)入到打開(kāi)的CATIA文件,輸入“1”“2”“3”可進(jìn)行不同形式的導(dǎo)入型值點(diǎn)操作:“1”代表導(dǎo)入點(diǎn);“2”代表導(dǎo)入點(diǎn)之后按照導(dǎo)入順序連成線;“3”代表將導(dǎo)入點(diǎn)連成線之后充成曲面。為了降低用戶的工作量,修改該宏命令,從而默認(rèn)建立槳葉曲面。
采用Python語(yǔ)言編寫(xiě)主程序,實(shí)現(xiàn)Excel與CATIA的交互。在Python主程序中啟用Excel、CATIA組件,打開(kāi)Model.CATPart文件和GSD.xls文件,并運(yùn)行其內(nèi)部宏命令Main,然后關(guān)閉GSD.xls文件。程序代碼如下:
import win32com.client
xls=win32com.client.Dispatch(“Excel.Application”)
catia=win32com.client.Dispatch(“Catia.Application”)
catia.visible=1
catia.Documents.Open(catpath)
GSD = xls.Workbooks.Open(gsdpath)
xls.Application.Run(“GSD.xls!Feuil1.Main”)
xls.Workbooks(1).Close()
xls.Application.Quit
catia.Application.Quit
軟件界面包括操作界面和實(shí)時(shí)運(yùn)行提示界面兩部分,如圖4和圖5所示。操作界面可以方便地實(shí)現(xiàn)數(shù)據(jù)的輸入與建模結(jié)果文件的導(dǎo)出,具體操作步驟如下:
(1) 單擊“打開(kāi)文件”,從彈出的目錄框中找到并選擇葉片原始數(shù)據(jù);
(2) 單擊“生成槳葉型值點(diǎn)”,開(kāi)始計(jì)算型值點(diǎn)并將結(jié)果儲(chǔ)存到GSD表格中;
(3) 單擊“另存為”,根據(jù)需要將帶有型值點(diǎn)數(shù)據(jù)的GSD表格儲(chǔ)存到指定位置;
(4) 單擊“槳葉型值點(diǎn)導(dǎo)入CATIA”,可在CATIA中將模型儲(chǔ)存到指定位置。
圖4 操作界面
實(shí)時(shí)運(yùn)行提示界面顯示程序當(dāng)前運(yùn)行的情況及操作指導(dǎo),實(shí)現(xiàn)軟件的友好交互。
圖5 實(shí)時(shí)運(yùn)行提示界面
基于波茨坦螺旋槳試驗(yàn)案例(Potsdam Propeller Test Case, PPTC)槳葉二維參數(shù),采用自動(dòng)建模軟件得到如圖6所示的槳葉曲面模型。在CATIA中建立的槳葉實(shí)體模型與實(shí)際PPTC槳葉三維模型一致。所有結(jié)果均是在Intel Core I7 CPU,主頻為2.5 GHz,內(nèi)存為8 GB,顯卡為NVIDIA GeForce 940MX的計(jì)算機(jī)上完成,建模耗時(shí)約30 s。
圖6 PPTC槳葉曲面模型
提出一種利用Python語(yǔ)言,綜合Excel、CATIA軟件的螺旋槳葉片自動(dòng)建模方法,可根據(jù)不同的螺旋槳參數(shù)自動(dòng)建立具有一定準(zhǔn)確性的槳葉曲面模型。基于此自動(dòng)建模方法,用Python語(yǔ)言編寫(xiě)擁有運(yùn)算速度快、界面簡(jiǎn)潔、操作簡(jiǎn)單等優(yōu)點(diǎn)的槳葉自動(dòng)建模軟件。建立的槳葉自動(dòng)建模軟件能夠有效降低對(duì)技術(shù)人員的要求,減少工作量,降低人為操作誤差,提高準(zhǔn)確性,可為螺旋槳設(shè)計(jì)及性能研究等方面提供技術(shù)支撐。