您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > AutoCAD与Ansys数据接口的开发研究
1AutoCAD与Ansys数据接口的开发研究及在工程中的应用摘要:利用AUTOCAD中VBA语言进行二次开发,真正实现了在AutoCAD中建模,将数据导入到ansys进行计算分析的方法。通过淮河临淮岗拦河大坝主坝工程的有限元前处理工作表明,该方法可以快速完成有限元前处理工作,具有较强的实用价值。关键词:AutoCAD,ansys,VBA,二次开发1、问题的提出随着大型通用有限元分析软件Ansys在国内各领域的广泛应用,对Ansys的研究也越来越多。在工程计算领域,Ansys以其强大的结构分析功能,为复杂问题的研究提供了强有力的工具,越来越多的设计人员开始利用ansys进行计算分析[1-3]。众所周知,在有限元分析中,建模的准确及有限元网格的质量对计算结果有着至关重要的影响[4]。在复杂问题有限元分析过程中,建模所花费的时间往往非常可观。尽管Ansys的建模技术很强大,但和专业绘图软件AutoCAD相比,其效率仍然相差很多。并且几乎所有的工程图纸都是在AutoCAD平台下绘制的,如果直接能够从AutoCAD中将图元信息导入到Ansys中,将是一个大大提高建模效率的手段。遗憾的是,尽管Ansys提供了和AutoCAD的接口(SAT文件)[5],但能够导入的图元很有限,仅限于面域和实体,并且不支持DXF格式的文件的导入,对于稍复杂的工程问题,采用直接导入的方法根本无法实现。由于AutoCAD都有着良好的开放性,为用户提供了许多二次开发的工具。通过利用二次开发的手段实现AutoCAD向Ansys传递数据,成了解决问题的方向。AutoCAD下二次开发的语言很多[6]。如Autolisp、ADS、ARX、VISUALLISP、VBA等。无论用何种语言只要思路正确,都可以达到目标。但综合比较运行速度、界面生成、编程实现难易各方面因素,利用VBA语言无疑是最理想的途径。VBA语言[7]最早是建立在Office97中的标准宏语言,其全称是VisualBasicforApplication,它的魅力来自两个方面:1、它与visualbasic有着几乎相同的开发环境和语法,功能强大且易于掌握。2、在于它的forapplication功能,即它的针对性非常强。它驻留在主程序的内部,使其结构精简,且代码运行效率非2常高。AutoDesk公司自它的AutoCADR14.01版开始,内置了VBA开发工具,并且逐步加大了对VBA重视的力度,使得VBA在短时间内成为二次开发的利器。本文利用VBA语言,实现了在AutoCAD下将任意复杂的二维模型导入到ANSYS的方法,为ansys的快速建模提供了一个有效的途径。2、解决的思路及程序实现大量的工程问题,不仅对结构部分需要计算,还要考虑结构部分和地基部分的共同作用。以水电站的地下厂房为例,对地下厂房的输水管等管线均需要划分超单元进行模拟,局部的地方需要手工加密,同时还要考虑断层、地层等因素的影响,对大型的工程而言,划分的平面超单元有上百个。这样,计算区域的建模,如果利用ansys来完成,工作十分繁重且很容易出错。然而,这项工作又必不可少,因为ANSYS网格生成功能再强大,也不会自动识别需要重点研究的区域。通过AutoCAD来完成计算区域的建模工作将大大提高效率。因为在AutoCAD中,有工程图纸作为底图,线段的绘制、修改都比ansys方便得多。有限元前处理工作主要是获得结点坐标信息、单元信息及材料信息,在获得结点坐标信息时,通过查询AutoCAD下每一条线段属性的方法并不能得到全部结点坐标信息。因为在AutoCAD中,两条线段的交接大多属于图1的方式,这样在查询线段的属性时,无法得到交点的坐标信息,这样就少了一个有限元结点。如果将所有类似的交接打断重画,成为四条线段(图2),则耗时太多,效率反而更低,无疑是不可取的。所以,只能够通过查询所有交点的坐标才能够获取正确的结点坐标信息。在VBA语言中,有一个非常有用的函数Getpoint,充分对该函数进行利用,可以快速地将AutoCAD中将所需的结点信息、单元信息写入数据文件中。Getpoint函数作用是将用户在屏幕上选择点的坐标以三维坐标形式赋给变量。程序语句为:图1图23point1=ThisDrawing.Utility.GetPoint(,“enterapoint”)这样,用户点击屏幕上任意一点时,AutoCAD系统便将该点的坐标存放在变量point1中,如果在VBA程序中先引用Getpoint方法,再将这一变量写入一个文件,这样就可以将该点的坐标属性存入文件中了。为了能够对点击过的所有结点坐标快速存入数据文件中,其程序实现步骤如下:首先将打开文件的模式设定为append(添加),在程序中利用循环功能,就可以实现将所有点击过的结点的坐标保存在同一个数据文件中。为了使程序更加完善,可以在程序中设置一些控制变量,如指定每点击多少个结点后,以消息框的形式来反馈结点坐标信息,并询问是否将其保存到文件;可利用Addtext函数,将结点编号在鼠标点击结点的同时也绘在图上。Addtext函数共有三个参数:插入文字的坐标,文字内容,文字大小。这三个参数都可以以变量的形式给定。由于在程序中已经利用Getpoint方法获取了结点的坐标,文字内容就是循环变量的值,文字大小根据图纸的大小适当调整。这样就可以实现将编号自动写在图上,通过修改文字内容变量的起始值,还可以从任意数字开始给结点编号。为了将生成的数据文件直接导入到ansys中,需要利用ansys中的命令流[8]语句。在ansys中,生成关键点的命令是:k,npt,x,y,z,k是关键点keypoint的缩写,npt代表关键点编号,x,y,z为坐标值;生成结点的命令是n,node,x,y,z;n是node的缩写,node代表结点编号,x,y,z代表坐标值;如果将点定义为关键点,则可以通过关键点生成面,从而可以利用ansys对面进行剖分;如果将点定义为结点,则通过结点直接生成单元,不能够利用ansys继续对已经生成的单元剖分;这样在VBA程序中,在print语句中,结点坐标前加上ansys命令所规定的相应字符,则可以实现每点击一个结点,一条ansys的命令就写入到文件中,当点完所有结点,则ansys的点信息命令也同时生成。如果认为在AutoCAD中网格划分已经足够,可以选择以结点形式写入文件,如果需要继续在ansys中剖分,可以选择关键点形式写入文件。生成了结点信息文件后,单元信息文件也可以通过在AutoCAD图上点击结点的方式获取,其思想仍然是利用Getpoint方法,在程序中,先利用open语句打开结点坐标文件,将所有的结点坐标的值赋给一个数组变量,当再次点击任一结点时,利用Getpoint方法得到的该点坐标,与数组变量进行比较,找到和该点坐标一致的结点,这样就得到了该结点的编号。再将该编号写入另一文件中,这样每点完一个单元,就可以产生一条单元信息,当全部的单元结点都点完后,单元信息也就形成了。在ansys中,生成面的命令是A,P1,P2,P3,P4……,A是area的缩写,P1,P2,P3,P4……是形成面的关键点编号,生成单元命令是E,I,J,K,L,M,N,O,P,E是element的缩写,I,J,K,L,M,N,O,P是形成单元的结点编号。同样,在VBA程序中,在print语句中,写入单元文件的时候,可以在单元编号4的相应位置加上ansys命令所规定的字符。当点完全部单元,则ansys所需的面信息工作也随之完成。当单元较多的时候,常常会遗忘下一个单元的位置在什么地方。利用VBA中的zoomcenter方法可以很好地解决这个问题。zoomcenter函数参数为:屏幕中心点的坐标,放大系数;在对单元进行编号时,利用addtext函数写单元编号,利用Getpoint函数保存该单元的位置传递到zoomcenter函数中,这样每点完一个单元的单元信息后,下一个单元会自动出现在屏幕中央,不用再移动图纸就可以完成全部单元的生成。生成ansys所需的前处理命令流后,在文件头加上/prep7,表明进行前处理的工作。预先在文件中定义单元类型(ET),材料号(MAT),然后通过ansys的utilitymenu-file-readinputfrom菜单,读入命令流文件,立刻AutoCAD下所绘制的平面图便出现在ansys中,并且在AutoCAD下定义的单元号和ansys的面(单元)号完全一致,这样就可以利用ansys的网格剖分功能继续对其细剖,若是以单元格式导入的,则可以直接进入施加荷载阶段。其实施加荷载的工作也可以在VBA中利用select和inputbox函数完成,只是这一步在ansys中的操作并不复杂,所以就不必对其开发了。3具体实例笔者利用ansys对淮河临淮岗拦河大坝主坝工程[9]进行各荷载工况下的应力分析时,前处理工作采用了上述的方法,步骤如下:1、分析工程图,在AutoCAD下划分超单元网格。图3是该拦河大坝土料及防渗布置示意图,在此图的基础上划分超单元网格(图4),从图4可见,主坝的各土层交界、防渗墙、排水砂垫均划分了单元,共有超单元62个,结点80个。图3主坝断面各土料及防渗示意图52、用鼠标点击单元内的任意一点,对单元进行编号,同时利用getpoint函数记录下单元位置,生成单元位置文件;3、用鼠标点击每个结点,对每个结点进行编号,自动生成ansys命令所需的关键点信息文件;4、对每一个单元的各结点按顺时针方向点击,自动生成ansys命令所需的面信息文件;该文件内容以添加的形式写入到关键点信息文件中。5、打开生成文件,在文件头加上/prep7,定义单元,材料类型(这一步也可以在程序中用相应语句写入),保存后导入ansys中。6、利用ansys的网格剖分功能,对超单元进行细剖,并生成三维有限元网格,见图5笔者利用上述方法,整个建模、剖分的过程仅用了30分钟,效率的提高是非常显著的,并且通过先剖分超单元,然后细分网格的方法,保证了网格生成的质量。3、结语在autocad下建模及划分超单元,将有限元信息导入到ansys是一项很有意义的研究工作,对提高有限元的前处理效率有着重要的意义。本方法无需高深的数学手段,利用VBA作为开发工具编制相应程序,结合ansys命令流文件,适合于任意复杂的二维平面的有限元快速建模工作。熟练掌握该方法后,对上千个超单元的大型有限元前处理工作,也只需一个上午就可以完成,大大提高了工作图4主坝断面的超单元网格划分图5主坝的三维有限元网格剖分6效率。参考文献[1]ansys软件在大坝施工仿真中的应用秦杰,伏义淑,黄承逵水利水电技术,vol232002.4[2]应用ansys软件进行大坝动力计算抗震分析赵永宣水力发电,2000.12[3]张燎军,苏超,翟利军等,乌江构皮滩双曲拱坝整体稳定性分析,水力发电,2003.2[4]陈和群,彭宣茂,有限元法微机程序与图形处理,河海大学出版社,1992.11[5]谭建国,使用ANSYS6.0进行有限元分析,北京大学出版社,2002.5[6]AutoCAD14入门与提高张跃峰陈通清华大学出版社1998.10[7]王钰,用VBA开发AutoCAD2000应用程序,人民邮电出版社,1999.10[8]陈精一,蔡国忠,电脑辅助工程分析:ANSYS使用指南,中国铁道出版社,2001[9]临淮岗洪水控制工程初步设计报告-工程布置及建筑物淮委规划设计研究院2001.5DataExchangeStudyonAutoCADwithAnsysandApplicationtoEngineeringYanFeiShanghaiMunicipalEngineeringDesigninstitute,Shanghai,200092abstract:UsevbaprogramdevelopinAutoCAD,itisrealizedtobuildmodelinAutoCADandanalysisinansysbythedataimportedfromAutoCAD.thefempre
本文标题:AutoCAD与Ansys数据接口的开发研究
链接地址:https://www.777doc.com/doc-2902284 .html