之前有人问 ansys 面单元能导入吗 。不好意思一不小心删掉那一楼了。 现在回答。也能导入。方法和实体单元导入步骤一模一样。只不过把那一段语言换成下面这一段。实测好用。 *get,nodenum,node,,num,max ! 获得节点的数目 *dim,nodepos,array,nodenum,3 ! nodepos存放节点的坐标 *do,i,1,nodenum,1 *get,nodepos(i,1),node,i,loc,x !获得节点的X坐标 *get,nodepos(i,2),node,i,loc,y *get,nodepos(i,3),node,i,loc,z *enddo *get,elemnum,elem,,num,max !得到单元的总数目 *dim,elemlist,array,elemnum,4 !单元包含的节点列表,指定每个单元包含4个节点,根据情况修改 *do,i,1,elemnum,1 *do,ii,1,4,1 *get,elemlist(i,ii),elem,i,node,ii !获得节点编号 *enddo *enddo *cfopen,miancad,txt !打开文件,写入数据 *do,i,1,elemnum,1 *vwrite, ('3dface') n1=elemlist(i,1) n2=elemlist(i,2) n3=elemlist(i,3) n4=elemlist(i,4) a11=nodepos(n1,1) a12=nodepos(n1,2) a13=nodepos(n1,3) a21=nodepos(n2,1) a22=nodepos(n2,2) a23=nodepos(n2,3) a31=nodepos(n3,1) a32=nodepos(n3,2) a33=nodepos(n3,3) a41=nodepos(n4,1) a42=nodepos(n4,2) a43=nodepos(n4,3) *vwrite,a11,a12,a13 (f16.6','f16.6','f16.6) *vwrite,a21,a22,a23 (f16.6','f16.6','f16.6) *vwrite,a31,a32,a33 (f16.6','f16.6','f16.6) *vwrite,a41,a42,a43 (f16.6','f16.6','f16.6) *vwrite, (' ') *enddo *cfclos |
说一说我的思路,一开始我考虑直接在cad里建一个实体然后保存为dxf然后往sap2000里导 发现 如果是线段导入sap2000框架可以,实体这样导就不行。于是我现在sap2000里建一个立方体小模型,先把它导出到dxf里 然后把dxf打开 发现这个立方体在cad里是多边形网格,于是我用list命令打开多边形网格,发现他是一个6X3的多边形网格(此处我也很无语,为啥sap2000导出来偏要用多边形网格而不是3d网格,大家可以有兴趣的打开看看节点编号方式我觉得挺奇葩的)然后根据多边形网格的节点编号规则 再和ansys里的节点编号规则一比较,写出上述apdl。 思路就是在autocad里把单元一个一个画出来,只不过命令是由ansys生成的。 |
3.把删掉空格后的geomfile.txt所有内容 全选 复制 。然后打开autocad新建图层在命令行里粘贴,等命令完成后 将autocad保存为dxf文件。 4.在sap2000里导入dxf,实体那一栏里就选你刚才在cad里建的图层。OK |
3.把删掉空格后的geomfile.txt所有内容 全选 复制 。然后打开autocad新建图层在命令行里粘贴,等命令完成后 将autocad保存为dxf文件。 4.在sap2000里导入dxf,实体那一栏里就选你刚才在cad里建的图层。OK |
如此一来只要你在ansys 里建好六面体实体模型 可以很快导入到sap2000里,很方便。 实测可行!!! |
2.在ansys file菜单里 read input from 把刚才的txt文件打开,运行会生成一个geomfile.txt的文件。打开这个文件 把里面所有空格全去掉(方法很简单 替换功能 查找里空格 替换里啥也不写) |
使用方法是这样 1.把刚才的代码保存为txt文件。然后在ansys里建好单元,注意必须都是是六面体单元因为sap2000好像只支持六面体单元,建完后注意把单元编号 压缩下 numcmp,element 其目的是让ansys的单元编号从1开始连续下去 |
本人ansys初学,抄抄改改写了如下一点命令,代码很罗嗦 原因是我对apdl语言也很不熟悉。 *get,nodenum,node,,num,max ! 获得节点的数目 *dim,nodepos,array,nodenum,3 ! nodepos存放节点的坐标 *do,i,1,nodenum,1 *get,nodepos(i,1),node,i,loc,x !获得节点的X坐标 *get,nodepos(i,2),node,i,loc,y *get,nodepos(i,3),node,i,loc,z *enddo *get,elemnum,elem,,num,max !得到单元的总数目 *dim,elemlist,array,elemnum,8 !单元包含的节点列表,指定每个单元包含8个节点,根据情况修改 *do,i,1,elemnum,1 *do,ii,1,8,1 *get,elemlist(i,ii),elem,i,node,ii !获得节点编号 *enddo *enddo *cfopen,geomfile,txt !打开文件,写入数据 *do,i,1,elemnum,1 *vwrite, ('3dmesh') *vwrite, ('6') *vwrite, ('3') n1=elemlist(i,1) n2=elemlist(i,2) n3=elemlist(i,3) n4=elemlist(i,4) n5=elemlist(i,5) n6=elemlist(i,6) n7=elemlist(i,7) n8=elemlist(i,8) a11=nodepos(n1,1) a12=nodepos(n1,2) a13=nodepos(n1,3) a21=nodepos(n2,1) a22=nodepos(n2,2) a23=nodepos(n2,3) a31=nodepos(n3,1) a32=nodepos(n3,2) a33=nodepos(n3,3) a41=nodepos(n4,1) a42=nodepos(n4,2) a43=nodepos(n4,3) a51=nodepos(n5,1) a52=nodepos(n5,2) a53=nodepos(n5,3) a61=nodepos(n6,1) a62=nodepos(n6,2) a63=nodepos(n6,3) a71=nodepos(n7,1) a72=nodepos(n7,2) a73=nodepos(n7,3) a81=nodepos(n8,1) a82=nodepos(n8,2) a83=nodepos(n8,3) *vwrite,a61,a62,a63 (f16.6','f16.6','f16.6) *vwrite,a21,a22,a23 (f16.6','f16.6','f16.6) *vwrite,a21,a22,a23 (f16.6','f16.6','f16.6) *vwrite,a51,a52,a53 (f16.6','f16.6','f16.6) *vwrite,a11,a12,a13 (f16.6','f16.6','f16.6) *vwrite,a11,a12,a13 (f16.6','f16.6','f16.6) *vwrite,a81,a82,a83 (f16.6','f16.6','f16.6) *vwrite,a41,a42,a43 (f16.6','f16.6','f16.6) *vwrite,a11,a12,a13 (f16.6','f16.6','f16.6) *vwrite,a71,a72,a73 (f16.6','f16.6','f16.6) *vwrite,a31,a32,a33 (f16.6','f16.6','f16.6) *vwrite,a21,a22,a23 (f16.6','f16.6','f16.6) *vwrite,a71,a72,a73 (f16.6','f16.6','f16.6) *vwrite,a71,a72,a73 (f16.6','f16.6','f16.6) *vwrite,a61,a62,a63 (f16.6','f16.6','f16.6) *vwrite,a81,a82,a83 (f16.6','f16.6','f16.6) *vwrite,a81,a82,a83 (f16.6','f16.6','f16.6) *vwrite,a51,a52,a53 (f16.6','f16.6','f16.6) *enddo *cfclos |
Powered by Discuz!