基于VB.NET的二次开发技术
2015-10-15吕鸿冠黄技
吕鸿冠 黄技
本文利用 .NETFramework平台上的 VB.NET语言,针对一个经典的工程问题进行代码编写,开发出一款专用的软件解决一个典型的梁结构分析问题。
一、引言
随着计算机软硬件的迅速发展,许多工程问题已经逐从人工求解向计算机求解转型,即从人工数值分析转向计算机数值模拟。
目前,许多工程师运用有限元分析软件来辅助自己的工程设计。但是,由于软件自身的限制,当一个工程的设计方案需要调整或出现错误时,所有数值模拟都要重新开始,整体上拖慢了工程进度,延长了工程周期。
针对上述问题,不同工程师采用不同的方法解决自己的实际工作需求。二次开发技术是众多解决方法中拥有较高效率、较高精度的一种。本文通过 VB.NET语言自带的函数对 ANSYS Mechanical APDL产生的命令流文件进行调用修改,实现梁结构的“参数化分析”。
二、ANSYS命令流文件
1.ANSYS简介
ANSYS是一款融结构、流体、电磁场、声场和热学等为一体的大型通用有限元分析软件,在多物理场耦合领域具有不可多得的优势,是现代工程师最常用的CAE软件之一。在ANSYS 7.0版本后,ANSYS公司根据用户需求,将ANSYS分成 ANSYS Workbench和 ANSYS MechanicalAPDL两个不同的平台,以适应不同的分析情景。
2.ANSYS的工作平台
ANSYS Workbench平台是一种全新的界面和设计理念,通过自顶向下的分析方式向用户展示了完整的分析过程,其最大的优点是操控性强、参数化程度高、界面友好、接口丰富。ANSYS Mechanical APDL平台即 ANSYS的经典版,虽然界面相对落后,分析步骤较为复杂,可视化程度低,但是其分析过程可直接产生命令流文件。
3.APDL命令流文件
APDL命令流文件是 ANSYS特有的分析文件,通常为 Windows文本格式。它记录了整个数值模拟的过程,包括一系列建模参数、网格划分类型、求解器设置、后处理模块设置等数据。利用命令流文件,只要通过改变其中关键的数据,再通过调用ANSYS Batch(ANSYS批处理命令)进行分析,即可得出模拟结果。本文就是在基于 APDL命令流文件的基础上对 ANSYS进行二次开发。
三、二次开发技术
1.二次开发技术的简介
狭义上的二次开发技术,即在现有软件提供 SDK的基础上,针对用户的特别需求,利用 SDK中公开的 API(应用程序接口),通过编程语言来访问软件原有的一些功能,即开发出一款用户专用的软件。总的来讲,二次开发技术具有以下优点。
(1)相对于完全的定制开发,二次开发工作量小,效率高,风险低,周期短。
(2)二次开发在原有产品的基础上进行,故原产品的功能和优点能有很好地继承。
(3)解决了单纯的产品个性化需求不能满足的问题。
2.二次开发平台的选择
Microsoft Visual Studio(简称 VS)软件是美国Microsoft公司的开发工具包系列产品。VS是一个完整的开发工具包,包括了整个软件生命周期中所需要的大部分工具,如代码管控工具、UML工具和集成开发环境 (IDE)等。所写的目标代码适用于微软支持的所有平台,包括 Microsoft Windows、Windows Phone、.NETFramework、.NET Compact Framework和 MicrosoftSilverlight等。
3.二次开发编程语言的选择
Visual Basic.NET语言是基于微软公司的 .NETFramework上的面向对象的编程语言,通常简称 VB.NET(非 VB)。
VB.NET是当今 Basic系语言中最完善的一种,其可视化操作与拖拽化编程环境赢得了广大用户的信任。与 VB不同,VB.NET具有更加完善的功能。
(1)真正面向对象的程序设计。
(2)强大的事件驱动功能。
(3)软件的集成式开发。
(4)结构化的程序语言设计。
(5)强大的数据库访问功能。
(6)支持对象的链接与嵌入、动态交换、动态链接等技术。
(7)网络编程功能。
基于以上优点,VB.NET是进行软件二次开发设计的理想编程语言。
四、APDL二次开发的可行性
ANSYS APDL平台进行有限元分析时,由于软件自身的限制,导致当模型改变或参数出现变动时,整个数值模拟过程重新进行,这过程包括“重新建模—重新定义材料—重新划分网格—重新定义边界条件—重新设置求解器—重新求解”等步骤,需耗费大量的时间,重整体上拖慢工程进度。
APDL每次进行分析时,在工作目录下会产生一个命令流文件,文件里记录了项目的各种分析参数。利用VB.NET的文件操作函数,在指定目录下生成新的文本文件,通过 VB.NET中的数据写入功能,将用户自定义的参数赋予新的文本文件,从而形成新的命令流,再通过函数调用 ANSYS Batch进行分析,并通过图片控件直接显示分析结果(各类分析云图),实现真正意义上的“参数化分析”。
五、梁结构分析的二次开发实例
本文利用工程上一个经典的梁结构结合 VB.NET进行ANSYS的二次开发,阐述二次开发的主要过程和实际的工程意义。开发的软件如图 1所示。
1.分析模型
本文采用的是工程上一个经典的工字梁结构,具体模型如图 2所示。
图2梁结构模型
其中:左端是固定端约束,右端在 XZ平面内可左右滑动, Y方向不具自由度。梁截面是工字梁结构,具体的参数意义如图 2所示。
2.命令流文件的获取
进入 APDL界面,设置 Preference为 Structural。依次点击Preprocessor—Element Type—Add,选择梁单元为 BEAM189。依次点击 Section—Beam—CommonSections,选择工字梁界面,输入相关参数。依次点击Modeling—Create—Nodes,按照图 2完成模型的建立。依次点击 Solution—Define Loads—Apply完成对模型的约束和荷载的定义。上述步骤完成后,点击 Solve进行求解,当提示“Solve is done”时,进入工作目录,将生成的命令流文件保存(默认的命令流文件是名为 file的 Windows文本)。
3.代码编写
得到命令流文件后,利用Microsoft Visual Studio2012平台上的 VB.NET语言对命令流进行二次开发。
向 Form1窗口添加一个 Button,并对 Button添加一个 Click事件响应。首先,需指定一个目录生成新的命令流文件,这里指定默认目录为工作环境,并用 Sw.WriteLine函数对新的命令流文件写入原命令流数据,语句中需用户自定义的参数部分留空。部分关键代码如图 3所示。
将分析语句写入新的命令流后,需定位 ANSYS原程序,这里通过 Shell函数实现该功能。部分关键代码如图 4所示。
接下来,需要建立一个控件存放ANSYS的安装路径,以便通过 Click事件响应将路径位置赋予命令流,这里通过定义 System.IO.Stream变量来实现。部分关键代码如图 5所示。
最后,为了保证每次分析结果不与上次分析结果混淆,需在每次新分析前对上次分析结果进行清理,这里通过 kill函数实现这个命令。部分关键代码如图 6所示。
完成第一个 Button控件的编写后。需添加一个 PictureBox控件和 4个 Button控件分别控制显示 “位移、应力、剪力、弯矩”四张云图。这里,利用赋值函数直接将图片名赋给PictureBox控件。部分关键代码如图7所示。
完成上述代码最关键部分的编写后,再对整体代码和软件界面进行细节上的修改,全部完成后,导出最终的软件应用程序。
4.实例演算
完成软件的设计(图 1),下面通过一个实例来演示软件的功能。本次分析参数如表所示。分析结果如图8~11所示。
六、结语
本文通过利用 VB.NET对一个经典的工程梁结构问题进行 ANSYS Mechanical APDL平台上的二次开发,设计出一款用户个性化的软件,详细展示了二次开发的工作流程和实际应用意义。在实际工作中,分析模型往往比该模型复杂,故开发用户个性化的软件具有重要的现实意义。经过上面的分析,可知二次开发的具有如下优点。
(1)参数化分析:通过实例演算可以看出,用户通过自定义界面完成参数的输入,无论改变哪个变量,均可通过界面一次性完成,免去了重建模等复杂步骤,极大缩短了分析时间。
(2)继承性好:因为求解处理器仍然是 ANSYS的处理器,故用户可将注意力集中在界面窗口设计和事件响应上,而不必关心计算结果是否准确。
(3)界面友好:通过软件最终的设计结果可看出,开发出来的软件界面友好,即使是不熟悉甚至是未曾学过ANSYS的用户仍可进行有限元分析,并得到准确的分析结果。
(4)软件通用性强:VB.NET编写的 Windows程序能在任何安装有 Windows系统的电脑上使用,故只要在安装有 Windows和 ANSYS的电脑上都能使用。