最近做项目,需要输出abaqus中最大应变值随时间变化的曲线,但是翻了很多帖子都没找到相关的,所以后来自己写了个Python代码,用以提取最大值。需要用到这个功能的同学把代码里的注释删掉直接运行就行。
viewportName = session.currentViewportName
j=getInput('how much frame','0') #要提取多少帧的最值,默认为0
#这一步也可以用在step上,我的需求始终是step-1,所以没写那部分代码,和帧数的代码同理
a=int(j)+1
i=1
while i<a:
cobject = session.viewports[viewportName].odbDisplay.setFrame(step=0, frame=i)
#有兴趣的朋友可以print一下cobject1,看看odbDisplay里面包含了哪些函数
i+=1
cobject = session.viewports[viewportName].odbDisplay.contourOptions
#同上,想学习的朋友可以print一下cobject,
print("step=1", "frame=", i-1)
print(cobject.autoMaxValue)#输出最大值
print(cobject.autoMinValue)#输出最小值
值得注意的是,代码里step和frame的值都比实际值要小1,比如我要提取本来是step-1的数值,但是代码里要写成step=0。当然我的代码并不完整,这样输出的max/min只显示在abaqus底部信息栏,还需要在Excel中处理数据。为了减少工作量,大家还可以添加直接写入Excel处理数据的步骤,也可以完善二次开发,自动更改显示组,更改输出变量,尽量实现只需要run script,然后就能game over的。
之前做Python-abaqus二次开发一直在用宏录制.py文件,然后在此基础上修改,后来在知乎上跟一位大佬学习意识到这样做的局限性,大家在学习时,尽量把帮助文档和.py文件结合起来,因为abaqus中每个函数库里都包含了极其丰富的函数,.py文件不会把我们的操作全部录制进去,这时就需要print一下,看看这个库里都包括哪些函数,然后结合帮助文档进行学习。比如我就是通过py文件找到了contourOptions这个函数,又在帮助文档中找到了maxvalue这一变量。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删