基于VB.NET的船用螺旋桨自动建模方法研究

2022-04-28 04:36单东生龚京风姚炎炎
机械设计与制造 2022年4期
关键词:坐标值桨叶二次开发

单东生,龚京风,姚炎炎,王 晴

(1.武汉科技大学汽车与交通工程学院,湖北 武汉 430065;2.中国舰船研究设计中心,湖北 武汉 430064)

1 引言

螺旋桨由于性能良好、效率较高等特点,是目前使用最为广泛的舰船推进设备。它通过旋转方式将主机传递过来的转矩转化为对外的推力,执行船舶动力的输出。螺旋桨桨叶是典型的自由曲面零件,建模的关键问题是较难准确、快速得到螺旋桨叶切面的空间三维坐标。螺旋桨的形状无法用数学公式进行描述,只能用数百个甚至更多的型值点来表示,并且从二维基础数据到三维螺旋桨模型,需要大量的坐标变换及建模操作。

近年来,文献[1]提出了螺旋桨型值点坐标计算程序设计方法,通过ProE软件将数据文件手动导入进行实体建模,但未进行型值点导入软件后的快速建模方法研究。文献[2]对UG/Grip进行二次开发,对螺旋桨建模关键技术进行探讨,对桨叶叶尖、根部过度等关键部位进行合理处理,建立精确的三维螺旋桨模型。文献[3]利用MATLAB计算螺旋桨桨叶空间坐标点,通过ProE一次性读入空间坐标点,但需手动建立三维实体螺旋桨。文献[4]利用Ex‐cel手动操作完成桨叶型值点的计算,采用VB.NET 语言编写程序,将Excel里的型值点坐标值数据导入CATIA 中,生成型值点云图,但最终仍需手动完成螺旋桨三维模型的建立。

针对螺旋桨叶片模型结构较为复杂,手工进行三维建模操作繁琐,并且容易出错,需花费较多的时间和精力,本文提出了一种快速、精确地螺旋桨建模方法。通过VB.NET对CATIA进行二次开发,实现了从输入螺旋桨数据、螺旋桨三维空间点的计算及螺旋桨三维实体模型建立完全程序化,使得复杂的螺旋桨建模变得简单易操作。

2 螺旋桨桨叶型值点转换公式推导

螺旋桨二维基础数据由不同半径的同轴圆柱面与桨叶相切,经过复杂投影变换得到。

二维基础数据是局部平面坐标系内的数值,不可以直接用于三维建模,需要将各半径处的叶切面二维基础数据还原到对应的三维空间坐标系中[5]。

螺旋桨二维基础数据包括:叶片弦长方向坐标X,叶片叶背及叶面坐标(叶背及叶面与弦线的垂直距离)Y1、Y2,弦长C,螺距P,半径r,螺距角b,纵倾Ra,侧斜Cs。通过以上参数,可以推导出从平面局部坐标系到空间全局坐标系的坐标变换公式。

首先建立坐标系:以螺旋桨轴线为z轴,指向船尾为正;以弦长为y轴,指向随边为正。由已知的X、Y1、Y2绘制叶片展开型线,如图1所示。叶片型线坐标为:

图1 叶片展开型线Fig.1 Profile of Blade Expansion

式中:X—叶片弦长方向坐标;C—弦长;Y1、Y2—叶片叶背及叶面坐标(叶背及叶面与弦线的垂直距离);y0—由输入表格中得到的叶片型线y坐标;z0背—由输入表格中得到的叶片型线叶背z坐标;z0面—输入表格中得到的叶片型线叶面z坐标。

将叶片二维基础数据沿y轴移动Cs距离,绕x轴逆时针旋转β角度,然后沿z轴正方向移动总纵顷Ra距离,最后向同轴圆柱面投影,得到各切面处型值点的三维空间坐标。最终得到螺旋桨叶切面二维基础数据与三维型值点之间的转换公式:

式中:x背—叶背x轴坐标值;y背—叶背y轴坐标值;z背—叶背z轴坐标值;x面—叶面x轴坐标值;y面—叶面y轴坐标值;z面—叶面z轴坐标值;r—半径;X—给定的叶片弦长方向坐标;C—弦长;Cs—侧斜;β—螺距角;Y1—叶背与弦线的垂直距离;Y2—叶面与弦线的垂直距离;Ra—纵倾。

3 螺旋桨自动建模方法研究

