黃金鋒
中國艦船研究設計中心,湖北武漢 430064
艦船設計是一項非常復雜的工程,涉及眾多的信息系統。如何在嚴格的流程管控下實現這些信息系統之間數據的共享和交互,以支持并行、協同的艦船設計,是一項十分重要的工作。船型設計和性能分析就是其中非常重要的一個環節。
當前在船型設計中常用的軟件是澳大利亞的Maxsurf,它是一套完整的用于船舶設計、分析和建造的計算機輔助設計軟件,其核心模塊是船型設計Maxsurf模塊[1]。而性能分析系統則主要使用的是總體設計單位自主研發的Shipcad系統,該系統積累了大量基于艦船設計規范和經驗的,包括靜水力、穩性、不沉性及艙容計算等在內的常規計算評估功能。
在艦船設計中,為求得最佳船型,需要設計人員經過多輪方案的更改迭代才能最終確定滿足產品需求的最佳總體方案。然而,由于Maxsurf和Shipcad軟件的底層結構、數據格式和開發環境的不一致,導致船型設計后的結果無法直接傳遞給Shipcad進行性能計算,需要設計人員花費大量的時間和精力對數據進行手工提取和整理。
為解決數據轉換的技術難題,在進行廣泛的討論和深入的研究之后,確定了數據接口的技術解決方案和實施途徑:首先制定Maxsurf系統向Shipcad系統進行數據轉換的接口文件;然后在Maxsurf系統中提取三維模型數據,經過插值、數學變換和數據整理后,轉換為接口文件規定的格式;最后導入到Shipcad系統,進行性能計算分析。
本文首先詳細定義了Maxsurf系統與Shipcad系統間數據轉換的接口文件,通過對Maxsurf開發環境和數據結構的研究,開發了相應的數據接口軟件,從而實現了Maxsurf/Shipcad系統間的數據共享與轉換。
Maxsurf船型設計采用一整套用一個或多個真正的三維NURBS曲面 (非二維NURBS曲線)進行三維船體曲面建模。NURBS曲面模型為:

式中,di,j為控制頂點;wi,j為控制頂點的權因子;Ni,k(u)與 Nj,l(v)分別為 u、v 兩個方向的 B 樣條基函數;k、l分別為基函數在u、v兩個方向的次數。
在船型曲面的設計過程中,要將船型曲面的數據傳遞給性能分析系統進行計算評估以得到合理的方案,必須對曲面模型進行處理,才能供性能分析系統使用。從公式(1)中可以看出,NURBS曲面是用控制點來控制曲面的質量,但性能分析系統卻需要用曲面上的擬合點來進行計算評估。因此,需對擬合點進行數據提取與轉換。
船體曲面的特點是輪廓形狀復雜,在曲面內部一般還包括部分平面。因此,一些剖面曲線由直線與曲線組成,并且部分剖面曲線凹凸相間,從而導致剖面線存在切點甚至是折點,整個曲面存在折線,容易形成重點等,從而增加了數據轉換的難度。
目前,Maxsurf船型設計模塊支持通用的IGES、DXF格式。這兩種格式可以被AutoCAD、CADDS5、FORAN、TRIBON、CFX、FLUENT 等船舶設計分析軟件接收[2]。而性能分析系統Shipcad則只支持IDF、TK、TKG等文本格式的文件,通用的IGES、DXF格式所提供的數據均不能直接導入使用。因此,必須建立Maxsurf與Shipcad的接口,提高設計和分析的協同工作效率。
Maxsurf軟件與Shipcad軟件的接口實際上是實現數據文件的交接,有直接交接和間接交接兩種。直接交接,即Maxsurf軟件的輸出文件直接作為Shipcad軟件的輸入文件,此時Maxsurf軟件的輸出文件需符合Shipcad軟件的協議要求;間接交接則是對Maxsurf軟件的輸出文件進行一定的轉換后再作為Shipcad軟件的輸入,此時,Maxsurf軟件輸出文件中數據的排列可按專門的協議實現。本文采用間接交接方式,即建立專門的接口文件,按照約定的協議進行轉換。
接口文件是艦船設計單位研究確定的作為數據轉換的文件[3],主要是在Maxsurf系統中提取模型數據信息,經過插值、變換和整理并存儲在接口文件中,以作為Shipcad的輸入。接口文件除詳細定義了船名、對稱與否、設計水線長、設計水線寬、設計吃水、中部型深、水的密度、平均板厚、船殼系數等外,還對剖面信息、艏輪廓點、艉輪廓點和邊界點進行了詳細的定義和說明,數據點的具體格式如表1所示。

