0

I tried the follwing code and tried to read eseden from a nodeset. I get the following error as "Type error Field output object is not iterable".

Aravind

from odbAccess import *
from textRepr import *
from abaqusConstants import *
import odbAccess
odb=openOdb(path='python2d.odb')

NodesofInterest = odb.rootAssembly.instances['PART-1-1'].nodeSets['NODESET'] 

eseden=odb.steps['Step-1'].frames[1].fieldOutputs['ESEDEN'].getSubset(region=NodesofInterest)

for v in eseden:
    print v
    print (v.elementLabel,v.data)
4

1 回答 1

0

getSubset在存储库上调用的方法fieldOutputs返回一个FieldOutput对象。该对象包含一个成员values,可用于读取特定变量的值,在您的情况下为“ESEDEN”。

成员values实际上是一个FieldValueArray带有FieldValue对象的对象,每个对象都包含有关单个节点数据的所有必要信息。

您收到错误的原因是“FieldOutput”对象实际上是不可迭代的,因此要检索实际信息,您需要按照我刚才描述的连接进行操作。

为了使这个描述更清楚一些,这里有一个使用您的代码的简单示例:

from odbAccess import *
from textRepr import *
from abaqusConstants import *
import odbAccess

odb=openOdb(path='python2d.odb')

NodesofInterest = odb.rootAssembly.instances['PART-1-1'].nodeSets['NODESET'] 
eseden=odb.steps['Step-1'].frames[1].fieldOutputs['ESEDEN'].getSubset(region=NodesofInterest)

# This kind of iteration should work since FieldValueArray is not 
# a repository
for value in eseden.values:
    # Should print node's label and corresponding value
    print value.nodelabel, value.data

如果您在文档中搜索 FieldOutput 和 FieldValue,您可以阅读更多相关信息。不幸的是,我找不到直接单独链接文档的任何部分的方法。

于 2014-12-21T09:44:19.373 回答