采用Excel完成螺旋桨二维基础数据和三维型值点的存储,利用CATIA完成螺旋桨三维型值点的导入、曲面建模、实体填充等建模流程。选用VB.NET编程语言将螺旋桨桨叶型值点转换公式程序化,同时实现与Excel、CATIA软件的交互,最终输出三维螺旋桨模型,建模过程中不再需要人工繁琐操作。螺旋桨自动建模流程图,如图2所示。

图2 螺旋桨自动建模流程图Fig.2 Flow Chart of Propeller Automatic Modeling

3.1 数据的读取与存储

在VB.NET环境下访问Excel文件,需要引用Excel对象库[6]。添加的方法是在项目菜单栏下,选择添加引用子菜单,然后在添加引用对话框的Com 选项卡下选择Microsoft Excel 14.0 Object Library,如图3所示。

图3 添加Excel对象库Fig.3 Addition of the Excel Object Library

螺旋桨二维基础数据按照固定格式存储在Excel中,程序将自动读取Excel中的数据,利用螺旋桨桨叶数据转换公式,计算得到螺旋桨三维空间型值点,并存储在三维型值点Excel文件中,便于后续导入CATIA。型值点转换公式程序代码如下所示:

XB=r*System.Math.Cos(((X−0.5*C+Cs)*System.Math.Cos(beta)+Y1*System.Math.Sin(beta))/r)

YB=r*System.Math.Sin(((X−0.5*C+Cs)*System.Math.Cos(beta)+Y1*System.Math.Sin(beta))/r)

ZB=(X−0.5*C+Cs)*System.Math.Sin(beta)−Y1*System.Math.Cos(beta)+Ra

XC=r*System.Math.Cos(((X−0.5*C+Cs)*System.Math.Cos(beta)+Y2*System.Math.Sin(beta))/r)

YC=r*System.Math.Sin(((X−0.5*C+Cs)*System.Math.Cos(beta)+Y2*System.Math.Sin(beta))/r)

ZC=(X−0.5*C+Cs)*System.Math.Sin(beta)−Y2*System.Math.Cos(beta)+Ra

3.2 螺旋桨自动建模

3.2.1 螺旋桨三维建模方法

螺旋桨在CATIA 中的建模过程为:(1)按照桨毂尺寸数据,构建桨毂;(2)将桨叶三维型值点导入,按各截面位置连接成曲线,得到型值点云图,如图4所示;(3)通过多截面曲线,曲面填充等操作,得到闭合的桨叶曲面;(4)将曲面缝合,形成实体;(5)以Z轴为轴线,将桨叶进行圆周阵列,得到完整螺旋桨,如图5所示。

图4 桨叶曲面型值点Fig.4 Points of Blade Surface

图5 螺旋桨实体模型Fig.5 Model of the Propeller

3.2.2 CATIA的二次开发

通过编程方式访问CATIA对象有进程内访问和进程外访问两种方式。进程内访问是指脚本和CATIA 在同一进程内运行,即在CATIA环境中运用宏脚本实现。

进程外访问是指脚本运行不由CATIA 调用,CATIA 作为一个OLE(Object Linking and Embedding)自动化服务器,外部程序通过COM(Component Object Model)接口来访问CATIA内部的对象[7]。与进程内访问相比,进程外访问功能强大,能够制作个性化用户界面,创建修改CATIA环境的数据参数,并且拥有丰富的函数库来满足复杂的开发需要[8],因此本文选择进程外访问。

CATIA的二次开发主要有两种:一种采用Automation技术,另一种采用CAA(Component Application Architecture,组件应用架构)技术[9]。

由于CAA 开发中涉及大量复杂的设计模式,而且必须用C++开发,编译环境也必须是达索提供的编译环境,而Automation开发可以基于C++,也可以使用C#、VB.NET等语言,这使得开发难度大大降低。这里以VB.NET为开发工具,利用Automation技术,建立进程外应用程序的方法进行二次开发工作。

在Visual Studio下对CATIA进行二次开发,需要引用CATIA的对象库。与引用Excel对象库步骤相同,引用CATIA对象库只需在添加引用对话框中选择“CATIA V5 GSMInterfaces Object Li‐brary”,“CATIA V5 MecModInterfaces Object Library”,“CATIA V5 PartInterfaces Object Library”,“CATIA V5 ProductStructureIn‐terfaces Object Library”。

上述对象库的引用包含了零件设计、GSD模块、装配设计等基本模块。如需对其他模块中操作,添加相关对象库即可。在引用对象库后,需要在代码最前面加入相关Imports 语句,如下所示:

Imports ProductStructureTypeLib