表1 接口文件協議格式Tab.1 Protocol format of interface files
Maxsurf的開發環境是Maxsurf ActiveX Automation,ActiveX Automation是微軟公司開發的、跨應用程序的、通用的客戶化和集成化技術。通過ActiveX Automation,Maxsurf與其他 Windows應用程序之間的集成變得更加方便。另外一個強大的特性是,用戶可以使用常見的、易學易用的客戶化編程語言和工具,如 VB(Visual Basic)、VC(Visual C++)和JAVA等編寫Maxsurf ActiveX應用程序。
Maxsurf中的ActiveX Automation接口與微軟公司出品的Excel和Access中的接口相似。在Maxsurf中實現的ActiveX Automation不但是Maxsurf軟件的一部分,可以立即與其他編程工具,如VB一起使用,而且是在Maxsurf中實現VBA(Visual Basic for Applications)的基礎。
因此,對Maxsurf的二次開發可以通過兩種方式實現:一是選擇 VB(或 VC、JAVA等)作為Maxsurf應用程序的開發工具,通過ActiveX Automation接口在VB開發環境中實現Maxsurf的數據獲取與操作;二是可以把Maxsurf與其他標準的 Windows應用程序 (Microsoft Excel、Microsoft Word、Microsoft Access、AutoCAD 2000 及更 新版本)通過 VBA 集成[4],直接在 Windows 應用程序的VBA中實現數據的訪問,但是只能針對特定的Windows應用程序。
本文中Maxsurf的開發主要是以VB為主,通過界面和程序訪問Maxsurf對象模型數據,然后創建、分析和提取模型數據。在VB程序中調用Maxsurf對象模型環境如圖1所示。

目前的應用程序,如VB,基本上屬于面向對象語言,即操作對象的語言。每一種用面向對象語言來編程的應用程序都有自己獨特的對象模型,并且都可以被這種語言所操縱[5]。
用VB 6.0開發Maxsurf,實際上就是通過操縱Maxsurf對象模型來實現。Maxsurf對象模型中的大部分對象都用于描述曲面、標記點或網格,或者從Maxsurf模型中查找特性參數,其中,每一個對象分別都有各自獨立的屬性和方法。Maxsurf對象模型主要有8種,即Application、Design、Frame of Reference、 Grids、 Surface、 Hydrostatics、Markert和Preference。
本文以調用Marker對象模型為主。Marker,即標記點,是船體曲面經過縱向、垂向和橫向剖切而生成的曲面擬合點,將這些擬合點抽取出來,再經過變換處理,即可成為Shipcad所需要的數據。Marker對象模型具體的結構如圖2所示。

Marker對象模型允許訪問Maxsurf中Marker窗口中的屬性,可以設置和獲取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之間的邏輯關系,Markers和MarkerList是訪問Marker的必經之路,即Markers和MarkerList是所有Marker的集合,只有通過Markers和MarkerList的屬性和方法才能確定具體的Marker,然后才能訪問到該Marker的屬性信息。
軟件整體流程如圖3所示,具體如下:
1)根據界面程序主界面輸入的相關參數信息,設置數據轉換中需要的變量;
2)數據轉換軟件通過調用Maxsurf Automation接口,初始化msMaxsurfObj(Maxsurf應用程序對象)、msDesignObj (Maxsurf當前設計對象)和msMarkersObj(Maxsurf標記點集合對象);
3)操作msMarkersObj對象,按站位獲得所有標記 (Marker)點信息,將站位信息保存至ArrayList對象(msStationArrayList)中;
4)對于每一站位,按x坐標位置對msStationArrayList從小到大進行排序;
5)對于每一站內的標記點,按z坐標進行排序;
6)根據規則,在每站內第一點和最后一點前、后插入額外標記點(z坐標按拱高系數計算);
7)根據所有y=0的標記點,提取艏部前后點差值小于艏部差值的標記點,并按x坐標從大到小排序;
8)根據所有y=0的標記點,提取艉部前后點差值小于艉部差值的標記點,并按x坐標從小到大排序;
9)提取每站內z坐標最大的標記點,按x坐標從小到大排序;
10)對于兩次排序后的msStationArrayList集合,按表1格式完成輸出。
在該流程中,第1~3條是從Maxsurf獲取Marker信息,第4~9條是對數據的處理,第10條是文件輸出。

