这是使用在Abaqus中建模的Python脚本找出最大位移的代码:
from odbAccess import *
import os
os.chdir(r"dir")
odb = openOdb('Job.odb')
step = odb.steps['Blast Load']
frame = step.frames[-1]
max_U3 = 0
disp = frame.fieldOutputs['U']
nodes = odb.rootAssembly.nodeSets['NODE']
NodalDisp = disp.getSubset(region=nodes)
for DispVal in NodalDisp.values:
if DispVal[2]>max_U3:
max_U3 = DispVal[2]
output = open('Output.txt', 'w')
output.write('%g \n' % (max_U3))
output.close()
第12行显示的错误是: TypeError:'FieldValue对象没有属性'_ getitem _'
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
看起来DispVal
不是列表也不是字符串,它是FieldValue。因此,您无法访问DispVal[2]
。
检查此对象提供的方法,您可能有类似DispVal.value
的内容,它将返回您期望的类型。
答案 1 :(得分:1)
我想您要拨打DispVal.data[2]
而不是DispVal[2]
。除了输出值之外,FieldValue
对象中还有很多东西。你想要实际的data
。