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:ProgramFilesAnsys Incv100ANSYSlibintel下;
(2) 用TXT打开ANS_EXT.TBL,在文件尾部追加一条:C:ProgramFilesAnsys Incv100ANSYSLibIntelAnsysToFlac3D.dll ~atf AnsysToFlac3D(64位ATF),其中~atf是在ansys中输入的命令;
(3)设置环境变量(win7下右击计算机->高级系统设置->环境变量),新建一个名为ANSYS_EXTERNAL_PATH,值为C:ProgramFilesAnsys Incv100ANSYSlibintel的环境变量。此环境变量表示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中。