數據轉換接口軟件主界面如圖4所示,其包括參數輸入框和操作按鈕兩部分。

1)參數輸入框。包括需要寫入型值轉換后文件的數據和型值數據轉換過程中所需的計算數據:
(1)輸出數據:船名、對稱與否、設計水線長、設計水線寬、設計吃水、中部型深、水的密度、平均板厚及船殼系數;
(2)計算數據:拱高系數、艏部差值和艉部差值。
2)操作按鈕。包括型值轉換過程中所有的功能操作:
(1)型線轉換:在參數輸入框輸入型值數據轉換參數后,點擊“型線轉換”按鈕,程序調用后臺算法進行型值數據轉換(轉換過程中有轉換進度提示);
(2)預覽:型值數據轉換后,點擊“預覽”按鈕,可以查看轉換后的型值數據;
(3)輸出:型值數據轉換后,點擊“輸出”按鈕便會彈出型值文件文本輸出對話框,在對話框中可以設置輸出的型值文件路徑。
數據轉換接口軟件的主要功能由剖線數據點提取、數據排序、增加插值點、提取艏部輪廓點數據、提取艉部輪廓點數據、提取邊界點數據和數據整理輸出等幾部分組成。以剖線數據點提取為例,其實現過程如下:
1)獲得標記點總數。每個標記點對應一個橫剖點,獲得標記點總數即得到了需要提取的橫剖點總數;
2)遍歷所有標記點,獲得標記點對象,主要通過Markerlist或Markers對象信息獲得每一個橫剖點的三維坐標(x,y,z);
3)判斷標記點是否屬于同一站位,將標記點信息保存至標記點集合中。
剖線數據點提取的流程設計圖如圖5所示。

在經過詳細的設計和代碼編寫后,Maxsurf和Shipcad的數據接口軟件便開發完畢。為提高程序可靠性和穩定性,對該軟件進行了實例驗證。圖6(左)所示為某船舶產品的船型曲面,包括球艏曲面、艏部曲面、艉部曲面和舯部曲面4個部分,在運行數據轉換接口軟件之前,根據Shipcad對數據點數量的要求,對4個曲面的橫剖點進行了劃分,軟件運行后可生成如圖6(右)所示的船型數據轉換接口文件。經軟件實例驗證,所開發的接口軟件運行可靠,運行速度較快,達到了預期目標。

Maxsurf和Shipcad作為先進的艦船設計分析軟件,其設計思想和成熟的分析方法有很多值得研究的地方。以基于接口文件的方法研究船型設計系統Maxsurf和性能分析系統Shipcad之間的接口問題,利用ActiveX Automation技術,采用圖形化語言編程VB實現數據的提取、變換和輸出,并開發出相應的軟件,實現了Maxsurf和Shipcad系統間的數據傳遞,初步解決了艦船Maxsurf和Shipcad兩系統之間數據轉換的壁壘,為艦船集成設計平臺數據接口的實際應用奠定了良好的基礎。
[1]蔣毅文.Maxsurf及相關設計程序在船舶設計中的應用[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]錢衛星.Maxsurf軟件在方案設計中的應用[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系統船體結構數據接口技術研究[J].武漢理工大學學報(交通科學與工程版),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]鄒玉堂,李杰,路慧彪.三維船體庫系統研究[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系統數據接口研究[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.