黃金鋒
中國艦船研究設(shè)計中心,湖北武漢 430064
艦船設(shè)計是一項非常復(fù)雜的工程,涉及眾多的信息系統(tǒng)。如何在嚴格的流程管控下實現(xiàn)這些信息系統(tǒng)之間數(shù)據(jù)的共享和交互,以支持并行、協(xié)同的艦船設(shè)計,是一項十分重要的工作。船型設(shè)計和性能分析就是其中非常重要的一個環(huán)節(jié)。
當(dāng)前在船型設(shè)計中常用的軟件是澳大利亞的Maxsurf,它是一套完整的用于船舶設(shè)計、分析和建造的計算機輔助設(shè)計軟件,其核心模塊是船型設(shè)計Maxsurf模塊[1]。而性能分析系統(tǒng)則主要使用的是總體設(shè)計單位自主研發(fā)的Shipcad系統(tǒng),該系統(tǒng)積累了大量基于艦船設(shè)計規(guī)范和經(jīng)驗的,包括靜水力、穩(wěn)性、不沉性及艙容計算等在內(nèi)的常規(guī)計算評估功能。
在艦船設(shè)計中,為求得最佳船型,需要設(shè)計人員經(jīng)過多輪方案的更改迭代才能最終確定滿足產(chǎn)品需求的最佳總體方案。然而,由于Maxsurf和Shipcad軟件的底層結(jié)構(gòu)、數(shù)據(jù)格式和開發(fā)環(huán)境的不一致,導(dǎo)致船型設(shè)計后的結(jié)果無法直接傳遞給Shipcad進行性能計算,需要設(shè)計人員花費大量的時間和精力對數(shù)據(jù)進行手工提取和整理。
為解決數(shù)據(jù)轉(zhuǎn)換的技術(shù)難題,在進行廣泛的討論和深入的研究之后,確定了數(shù)據(jù)接口的技術(shù)解決方案和實施途徑:首先制定Maxsurf系統(tǒng)向Shipcad系統(tǒng)進行數(shù)據(jù)轉(zhuǎn)換的接口文件;然后在Maxsurf系統(tǒng)中提取三維模型數(shù)據(jù),經(jīng)過插值、數(shù)學(xué)變換和數(shù)據(jù)整理后,轉(zhuǎn)換為接口文件規(guī)定的格式;最后導(dǎo)入到Shipcad系統(tǒng),進行性能計算分析。
本文首先詳細定義了Maxsurf系統(tǒng)與Shipcad系統(tǒng)間數(shù)據(jù)轉(zhuǎn)換的接口文件,通過對Maxsurf開發(fā)環(huán)境和數(shù)據(jù)結(jié)構(gòu)的研究,開發(fā)了相應(yīng)的數(shù)據(jù)接口軟件,從而實現(xiàn)了Maxsurf/Shipcad系統(tǒng)間的數(shù)據(jù)共享與轉(zhuǎn)換。
Maxsurf船型設(shè)計采用一整套用一個或多個真正的三維NURBS曲面 (非二維NURBS曲線)進行三維船體曲面建模。NURBS曲面模型為:
式中,di,j為控制頂點;wi,j為控制頂點的權(quán)因子;Ni,k(u)與 Nj,l(v)分別為 u、v 兩個方向的 B 樣條基函數(shù);k、l分別為基函數(shù)在u、v兩個方向的次數(shù)。
在船型曲面的設(shè)計過程中,要將船型曲面的數(shù)據(jù)傳遞給性能分析系統(tǒng)進行計算評估以得到合理的方案,必須對曲面模型進行處理,才能供性能分析系統(tǒng)使用。從公式(1)中可以看出,NURBS曲面是用控制點來控制曲面的質(zhì)量,但性能分析系統(tǒng)卻需要用曲面上的擬合點來進行計算評估。因此,需對擬合點進行數(shù)據(jù)提取與轉(zhuǎn)換。
船體曲面的特點是輪廓形狀復(fù)雜,在曲面內(nèi)部一般還包括部分平面。因此,一些剖面曲線由直線與曲線組成,并且部分剖面曲線凹凸相間,從而導(dǎo)致剖面線存在切點甚至是折點,整個曲面存在折線,容易形成重點等,從而增加了數(shù)據(jù)轉(zhuǎn)換的難度。
目前,Maxsurf船型設(shè)計模塊支持通用的IGES、DXF格式。這兩種格式可以被AutoCAD、CADDS5、FORAN、TRIBON、CFX、FLUENT 等船舶設(shè)計分析軟件接收[2]。而性能分析系統(tǒng)Shipcad則只支持IDF、TK、TKG等文本格式的文件,通用的IGES、DXF格式所提供的數(shù)據(jù)均不能直接導(dǎo)入使用。因此,必須建立Maxsurf與Shipcad的接口,提高設(shè)計和分析的協(xié)同工作效率。
Maxsurf軟件與Shipcad軟件的接口實際上是實現(xiàn)數(shù)據(jù)文件的交接,有直接交接和間接交接兩種。直接交接,即Maxsurf軟件的輸出文件直接作為Shipcad軟件的輸入文件,此時Maxsurf軟件的輸出文件需符合Shipcad軟件的協(xié)議要求;間接交接則是對Maxsurf軟件的輸出文件進行一定的轉(zhuǎn)換后再作為Shipcad軟件的輸入,此時,Maxsurf軟件輸出文件中數(shù)據(jù)的排列可按專門的協(xié)議實現(xiàn)。本文采用間接交接方式,即建立專門的接口文件,按照約定的協(xié)議進行轉(zhuǎn)換。
接口文件是艦船設(shè)計單位研究確定的作為數(shù)據(jù)轉(zhuǎn)換的文件[3],主要是在Maxsurf系統(tǒng)中提取模型數(shù)據(jù)信息,經(jīng)過插值、變換和整理并存儲在接口文件中,以作為Shipcad的輸入。接口文件除詳細定義了船名、對稱與否、設(shè)計水線長、設(shè)計水線寬、設(shè)計吃水、中部型深、水的密度、平均板厚、船殼系數(shù)等外,還對剖面信息、艏輪廓點、艉輪廓點和邊界點進行了詳細的定義和說明,數(shù)據(jù)點的具體格式如表1所示。
表1 接口文件協(xié)議格式Tab.1 Protocol format of interface files
Maxsurf的開發(fā)環(huán)境是Maxsurf ActiveX Automation,ActiveX Automation是微軟公司開發(fā)的、跨應(yīng)用程序的、通用的客戶化和集成化技術(shù)。通過ActiveX Automation,Maxsurf與其他 Windows應(yīng)用程序之間的集成變得更加方便。另外一個強大的特性是,用戶可以使用常見的、易學(xué)易用的客戶化編程語言和工具,如 VB(Visual Basic)、VC(Visual C++)和JAVA等編寫Maxsurf ActiveX應(yīng)用程序。
Maxsurf中的ActiveX Automation接口與微軟公司出品的Excel和Access中的接口相似。在Maxsurf中實現(xiàn)的ActiveX Automation不但是Maxsurf軟件的一部分,可以立即與其他編程工具,如VB一起使用,而且是在Maxsurf中實現(xiàn)VBA(Visual Basic for Applications)的基礎(chǔ)。
因此,對Maxsurf的二次開發(fā)可以通過兩種方式實現(xiàn):一是選擇 VB(或 VC、JAVA等)作為Maxsurf應(yīng)用程序的開發(fā)工具,通過ActiveX Automation接口在VB開發(fā)環(huán)境中實現(xiàn)Maxsurf的數(shù)據(jù)獲取與操作;二是可以把Maxsurf與其他標準的 Windows應(yīng)用程序 (Microsoft Excel、Microsoft Word、Microsoft Access、AutoCAD 2000 及更 新版本)通過 VBA 集成[4],直接在 Windows 應(yīng)用程序的VBA中實現(xiàn)數(shù)據(jù)的訪問,但是只能針對特定的Windows應(yīng)用程序。
本文中Maxsurf的開發(fā)主要是以VB為主,通過界面和程序訪問Maxsurf對象模型數(shù)據(jù),然后創(chuàng)建、分析和提取模型數(shù)據(jù)。在VB程序中調(diào)用Maxsurf對象模型環(huán)境如圖1所示。
目前的應(yīng)用程序,如VB,基本上屬于面向?qū)ο笳Z言,即操作對象的語言。每一種用面向?qū)ο笳Z言來編程的應(yīng)用程序都有自己獨特的對象模型,并且都可以被這種語言所操縱[5]。
用VB 6.0開發(fā)Maxsurf,實際上就是通過操縱Maxsurf對象模型來實現(xiàn)。Maxsurf對象模型中的大部分對象都用于描述曲面、標記點或網(wǎng)格,或者從Maxsurf模型中查找特性參數(shù),其中,每一個對象分別都有各自獨立的屬性和方法。Maxsurf對象模型主要有8種,即Application、Design、Frame of Reference、 Grids、 Surface、 Hydrostatics、Markert和Preference。
本文以調(diào)用Marker對象模型為主。Marker,即標記點,是船體曲面經(jīng)過縱向、垂向和橫向剖切而生成的曲面擬合點,將這些擬合點抽取出來,再經(jīng)過變換處理,即可成為Shipcad所需要的數(shù)據(jù)。Marker對象模型具體的結(jié)構(gòu)如圖2所示。
Marker對象模型允許訪問Maxsurf中Marker窗口中的屬性,可以設(shè)置和獲取Marker的Position、Offset和 Height,即(x,y,z)坐標,也可以獲取站位(Station)、曲面(Surface)標識號和類型(Type)的屬性。Marker的屬性見表2所示。
表2 Marker屬性表Tab.2 Marker properties list
Marker對象模型由3部分組成,即Marker、Markers和 MarkerList(圖2)。由圖2可以看出Marker、Markers和 MarkerList之間的邏輯關(guān)系,Markers和MarkerList是訪問Marker的必經(jīng)之路,即Markers和MarkerList是所有Marker的集合,只有通過Markers和MarkerList的屬性和方法才能確定具體的Marker,然后才能訪問到該Marker的屬性信息。
軟件整體流程如圖3所示,具體如下:
1)根據(jù)界面程序主界面輸入的相關(guān)參數(shù)信息,設(shè)置數(shù)據(jù)轉(zhuǎn)換中需要的變量;
2)數(shù)據(jù)轉(zhuǎn)換軟件通過調(diào)用Maxsurf Automation接口,初始化msMaxsurfObj(Maxsurf應(yīng)用程序?qū)ο螅?、msDesignObj (Maxsurf當(dāng)前設(shè)計對象)和msMarkersObj(Maxsurf標記點集合對象);
3)操作msMarkersObj對象,按站位獲得所有標記 (Marker)點信息,將站位信息保存至ArrayList對象(msStationArrayList)中;
4)對于每一站位,按x坐標位置對msStationArrayList從小到大進行排序;
5)對于每一站內(nèi)的標記點,按z坐標進行排序;
6)根據(jù)規(guī)則,在每站內(nèi)第一點和最后一點前、后插入額外標記點(z坐標按拱高系數(shù)計算);
7)根據(jù)所有y=0的標記點,提取艏部前后點差值小于艏部差值的標記點,并按x坐標從大到小排序;
8)根據(jù)所有y=0的標記點,提取艉部前后點差值小于艉部差值的標記點,并按x坐標從小到大排序;
9)提取每站內(nèi)z坐標最大的標記點,按x坐標從小到大排序;
10)對于兩次排序后的msStationArrayList集合,按表1格式完成輸出。
在該流程中,第1~3條是從Maxsurf獲取Marker信息,第4~9條是對數(shù)據(jù)的處理,第10條是文件輸出。
數(shù)據(jù)轉(zhuǎn)換接口軟件主界面如圖4所示,其包括參數(shù)輸入框和操作按鈕兩部分。
1)參數(shù)輸入框。包括需要寫入型值轉(zhuǎn)換后文件的數(shù)據(jù)和型值數(shù)據(jù)轉(zhuǎn)換過程中所需的計算數(shù)據(jù):
(1)輸出數(shù)據(jù):船名、對稱與否、設(shè)計水線長、設(shè)計水線寬、設(shè)計吃水、中部型深、水的密度、平均板厚及船殼系數(shù);
(2)計算數(shù)據(jù):拱高系數(shù)、艏部差值和艉部差值。
2)操作按鈕。包括型值轉(zhuǎn)換過程中所有的功能操作:
(1)型線轉(zhuǎn)換:在參數(shù)輸入框輸入型值數(shù)據(jù)轉(zhuǎn)換參數(shù)后,點擊“型線轉(zhuǎn)換”按鈕,程序調(diào)用后臺算法進行型值數(shù)據(jù)轉(zhuǎn)換(轉(zhuǎn)換過程中有轉(zhuǎn)換進度提示);
(2)預(yù)覽:型值數(shù)據(jù)轉(zhuǎn)換后,點擊“預(yù)覽”按鈕,可以查看轉(zhuǎn)換后的型值數(shù)據(jù);
(3)輸出:型值數(shù)據(jù)轉(zhuǎn)換后,點擊“輸出”按鈕便會彈出型值文件文本輸出對話框,在對話框中可以設(shè)置輸出的型值文件路徑。
數(shù)據(jù)轉(zhuǎn)換接口軟件的主要功能由剖線數(shù)據(jù)點提取、數(shù)據(jù)排序、增加插值點、提取艏部輪廓點數(shù)據(jù)、提取艉部輪廓點數(shù)據(jù)、提取邊界點數(shù)據(jù)和數(shù)據(jù)整理輸出等幾部分組成。以剖線數(shù)據(jù)點提取為例,其實現(xiàn)過程如下:
1)獲得標記點總數(shù)。每個標記點對應(yīng)一個橫剖點,獲得標記點總數(shù)即得到了需要提取的橫剖點總數(shù);
2)遍歷所有標記點,獲得標記點對象,主要通過Markerlist或Markers對象信息獲得每一個橫剖點的三維坐標(x,y,z);
3)判斷標記點是否屬于同一站位,將標記點信息保存至標記點集合中。
剖線數(shù)據(jù)點提取的流程設(shè)計圖如圖5所示。
在經(jīng)過詳細的設(shè)計和代碼編寫后,Maxsurf和Shipcad的數(shù)據(jù)接口軟件便開發(fā)完畢。為提高程序可靠性和穩(wěn)定性,對該軟件進行了實例驗證。圖6(左)所示為某船舶產(chǎn)品的船型曲面,包括球艏曲面、艏部曲面、艉部曲面和舯部曲面4個部分,在運行數(shù)據(jù)轉(zhuǎn)換接口軟件之前,根據(jù)Shipcad對數(shù)據(jù)點數(shù)量的要求,對4個曲面的橫剖點進行了劃分,軟件運行后可生成如圖6(右)所示的船型數(shù)據(jù)轉(zhuǎn)換接口文件。經(jīng)軟件實例驗證,所開發(fā)的接口軟件運行可靠,運行速度較快,達到了預(yù)期目標。
Maxsurf和Shipcad作為先進的艦船設(shè)計分析軟件,其設(shè)計思想和成熟的分析方法有很多值得研究的地方。以基于接口文件的方法研究船型設(shè)計系統(tǒng)Maxsurf和性能分析系統(tǒng)Shipcad之間的接口問題,利用ActiveX Automation技術(shù),采用圖形化語言編程VB實現(xiàn)數(shù)據(jù)的提取、變換和輸出,并開發(fā)出相應(yīng)的軟件,實現(xiàn)了Maxsurf和Shipcad系統(tǒng)間的數(shù)據(jù)傳遞,初步解決了艦船Maxsurf和Shipcad兩系統(tǒng)之間數(shù)據(jù)轉(zhuǎn)換的壁壘,為艦船集成設(shè)計平臺數(shù)據(jù)接口的實際應(yīng)用奠定了良好的基礎(chǔ)。
[1]蔣毅文.Maxsurf及相關(guān)設(shè)計程序在船舶設(shè)計中的應(yīng)用[J].船海工程,2005,34(4):39-41.JIANG Y W.Application of Maxsurf and corresponding software in ship design[J].Ship and Ocean Engineering,2005,34(4):39-41.
[2]錢衛(wèi)星.Maxsurf軟件在方案設(shè)計中的應(yīng)用[J].江蘇船舶,2002,19(2):23-25.QIAN W X.Maxsurf application in ship scenario design[J].Jiangsu Ship,2002,19(2):23-25.
[3]黃金鋒,何剛.艦船CAD/CAM系統(tǒng)船體結(jié)構(gòu)數(shù)據(jù)接口技術(shù)研究[J].武漢理工大學(xué)學(xué)報(交通科學(xué)與工程版),2008,32(5):906-909.HUANG J F,HE G.Technical research on ship structure data interfaces of the naval ships CAD /CAM system [J].Journal of Wuhan University of Technology(Transportation Science and Engineering),2008,32(5):906-909.
[4]鄒玉堂,李杰,路慧彪.三維船體庫系統(tǒng)研究[J].中國造船,2009,50(2):74-78.ZOU Y T,LI J,LU H B.Study on 3D hull library system[J].Shipbuilding of China,2009,50(2):74-78.
[5]陳燕凡,林焰,紀卓尚.基于STEP標準的船舶CAD系統(tǒng)數(shù)據(jù)接口研究[J].船舶,2005(4):56-58.CHEN Y F,LIN Y,JI Z S.Data interface of Ship CAD system based on STEP standard[J].Ship and Boat,2005(4):56-58.