0. 说明

为方便计算建模,分别采用VB.Net、C#和C++编制了几个插件,(ACAD_SurferAns.dll、AutoCADToANSYS.dll、AnsysToFlac3D.dll),下面解释几个插件配合使用,根据AutoCAD地形图建立ANSYS和Flac3D实体模型的过程。

 

1. 软件环境

(1)AutoCAD(2007~2013,测试于win7_64bit下AutoCAD2012)

(2)Surfer(测试于Surfer 11、Surfer 12)

(3)ANSYS(测试于ANSYS10.0、ANSYS12.1)

 

2. 加载插件方法

 

2.1 AutoCAD插件

(1)打开AutoCAD,输入NETLOAD,分别加载AutoCADToANSYS.dll和ACAD_SurferAns.dll;

(2)更多方法见 http://forum.simwe.com/thread-1070119-1-1.html 。

 

2.2 ANSYS插件

http://forum.simwe.com/thread-1075857-1-1.html ,http://forum.simwe.com/thread-1107630-1-1.html,注意32位和64位的区别,以32位为例。

(1)将AnsysToFlacD.DLL放入C:\ProgramFiles\Ansys Inc\v100\ANSYS\lib\intel下;

(2) 用TXT打开ANS_EXT.TBL,在文件尾部追加一条:C:\ProgramFiles\Ansys Inc\v100\ANSYS\Lib\Intel\AnsysToFlac3D.dll ~atf AnsysToFlac3D(64位ATF),其中~atf是在ansys中输入的命令;

(3)设置环境变量(win7下右击计算机->高级系统设置->环境变量),新建一个名为ANSYS_EXTERNAL_PATH,值为C:\ProgramFiles\Ansys Inc\v100\ANSYS\lib\intel的环境变量。此环境变量表示Ansys外部命令(放置AnsysToFlacD.DLL)的文件路径。

 

3. 操作流程

(1)准备地形图。一般设计文件会给出等高线形式的三维地形图,从地形图中选出要建模的部分,并剔除杂线,只保留等高线。

示例原始地形图,见图1。

图1 原始地形图

 

选出合适的部分,删除文字、无关点线,只保留等高线,得到干净的地形图,如图2。

* 等高线支持“直线”、“多段线”、“三维多段线”、“样条曲线”;

* 删除杂线的方法可以用快速选择的方式来实现;

* 地形图必须为矩形的,可绘制矩形后进行修剪地形线。

 

图2 修整后的地形图

 

(2)画隧道及地层线

通过旋转视图调到合适的视角,绘制隧道结构与地层线,目前只能简单的进行地层分界,复杂地层情况只能在有限元软件中处理。

* 图3中红色线条为一矩形(也可使用PL命令绘制),以确定基准面和尺寸范围使用。

* 视图必须为“视图→三维视图→俯视”,然后用3DFORBIT命令旋转视图。不要采用其他视图,因为插件中提取是的局部坐标系的坐标而非世界坐标系。

 

图3 绘制隧道结构与地层线

 

(3)生成地形部分

AutoCAD加载ACAD_SurferAns.dll成功后,执行SFANS命令,输入各参数后,生成ANSYS命令流文件,本例SurfAnsCmd.txt保存于桌面,如图4。

 

图4 执行SFANS,生成地形部分ANSYS命令流

* 此处借用Surfer的空间插值功能;

* 地形等高线:拾取各等高线,不要选择无关的线;

* 地域范围:拾取红色的矩形;

* 原点:拾取红色矩形上的某一点,矩形相当于地面,选择地面上的一点作为原点。而且要记住此点,因为在第四步中还要生成隧道和地层的命令流,他们需要同一个原点;

* x、y方向节点数,由于ANSYS中样条曲线的限制,节点数不要超过12。

 

(4)生成隧道部分

AutoCAD加载AutoCADToANSYS.dll成功后,执行ACTAN命令,注意拾取红色矩形以下的曲线集,原点要与第三步相同,如图5。将生成的命令流粘贴到第三步SurfAnsCmd.txt之后,方便一次性执行ANSYS命令流。

 

图5 执行ACTAN,生成隧道部分ANSYS命令流

 

(5)ANSYS建模

打开ANSYS,读取命令流文件,生成上部地形的体和下部隧道地层的线框,如图6~7。

 

图6 读取命令流文件

 

图 7 显示线框

 

接下来处理下部的隧道和地层部分,建面→拉伸→切割,压缩点号,使上下部分合成一整体,如图8所示。最后划分网格,如图9所示。

 

图8 整体模型

 

图 9 网格划分

 

(6)生成Flac3D模型

ANSYS中加载AnsysToFlac3D.dll成功后,执行~atf命令,导出Flac3D网格如图10。

图10 导出Flac3D网格文件

(7)生成Flac3D模型

打开Flac3D,导入生成的网格文件,得到Flac3D模型,如图11。

图11 Flac3D模型

 

------------------------------------------------------------

4. 后记

(1)比起C++来,C#进行AutoCAD二次开发效率更高,所以采用了C#开发AutoCADToANSYS.dll;ACAD_SurferAns最初是用VBA写的一系列脚本,后来想打包的时候发现用VB.Net直接翻译更快捷,所以采用了VB.Net;AnsysToFlac3D.dll采用C++对ANSYS二次开发,在吴冬博士的基础上优化改进而来,以前研究3DEC的时候写过ABAQUSTo3DEC.exe(ABAQUS的网格划分确实比ANSYS优秀,自用未发布),想整合写个AnsysToItasca.dll,把ANSYS转3DEC的功能也加进去,但后来呵呵,毕业之前不再瞎整。。。

(2)上述方法调用了Surfer的插值功能(也可以用MATLAB的插值,只是调用起来太慢),后来想自己写空间插值,但由于各种原因无精力去优化而搁置。

(3)由于ANSYS由样条曲线拉伸成曲面时点数的限制,在遇到复杂地形面时精度损失较大,可以采用其他建模软件例如CATIA、Civil3D生成体导入到ANSYS中。

posted on 2019-05-08 14:28  蔡钊  阅读(1715)  评论(2编辑  收藏  举报