冯康佳, 张亦弛, 刘 乐
(深海载人装备国家重点实验室, 江苏 无锡 214082)
随着船舶行业转型升级的加速,减少重复性劳动、提高工作效率的需求非常迫切。在船舶三维建模中,舵、翼、舵踵具有相对规则的形状,便于参数化表达,因而非常适合于固化方法参数化建模。但是,在方案评估中,因CATIA功能限制,对船体湿表面积、排水量、船形参数等的统计往往通过手动量取计算。在整个船舶设计过程中,可能需要多次建模与评估,重复性的工作枯燥低效,迫切需要改进方法来消除。CATIA虽然无法直接提供上述功能,但是提供了串行通信端口(Cluster Communication Port, COM接口)和分布式组件对象模型(Microsoft Distributed Component Object Model, DCOM)接口用于用户特殊需求的定制,支持从脚本到VB编程语言(Visual Basic, VB)、Microsoft Visual C++(VC)、Delphi等通用开发工具。国内的相关应用常见报道:刘智强等[1]使用VB.NET对CATIA进行开发,建立三维参数化设备库原型系统,实现三维参数化驱动的船载设备模型库的构建;徐俊路等[2]对球首参数化设计进行二次开发,可以通过输入参数快速生成球首;曹晶等[3]开发船舶静水力计算软件,实现自动提取实体模型信息,并应用这些信息进行静水力计算。CATIA二次开发具有强大的生命力和实用性,具有非常广阔的应用前景[4-5]。采用VB对CATIA进行二次开发,可以快速创建舵曲面和统计船形参数,简单易用,高效精确。
CATIA二次开发方法主要分为进程内和进程外访问。进程外访问中,CATIA不调用脚本文件,而是作为一个对象连接与嵌入(Object Linking and Embedding, OLE)自动化服务器,通过COM接口被外部程序控制[3-5]。使用VB 6.0作为开发环境,调用CATIA函数库实现对其的各种操作。此外,程序还引用EXCEL库,可以方便地将主尺度参数直接导出生成Excel文件,便于后续分析。运用VB编写程序并设计界面,在界面中直接输入参数和数据。
在舵的设计中,翼型是关键参数。在软件开发中,可以将美国国家航空咨询委员会(National Advisory Committee for Aeronautics, NACA)、茹科夫斯基、JFS系列等常见翼型和自研翼型编入程序。这样可以在界面中直接选取,避免型值计算、导入和创建曲面等过程,减少人为出错,提高建模效率。在界面中输入弦长、展长、偏移距离等舵参数,还可以添加舵踵,即可实现对整个舵建模的控制。舵参数化建模流程及关键函数如图1所示,程序输入界面如图2所示。
图1 舵参数化建模流程及关键函数
图2 舵参数化建模程序输入界面
在程序中创建多个常用函数,多处引用,以简化代码、提高可读性、减少出错。以创建对称函数Symmetry为例,介绍函数创建与引用,其代码如下:
‘-----创建对称函数--------
Sub Symmetry(Spline1, PlaneZX, HBodyC)
’函数三个参数依次是对称的几何形状、对称平面和对称形状插入到的几何图形集
Set referenceTem = part1.
CreateReferenceFromObject(Spline1)
Set hybridShapeSymmetry1 = hybridShapeFactory1.
AddNewSymmetry(referenceTem, PlaneZX)
’创建关于ZX平面对称形状
hybridShapeSymmetry1.VolumeResult = False
HBodyC.AppendHybridShape hybridShapeSymmetry1’
将对称形状插入某几何图形集
End Sub
其引用方式如下:
Symmetry Spline2, PlaneXY, HbodyC2
2.2.1 主尺度参数统计
主尺度参数统计模块初始化设定界面如图3所示。在计算之前,应在该模块中调动CATIA对船体曲面进行预处理,以便于程序进行计算。
图3 初始化设定界面
将整个船体表面连接成一张曲面,沿中纵剖面分割取其一半,并对该曲面进行命名(比如hull)。再计算设置模块,输入几何图形集名、曲面名和工作目录等参数,选择打开或者使用当前CATIA文件,点击读入参数即可获得曲面的长、宽、高等基本参数。工作目录是舵Part文件和主尺度参数导出的文件位置。程序首先通过Item()函数获得该曲面所在几何图形集名称和曲面名称,得到该曲面的句柄(见关键代码中的reference_hull)。对该曲面进行修复,对称、合并、封闭曲面得到整船封闭实体(见关键代码中的referenceHullWhole),便于后续测量湿表面积和排水量等参数,其中的关键代码如下:
‘修复船体曲面,消除小间隙,提高曲面质量
Set hybridShapeHealing1 = HSF1.
AddNewHealing(reference_hull)
‘对称船体曲面
Set hybridShapeSymmetry1 = HSF1.
AddNewSymmetry(referenceHealing1, PlaneZX)
‘合并船体曲面
Set hybridShapeAssemble1 = HSF1.
AddNewJoin(RefHealing1, RefSymmetry1)
’创建船体实体
Set referenceTem = part1.CreateReferenceFromName(“”)
Set closeSurface1 = shapeFactory1.
AddNewVolumeCloseSurface(referenceTem)
Set reference Assemble1 = part1
.CreateReferenceFromObject(hybridShapeAssemble1)
closeSurface1.Surface = reference Assemble1
Set referenceHullWhole = part1.
CreateReferenceFromObject(closeSurface1)
‘referenceHullWhole:整船实体
船体主尺度参数统计流程如图4所示。
图4 船体主尺度参数统计流程
在界面中输入吃水高度、船壳厚度、海水密度和中纵剖面坐标,然后点击计算并导出,即可实现对船体多参数的自动计算、显示和导出。通过设定海水密度,计算特定海水密度下的排水量。输入吃水高度得到船体水上水下排水量、重心坐标、湿表面积等参数。根据需要,还可扩充统计参数的种类,进行某些计算,为船体性能评估提供较大便利。船体主尺度参数统计关键代码如下:
Set myMeasure = theSPAWorkbench.
GetMeasurable(referenceHullWhole)‘测量船体实体
HullArea(0) = myMeasure.Area’船体湿表面积
HullVol(0) = myMeasure.Volume’船体排水量
myMeasure.GetCOG Cog‘船体重心坐标
Set hybridShapeSplit1 = HSF1.
AddNewHybridSplit(referenceHullWhole, referenceWL,-1)’将船体沿水线分割成水上水下实体,referenceWL水线平面
Set myMeasure = theSPAWorkbench.
GetMeasurable(referenceSplitDown)’测量水下实体,referenceSplitDown:水下船体实体
2.2.2 船形参数统计
船体船形参数统计界面如图5所示。
图5 船体船形参数统计界面
[][]
在该界面中,设定ListView控件用于实时显示主尺度参数。例如钢船的型表面是内表面,计算排水量时需要考虑船壳厚度,对ListView控件显示控制的代码如下:
ListView2.ListItems(2).SubItems(4) = “考虑船壳厚度排水量/t”
ListView2.ListItems(2).SubItems(i) = Str$(Format((HullArea(0) * ST + HullVol(0)) * SeaRho,“0.00”))
‘HullArea(0):湿表面积,ST:船壳厚度,HullVol(0):排水体积,SeaRho:海水密度
通过下列代码可以将方形系数写入Excel文件中,并自动命名,便于后续处理。
xlsWorksheet.Cells(1, 7).Value = “方形系数”
xlsWorksheet.Cells(1, 8).Value = HullVol(0)/xLen/yLen/zLen
‘HullVol(0):排水体积,xLen、yLen、zLen分别是型长、型宽、型高
采用某船形(见图6)对上述方法和程序进行验证,在图3所示的主尺度计算设置模块对话框中进行参数的读入,在图5所示的船体船形界面输入相关参数,即可显示并导出整船的多种船形参数。该方法简单便捷、高效精确,为多方案比较与评估提供较大的方便。
图6 某船形主体模型
使用VB对CATIA进行二次开发,介绍程序思想和关键代码,可为相关程序的开发提供参考。该程序实现对舵曲面的快速建模和船形参数的快速获取。该方法具有界面清晰、高效可靠的特点,凸显出解决实际问题的强大能力。在整个设计生产过程中,可重复性强,当方案改变后,可快速完成建模与评估,使得科研设计人员可轻松面对多型号或多个设计过程中的建模与评估任务。