学海无涯机电社区

 找回密码
 立即注册
搜索
查看: 648|回复: 9
打印 上一主题 下一主题

ansys实体单元导入sap2000---个人浅见

[复制链接]
威望
114
金钱
43
贡献
3876

41

主题

107

帖子

3876

积分

论坛元老

Rank: 8Rank: 8

积分
3876
跳转到指定楼层
楼主
发表于 2021-2-9 18:23:34 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
新手可以看看,共同探讨,高手请忽略。
sap2000 对框架结构很强大,但是有时候也不得不需要建一些实体单元。可是其中实体单元建模功能很差。ansys众所周知,建模功能很强大。本人就考虑在使用sap2000的时候如果需要实体单元部分可以在ansys里建好模然后倒入sap2000。
经过一番摸索 目前本人找到一个相对可行的方法,如下:
威望
114
金钱
43
贡献
3876

41

主题

107

帖子

3876

积分

论坛元老

Rank: 8Rank: 8

积分
3876
沙发
 楼主| 发表于 2021-2-9 18:24:06 | 只看该作者
本人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
回复

使用道具 举报

威望
114
金钱
43
贡献
3876

41

主题

107

帖子

3876

积分

论坛元老

Rank: 8Rank: 8

积分
3876
板凳
 楼主| 发表于 2021-2-9 18:24:47 | 只看该作者
使用方法是这样
1.把刚才的代码保存为txt文件。然后在ansys里建好单元,注意必须都是是六面体单元因为sap2000好像只支持六面体单元,建完后注意把单元编号 压缩下 numcmp,element 其目的是让ansys的单元编号从1开始连续下去
回复

使用道具 举报

威望
114
金钱
43
贡献
3876

41

主题

107

帖子

3876

积分

论坛元老

Rank: 8Rank: 8

积分
3876
地板
 楼主| 发表于 2021-2-9 18:25:00 | 只看该作者
2.在ansys file菜单里 read input from 把刚才的txt文件打开,运行会生成一个geomfile.txt的文件。打开这个文件 把里面所有空格全去掉(方法很简单 替换功能 查找里空格 替换里啥也不写)
回复

使用道具 举报

威望
114
金钱
43
贡献
3876

41

主题

107

帖子

3876

积分

论坛元老

Rank: 8Rank: 8

积分
3876
5
 楼主| 发表于 2021-2-9 18:25:11 | 只看该作者
如此一来只要你在ansys 里建好六面体实体模型 可以很快导入到sap2000里,很方便。
实测可行!!!
回复

使用道具 举报

威望
114
金钱
43
贡献
3876

41

主题

107

帖子

3876

积分

论坛元老

Rank: 8Rank: 8

积分
3876
6
 楼主| 发表于 2021-2-9 18:25:26 | 只看该作者
3.把删掉空格后的geomfile.txt所有内容 全选 复制 。然后打开autocad新建图层在命令行里粘贴,等命令完成后 将autocad保存为dxf文件。
4.在sap2000里导入dxf,实体那一栏里就选你刚才在cad里建的图层。OK
回复

使用道具 举报

威望
114
金钱
43
贡献
3876

41

主题

107

帖子

3876

积分

论坛元老

Rank: 8Rank: 8

积分
3876
7
 楼主| 发表于 2021-2-9 18:25:52 | 只看该作者
3.把删掉空格后的geomfile.txt所有内容 全选 复制 。然后打开autocad新建图层在命令行里粘贴,等命令完成后 将autocad保存为dxf文件。
4.在sap2000里导入dxf,实体那一栏里就选你刚才在cad里建的图层。OK
回复

使用道具 举报

威望
114
金钱
43
贡献
3876

41

主题

107

帖子

3876

积分

论坛元老

Rank: 8Rank: 8

积分
3876
8
 楼主| 发表于 2021-2-9 18:27:28 | 只看该作者
这个小模型就是我在ansys里建好后用上述方法导入到sap2000里的



回复

使用道具 举报

威望
114
金钱
43
贡献
3876

41

主题

107

帖子

3876

积分

论坛元老

Rank: 8Rank: 8

积分
3876
9
 楼主| 发表于 2021-2-9 18:27:56 | 只看该作者
说一说我的思路,一开始我考虑直接在cad里建一个实体然后保存为dxf然后往sap2000里导 发现 如果是线段导入sap2000框架可以,实体这样导就不行。于是我现在sap2000里建一个立方体小模型,先把它导出到dxf里 然后把dxf打开 发现这个立方体在cad里是多边形网格,于是我用list命令打开多边形网格,发现他是一个6X3的多边形网格(此处我也很无语,为啥sap2000导出来偏要用多边形网格而不是3d网格,大家可以有兴趣的打开看看节点编号方式我觉得挺奇葩的)然后根据多边形网格的节点编号规则 再和ansys里的节点编号规则一比较,写出上述apdl。
思路就是在autocad里把单元一个一个画出来,只不过命令是由ansys生成的。
回复

使用道具 举报

威望
114
金钱
43
贡献
3876

41

主题

107

帖子

3876

积分

论坛元老

Rank: 8Rank: 8

积分
3876
10
 楼主| 发表于 2021-2-9 18:28:34 | 只看该作者
之前有人问 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋| 学海无涯机电社区  

GMT+8, 2024-4-21 00:33 , Processed in 0.110892 second(s), 39 queries .

Powered by Discuz!

© Comsenz Inc.

快速回复 返回顶部 返回列表