找回密码
 注册
Simdroid-非首页
查看: 672|回复: 17

[二次开发] 求助:从odb到inp:python实现

[复制链接]
发表于 2010-12-21 14:45:41 | 显示全部楼层 |阅读模式 来自 上海
目前看到的python二次开发要么是如何利用python方便快捷的建立模型,要么就是对odb进行后处理得到自己想要输出的物理量。那么有没有什么方法可以实现从现有的odb文件得到相应的inp文件呢?(只有odb)如果每次都用cae导入再删除自己不需要部分然后输出INP的话,效率太低,有没有方法可以直接利用python从odb得到包含自己想要的内容的inp文件呢?
发表于 2010-12-21 15:32:17 | 显示全部楼层 来自 美国
Simdroid开发平台
阁下的意思是import odb的结果作分析吗?还是什么啊
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-21 16:26:54 | 显示全部楼层 来自 上海
2# lr00011 汗,看来我还是没讲清楚呀。。。
其实就是想用python从odb文件中得到原来的inp或者模型
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-21 16:46:51 | 显示全部楼层 来自 上海
2# lr00011 其实就是从odb中导出的网格重新加载进行分析,不过因为这个事得经常遇到,所以希望能写个程序实现
回复 不支持

使用道具 举报

发表于 2010-12-21 17:24:24 | 显示全部楼层 来自 陕西西安
我也等待高手解答哦……
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-22 12:11:36 | 显示全部楼层 来自 上海
突然发现odb中并没有保存模型的所有信息,比如载荷和一些约束就没有
回复 不支持

使用道具 举报

发表于 2010-12-22 13:18:31 | 显示全部楼层 来自 美国
那修改原来的cae或者inp或者.py就好了阿,修改还要odb干吗,odb里面本身就只是用来保存计算输出结果的。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-22 14:26:05 | 显示全部楼层 来自 上海
7# lr00011 要做的模型不太典型,有一部分必须来自于从二维旋转出的模型,另一部分梁单元要靠自己写INP,然后把两部分和起来,而且类似的工作得经常干,所以才想自己写程序从odb中得到自己需要的INP(主要是节点和单元)信息的话可能会更快一点
回复 不支持

使用道具 举报

发表于 2010-12-23 11:05:11 | 显示全部楼层 来自 江苏扬州
我也一直在想如何从一个ODB文件,得到一个结果变量,比如壳单元表面的pressure,然后再将这个结果变量作为一个输入变量,进行另一新的分析,请问这种想法应该如何实现?我个人的想法是使用如下方法:
1)从一个单元集合中,得到所包含单元的单元label
2)为第一步得到的单元label,建立pressure变量的XYdata
3)获得每一个单元label对应XYdata的数据
4)使用上述得到XYdata数据,为每一个单元建立幅值曲线
5)在用上述幅值曲线为每一个单元建立pressure荷载。
目前,我感到困哪的是,1)如何从一个单元集合中得到单元label?2)如何从一个XYDATA中得到相应数据?请高手指教啊!谢谢
回复 不支持

使用道具 举报

发表于 2010-12-23 11:13:01 | 显示全部楼层 来自 上海
from odbAccess import *
from abaqusConstants import *
from odbMaterial import *
from odbSection import *
import job
myModel = mdb.ModelFromOdbFile(name='Model A',odbFileName='test.odb')
jobName = 'fromODB_test'
myJob = mdb.Job(name=jobName, model='Model A',description='test for modelfromODB')
myJob.writeInput()
楼主可以运行一下这个脚本,从test.odb写入到fromODB_test.inp中。
就相当于倒入odb生成model,然后再写入到inp中
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-23 11:18:40 | 显示全部楼层 来自 上海
本帖最后由 JingheSu 于 2010-12-23 11:24 编辑

9# chenbilljohn
回答第一个问题:
用下面的脚本('BELT_0_LEFT2'是你要看的单元集合的名字):
from odbAccess import *
from abaqusConstants import *
from odbMaterial import *
from odbSection import *
odb = openOdb(path='test.odb')
myAssembly = odb.rootAssembly
ee=myAssembly.instances['PART-1-1'].elementSets['BELT_0_LEFT2'].elements
for i in range(len(ee)):
    print ee

输出基本上类似:
({'connectivity': (1817, 1818, 1822, 1821, 1513, 1514, 1518, 1517), 'instanceName': 'PART-1-1', 'instanceNames': ('PART-1-1', 'PART-1-1', 'PART-1-1', 'PART-1-1', 'PART-1-1', 'PART-1-1', 'PART-1-1', 'PART-1-1'), 'label': 1123, 'sectionCategory': 'SectionCategory object', 'type': 'C3D8R'}),这个里面就有单元集合中单元的label


第二个问题:
直接cae中建立你想要的xydata,就可以看到结果

点评

是轮胎的(⊙_⊙)?  发表于 2012-11-19 16:02
回复 不支持

使用道具 举报

 楼主| 发表于 2010-12-23 11:20:23 | 显示全部楼层 来自 上海
10# fimltl 非常感谢!
回复 不支持

使用道具 举报

发表于 2011-7-14 10:41:27 | 显示全部楼层 来自 江苏常州
odb 里面有网格结点数据与单元数据,其它的荷载数据没有的

如果要导出网格数据,还是可以搞定的
回复 不支持

使用道具 举报

发表于 2011-7-14 10:44:16 | 显示全部楼层 来自 山东临沂
。。。。从ODB到INP有这么麻烦吗?

file—import—model—odb 直接导入不就行了?为什么要这么麻烦?
回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-14 11:14:52 | 显示全部楼层 来自 上海
主要是只需要部分网格数据,不是全部。
回复 不支持

使用道具 举报

发表于 2011-7-14 11:19:34 | 显示全部楼层 来自 山东临沂
导入ODB文件,然后进入mesh模块用edit mesh删一下
回复 不支持

使用道具 举报

 楼主| 发表于 2011-7-14 14:17:19 | 显示全部楼层 来自 上海
关键是只需要部分节点和单元信息,每次都手动删弄得有些烦。。。
回复 不支持

使用道具 举报

发表于 2012-11-13 20:34:36 | 显示全部楼层 来自 北京
呵呵  正好需要这个东西  明天拿去试一试  谢过!!
问题如:http://forum.simwe.com/forum.php ... 1&highlight=odb
回复 不支持

使用道具 举报

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

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2026-1-6 10:35 , Processed in 0.046239 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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