我正在尝试使用abaqus-ython脚本来提取节点坐标。 在这样做时,我首先提取原始节点位置,然后添加位移值。
但是对于我的一个abaqus模型,我注意到我提取的位移值与我在abaqus中找到的位移值不同(见附图)
我不知道这是怎么发生的。 有人可以帮助我吗? 你可以在下面找到我的代码。
=IFERROR(QUERY(UniqueLast!$A$3:X;"select * where dateDiff(A, now())=0"))
答案 0 :(得分:1)
您应该直接从字段数据中提取节点标签:
curNodeLabel=dispField.values[i].nodeLabel
然后你需要用它来获取节点:
curNode=instance.getNodeFromLabel(curNodeLabel)
不要假设节点索引与字段数据索引相同。
为了保持一致性,我要进行for
循环:
for i in range( len(dispField.values) ):
答案 1 :(得分:0)
尽管有标题,我假设您想要最终坐标而不是位移。正如Daniel F所提到的,你应该添加COORDS作为字段输出。在这种情况下,下面的代码应该是有用的。
def findCoordSet(OdbName,StepName,InstanceName,SetName):
"""
This ODB reading script does the following:
-Retrieves coordinates at SetName
"""
Coordinates={'x':[],'y':[]}
# Open the output database.
odbName = OdbName + '.odb'
odb = visualization.openOdb(odbName)
lastFrame = odb.steps[StepName].frames[-1]
coordset = odb.rootAssembly.instances[InstanceName.upper()].nodeSets[SetName.upper()]
# Retrieve Y-displacements at the splines/connectors
dispField = lastFrame.fieldOutputs['COORD']
dFieldpTip = dispField.getSubset(region=coordset)
for i in range(len(dFieldpTip.values)):
Coordinates['x'].append(dFieldpTip.values[i].data[0])
Coordinates['y'].append(dFieldpTip.values[i].data[1])
odb.close()
return Coordinates