计算机应用ComputerApplications
FEMAP二次开发技术介绍与应用
张志康1,司南1,陈乐昆1,于鑫洋2,李闯1
(1.中国船舶及海洋工程设计研究院,上海200011;
2.秦皇岛海事局,河北秦皇岛066000)
摘
要:为提高CAE建模和分析效率,对FEMAP常见的几种二次开发方式进行介绍和对比分析。采用VisualBasic.NET语言,通
过进程外开发方式,结合工程实例,以船舶水动力网格的数据接口开发详细介绍开发过程。研究表明,FEMAP二次开发技术实用且高效,尤其是进程外开发方式,能为工程实际问题定制快速解决方案,有利于提高工作效率。
关键词:FEMAP;CAE;二次开发;VisualBasic.NET中图分类号:TP319
文献标识码:A
文章编号:1003-7241(2021)004-0054-04
IntroductionandApplicationofFEMAPSecondaryDevelopmentTechnology
ZHANGZhi-kang1,SINan1,CHENLe-kun1,YUXin-yang2,LIChuang1
(1.MarineDesign&ResearchInstituteofChina,Shanghai200011China;2.QinhuangdaoMaritimeSafetyAdministration,Qinhuangdao066000China)
Abstract:InordertoimprovethemodelingandanalyzingefficiencyofCAE,severalsecondarydevelopmentmethodsofFEMAP
areintroducedandcomparedinthispaper.Anengineerprojectofdatainterfacedevelopmentforshiphydrodynamicmeshisadoptedasanexampletointroducethedevelopmentprocessindetailbyusingthe“Out-ProcessApplication”method,basedonVisualBasic.NETlanguage.ItcanbefoundthatthesecondarydevelopmentofFEMAPisverypracticalandef-ficient,especiallythe“Out-ProcessApplication”methodiscapableofprovidingengineerprojectswithfastbutcustom-izedsolutions,helpfultoimproveworkefficiency.
Keywords:FEMAP;CAE(ComputerAidedEngineering);secondarydevelopment;VisualBasic.NET
1引言
FEMAP是由SiemensPLMSoftware公司开发的一款先进的有限元分析软件,最早始于1985年。它拥有强大的有限元前后处理功能,支持所有主流CAD(Com-puterAidedDesign)软件的数据导入和导出,不仅自带基于MSCNastran改进开发的NXNastran求解器,还支持各类常用求解器。此外,Windows风格的用户界面直观友好,操作便捷高效,该软件已在机械、船舶、航空航天和汽车等制造业领域应用广泛[1]。
FEMAP作为一款通用有限元软件,为满足不同专业用户的使用需求,提供完全开放的二次开发接口,帮助用
收稿日期:2020-06-16
54
户开发专业定制工具,大幅地提高建模和分析计算效率。
一般主流CAE(ComputerAidedEngineering)软件均支持二次开发功能,以扩展原软件功能,提高分析效率。著名的MSCPatran支持自带PCL语言(PatranCo-mmandLanguage)来实现结构建模和分析的参数化[2],但该语言不易掌握,用户界面开发也十分繁琐。ANSYS采用参数化设计语言APDL(ANSYSParametricDesi-gnLanguage)和用户界面设计语言UIDL(UserInter-faceDesignLanguage)[3],在高校科研中运用广泛。AB-AQUS支持通用开发语言Python实现自动前后处理功能[4],Python语言具有易读、易学和易维护等特点,且拥有丰富强大的库,使得ABAQUS在算法类开发方面优势突出。
计算机应用ComputerApplications
《自动化技术与应用》2021年第40卷第4期
目前国内FEMAP应用相对较少,但凭借其强大的技术平台和实用价值,它定将拥有良好的应用前景。国内也有一些关于FEMAP二次开发的应用研究[5-9],但都没有全面地、系统地进行介绍。因此本文结合现有的开发经验,对FEMAP二次开发技术和简单的实例进行一些介绍,希望能对工程开发人员有所指导与启发。
直接编写的难度很大,所以不适合大规模开发,只适用于简单的重复性操作,应用场景较为局限。
2FEMAP二次开发技术
一般而言,CAE产品的二次开发方法主要有两种:(1)基于软件自身所提供的开发平台,即进程内应用程序方式;(2)基于OLEAutomation的工具,通过第三方工具的开发方式,即进程外应用程序方式。FEMAP软件支持这两类开发方式,以下分别做简要的介绍。
图1进程内开发窗口
2.2进程外开发方式
进程外开发方式,即通过由第三方软件编制的程序
来访问主程序。FEMAP具有开放式的用户化功能,提供二次开发接口实现外部通信,以COM(ComponentOb-jectModel,组件对象模型)为基础,支持各类语言,包括VisualBasic(简称VB)、VisualBasicforApplication(简称VBA)、VisualBasic.NET(简称VB.NET)、C和C++等,通过API访问它的所有功能,具有非常高“开放性”。API(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。在这里,API即是FEMAP预先编好的一组函数,它们保存在动态链接库文件中,供开发者访问和调用。
FEMAPAPI是一个面向对象(ObjectOriented)开发方法的系统,具有易维护、易开发和可扩展性强的开发优势,层次简洁分明,如图2所示。在该系统框架下,所有的数据被封装成了对象的形式,主要包括根对象FEMAP
2.1进程内开发方式
进程内开发是指程序脚本和FEMAP在同一进程内
运行,该方式通过记录、修改和播放宏(Marco)实现。
通过FEMAP主菜单栏Tools>Programming>Pro-gramFile进入开发窗口,如图1所示。它提供记录、保存、调试和运行等基础功能,可以完整记录使用者的每一步操作,包括调用FEMAP相关命令的编号、键盘输入和命令注释等信息。如图1中所示代码是由创建空间坐标点(5,10,15)的操作自动生成的,“CreatePoint”为命令的功能注释,{~1152}代表内部命令编号,5、10和15则为键盘输入值。当成功创建宏之后,便可快速重复所记录的操作,且支持修改关键参数,最后可保存成prg或pro格式文件。
该方式虽然简单易操作,但功能性和灵活性较差,且
图2FEMAPAPI系统
55
《自动化技术与应用》2021年第40卷第4期
计算机应用ComputerApplications
Application和其他子对象,每一个对象都有各自的属性(Property)和方法(Method)。
FEMAPApplication作为根对象,是进程外开发时必不可少的。编写程序时,必须首先定义一个根对象,才能建立该程序与FEMAP之间的连接。然后便能创建不同类型的子对象,如与几何相关的点(Point)、线(Curve)和面(Surface)等,以及和有限元相关的单元(Element)、材料(Material)和属性(Property)等。它们也都拥有各自不同的属性和多种方法,例如Property具有颜色、类型和名字等属性,还有激活、选择和删除等方法。由此可见,利用进程外二次开发方式能够非常方便地对FEMAP对象进行创建、调用和修改等操作。
FEMAP本身内含简易的开发编辑器,可通过主菜单栏Tools>Programming>APIProgramming打开,如图3所示。它类似于VisualBasic6.0程序,拥有编写、运行和调试等基础功能,还包含一些简单的标准控件,可创建自定义用户界面,但目前仅支持VisualBasic语言,且功能性和专业性均有所欠缺,因此不推荐使用它进行开发工作。
择一个简单的开发实例对FEMAP二次开发技术做进一步介绍。该程序开发了船舶外壳水动力网格文件的数据接口,实现了水动力网格的导入和导出功能,能够快速生成和修改特定格式的水动力网格文件,为船舶水动力建模和分析提供便利。
该程序基于FEMAP11.4.2版本和.NET开发框架,采用VB.NET语言,通过进程外开发的方式,使用功能强大的VisualStudio2012作为集成开发环境编写。
3.1连接FEMAP,创建根对象
首先,启动VisualStudio软件,新建一个“窗体应
用”。从主菜单栏Project>AddReference打开弹窗(如图4所示),在列表中选择“FEMAPv11.4.2TypeLi-brary”项并确定。如果没有,可通过Browse手动在FE-MAP安装路径下找到femap.tlb类型库文件并引用。这样编写代码时,就会有当前对象的方法和属性提示及自动完成语句的功能,可大幅地提高编程效率。
图4
图3
自带开发编辑器
…
添加类型库文件
首先,创建根对象并连接FEMAP程序,代码如下:DimAppAsObject
App=GetObject(,\"Femap.model\")…
总之,相比于进程内开发方式,进程外开发更具优势,其功能更为强大,更具灵活性,且支持多种通用语言。因此对于开发者而言,该方式简单易上手,可快速开发出实用的小插件,熟练掌握后还能开发大型的专业软件,例如船舶行业内,世界知名的法国船级社的VeristarHull软件和美国船级社的SafeHull子系统都是基于FEMAP采用该方式开发而成。
3.2核心代码
对于不同船舶水动力分析软件,船体外壳水动力网
格文件的格式均不同,但它本质上是一种比较简单的有限元文件,主要数据信息包括:
1)点(Node)的编号和三维坐标值;
2)板单元(Plate)的编号和所含上述各个node的编号;3)板单元的法向,由node编号的排列顺序决定,读写文件时应统一。
以下分析某特定格式文件导入功能的核心代码:'选择需要导入的文件
3开发实例
基于FEMAP二次开发功能和工程实际需求,作者已经开发了许多实用的功能,涉及模型快速创建、优化操作、质量检查、数据接口开发和专业化功能等方面,切实提高了工作效率。为充分阐述开发过程和特点,以下选
56
计算机应用ComputerApplications
《自动化技术与应用》2021年第40卷第4期
App.feFileGetName(\"Selectonehydrofiletoread\file\FileOpen(1,fileName,OpenMode.Input)…
'循环读取文件中的每行文本信息DoWhileNotEOF(1)txtline=LineInput(1)a=Split(txtline,\"\")…
'读取点的编号和坐标值,并创建相应的点node=App.feNode
node.x=CDbl(a(1)):node.y=CDbl(a(2))node.z=CDbl(a(3))node.Put(CInt(a(0)))…
'读取板单元的编号和组成点的编号并创建网格plate=App.feElemplate.type=17plate.topology=4Fori=0To3Step1plate.Node(i)=CDbl(a(i+1))Next
plate.Put(CInt(a(0)))…Loop
上述核心代码中,主要调用并创建了根对象所包含的Node和Element两个子对象。继续充实、完善上述代码,便可实现导入功能。
弹窗中选择水动力网格文件,然后FEMAP软件将快速自动生成水动力网格,这样就完成了模型的导入,如图5所示。
最终经过测试,程序运行正常,功能完整。至于水动力网格的导出功能,其实现思路比上述功能更简单,只需遍历FEMAP文件中所有的点和板单元的属性,读取关键信息,写入对应格式的文件即可,此处不再展开介绍。
4结束语
FEMAP作为一款先进的有限元分析软件,不仅具有强大的前后处理能力,而且还提供完全开放的二次开发功能。通过研究、对比分析及实例开发可得到以下结论:
1)FEMAP的进程内开发方式简单易操作,适用于实现简单的重复性操作;
2)进程外开发方式更加灵活,功能也更为强大,且支持多种通用语言,能够快速开发定制化程序,为实际问题提供解决方案,可以显著提高设计与研究的工作效率,尤其是采用VB.NET语言,开发效率非常高;
3)除了实例开发所涉及的快速建模功能外,还可以考虑在自动化加载和智能化后处理等技术方向做更多的二次开发研究。
参考文献:
[1]虞驰程,胡以怀,吴漪.基于Femap的风帆基座局部强度分析[J].船舶工程,2015,37(10):36-39.
[2]张军彦,李昌华,李晓辉.基于MSC.Patran界面的PCL二次开发[J].现代电子技术,2010,33(16):17-19,22.
[3]张建业,杨甫勤,钱继锋.基于APDL和UIDL的AN-SYS二次开发技术及其应用[J].中国制造业信息化,2006(23):79-81.
[4]钟同圣,卫丰,王鸷,等.Python语言和ABAQUS前处理二次开发[J].郑州大学学报(理学版),2006(1):60-64.
[5]宋吉哲.FPSO全船有限元建模方法研究[D].天津:天津大学,2006.
[6]黄飞.网络环境下桥式起重机参数化CAE技术研究[D].太原:中北大学,2012.
[7]张志康,韩钰,林焰,等.结构有限元模型局部细网格快速生成方法[J].船舶与海洋工程,2017,33(6):66-70.
[8]孔凡胜.唇形密封圈性能仿真与优化技术研究及平台开发[D].杭州:杭州电子科技大学,2019.
[9]孙景峰.基于磁阻率张量的旋转电磁场数值计算研究[D].天津:河北工业大学,2010.
3.3程序测试
图5导入水动力网格
作者简介:张志康(1991-),男,硕士,工程师,研究方向:船舶结构安全评估。
在VisualStudio中创建“Button”按钮控件并创建Click响应事件,接着按F5运行程序,点击“Button”后在
57
因篇幅问题不能全部显示,请点此查看更多更全内容