Imports MECMOD

Imports PARTITF

Imports HybridShapeTypeLib

通过进程外访问CATIA,存在GetObject或CreateObject两种方法连接到CATIA上。其中,GetObject方法是在CATIA已经运行时建立连接,而CreateObject方法则是先启动CATIA后再建立连接。

一般将两种方法合并起来使用,即无论CATIA是否运行,程序都可以访问CATIA,代码如下:

Dim CATIA As Object

On Error Resume Next

CATIA=GetObjec(t,"CATIA.Application")

If Err.Number<>0 Then

CATIA=CreateObjec(t"CATIA.Application")

CATIA.Visible=True

End If

On Error GoTo 0

与CATIA 建立连接,将建模过程宏录制产生的VBScript 脚本进行修改,得到可使用的VB.NET脚本,从而避免大量繁琐代码的编写,提高开发效率[10]。

3.3 软件界面设计

采用VB.NET建立的螺旋桨自动建模软件界面,如图6所示。为了方便操作,界面上设置了三个按钮、若干个TextBox控件以及一个PictureBox控件。通过单击“打开Excel”按钮,可以选择存储数据的Excel文件;单击“读取数据”按钮,软件读取桨叶数据并转换为三维型值点;最后单击“螺旋桨生成”按钮,在CATIA中自动生成螺旋桨实体模型。

图6 螺旋桨自动建模软件界面Fig.6 Interface of Propeller Automatic Modeling Software

4 螺旋桨自动建模方法验证

4.1 桨叶光顺性检查

利用本文建立的螺旋桨自动建模方法,基于P4119螺旋桨二维基础数据,建立桨叶三维模型。利用斑马线检查桨叶曲面光顺性,结果,如图7所示。

图7 桨叶光顺性检查Fig.7 Inspection of Blade Smoothness

由图可以看到,靠近桨毂处的斑马线较为平滑,而叶稍处波动较大,即叶稍处曲面不够光顺,因此需要通过CATIA对其构成曲线进行光顺性调整。

4.2 桨叶模态分析

将建立的p4119螺旋桨单个桨叶模型导入Workbench中,进行模态分析。螺旋桨的杨氏模量为127GPa,泊松比为0.33,密度为8410kg/m3。采用四面体单元进行网格划分,单元长度为2 mm,网格总数为13209,节点总数为24306,如图8所示。

图8 有限元模型Fig.8 Finite Element Model

将桨叶底面设置固定约束进行模态计算,模态分析结果,如表1所示,各阶振型图,如图9所示。

表1 螺旋桨叶前5阶固有频率Tab.1 First Five Natural Frequencies of Propeller Blades

模态分析获得物体的固有频率和振型,并且固有频率是其本身的一种物理特征,由结构、大小、形状等因素决定。根据模态振型图,看出叶梢部分变形最大,如图9所示。与文献[11]计算得到的前五阶固有频率相比,偏差都在5%以内。主要原因是文献[11]将FLUENT 划分的网格模型经过编程处理导入ANSYS 中,有限元模型建模方法以及网格模型不同,使得这里计算结果与其相比有所差别。

图9 单个桨叶前5阶振型Fig.9 First Five Modes of the Single Blade

5 结论

这里利用VB.NET语言开发了螺旋桨自动建模软件,介绍了对Excel及CATIA软件开发内容,通过软件建立p4119模型,并且运用光顺性检查和模态分析检验螺旋桨建模的正确性,得到如下结论:

(1)运用推导的型值点转换公式并且程序化,实现二维基础数据到三维型值点的批量转换,提高转换效率以及正确率。

(2)通过对CATIA 的二次开发,实现螺旋桨的自动建模,避免手动建模的繁琐操作。

(3)基于本文提供的建模方法,可以有效简化建模过程,提高建模效率,为船用螺旋桨提供三维建模工具,为螺旋桨后续水动力特性、结构振动特性等研究提供了便利。

猜你喜欢
坐标值桨叶二次开发
桨叶负扭转对旋翼性能影响的研究
浅谈Mastercam后处理器的二次开发
立式捏合机桨叶结构与桨叶变形量的CFD仿真*
探讨Excel2007与ArcGis10.0结合提取小班四至界限的坐标值
MAPGIS软件平台下地图点位坐标批量输出探讨
例谈课本习题的“二次开发”
ANSYS Workbench二次开发在汽车稳定杆CAE分析中的应用
立式捏合机桨叶型面设计与优化①
关于平面设计软件二次开发的分析
物理坐标图像的应用赏析