黄金锋
中国舰船研究设计中心,湖北武汉 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.