基于VB.NET的二次开发技术在梁结构分析中的应用

  • 投稿鱼头
  • 更新时间2015-09-17
  • 阅读量332次
  • 评分4
  • 61
  • 0

撰文/ 广东海洋大学 吕鸿冠 黄技

本文利用.NET Framework 平台上的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 所示。

其中:左端是固定端约束,右端在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 的电脑上都能使用。