You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ABAQUS-Python读取ODB节点数据导出为后处理文件的方法求助

无额外依赖的csv/txt/dat格式导出

该方案使用Python内置的文件操作函数,无需给ABAQUS Python环境安装额外库,直接可运行。以下代码会将X方向节点集的节点编号、X坐标、Y坐标、Z坐标、Z向位移合并输出到同一文件,避免数据对应错误。

from odbAccess import *
from numpy import array

# -------------原有读取ODB的代码不变-------------
odb = openOdb(path='Test_3.odb')
lastFrame = odb.steps['Step-1'].frames[1]

displacement = lastFrame.fieldOutputs['U']
coords=lastFrame.fieldOutputs['COORD']

NodeSet_x = odb.rootAssembly.instances['CFRP_SKIN_TS-1'].nodeSets['NODE_SET_X_AXIS']
NodeSet_y = odb.rootAssembly.instances['CFRP_SKIN_TS-1'].nodeSets['NODE_SET_Y_AXIS']
    
centerDisplacement_x = displacement.getSubset(region=NodeSet_x)
NodeCoord_x = coords.getSubset(region=NodeSet_x)

centerDisplacement_y = displacement.getSubset(region=NodeSet_y)
NodeCoord_y = coords.getSubset(region=NodeSet_y)
# ---------------------------------------------

# 构建节点编号到位移的映射,避免坐标和位移顺序不匹配的问题
disp_dict = {v.nodeLabel: v.data[2] for v in centerDisplacement_x.values}

# 导出为csv格式,修改后缀名为.txt或.dat即可导出对应格式
with open('node_x_output.csv', 'w') as f:
    # 写入表头,可根据需要修改
    f.write('节点编号,X坐标,Y坐标,Z坐标,Z向位移\n')
    for c in NodeCoord_x.values:
        node_label = c.nodeLabel
        x, y, z = c.data[0], c.data[1], c.data[2]
        uz = disp_dict.get(node_label, 0) # 取不到位移时默认填0
        # 写csv用逗号分隔,写txt/dat可以改成用制表符\t或者空格分隔
        f.write(f'{node_label},{x},{y},{z},{uz}\n')

# 如果需要导出Y方向节点集的数据,复用上面的逻辑修改变量名即可
# disp_dict_y = {v.nodeLabel: v.data[2] for v in centerDisplacement_y.values}
# with open('node_y_output.csv', 'w') as f:
#     f.write('节点编号,X坐标,Y坐标,Z坐标,Z向位移\n')
#     for c in NodeCoord_y.values:
#         node_label = c.nodeLabel
#         x, y, z = c.data[0], c.data[1], c.data[2]
#         uz = disp_dict_y.get(node_label, 0)
#         f.write(f'{node_label},{x},{y},{z},{uz}\n')

odb.close()

格式调整说明

  • 把文件后缀名从.csv改成.txt或者.dat,分隔符从逗号改成\t(制表符),就可以导出txt和dat格式的文件
  • 输出路径如果写绝对路径(比如r'C:\Users\xxx\Desktop\node_x_output.csv'),可以直接把文件输出到指定位置,不用去ABAQUS工作目录查找

导出为xlsx格式

该方案需要先给ABAQUS对应的Python环境安装pandas和openpyxl库,适合需要多Sheet存储、后续用Excel处理的场景。

from odbAccess import *
from numpy import array
import pandas as pd

# -------------原有读取ODB的代码不变-------------
odb = openOdb(path='Test_3.odb')
lastFrame = odb.steps['Step-1'].frames[1]

displacement = lastFrame.fieldOutputs['U']
coords=lastFrame.fieldOutputs['COORD']

NodeSet_x = odb.rootAssembly.instances['CFRP_SKIN_TS-1'].nodeSets['NODE_SET_X_AXIS']
NodeSet_y = odb.rootAssembly.instances['CFRP_SKIN_TS-1'].nodeSets['NODE_SET_Y_AXIS']
    
centerDisplacement_x = displacement.getSubset(region=NodeSet_x)
NodeCoord_x = coords.getSubset(region=NodeSet_x)

centerDisplacement_y = displacement.getSubset(region=NodeSet_y)
NodeCoord_y = coords.getSubset(region=NodeSet_y)
# ---------------------------------------------

# 处理X方向节点集数据
output_data_x = []
disp_dict_x = {v.nodeLabel: v.data[2] for v in centerDisplacement_x.values}
for c in NodeCoord_x.values:
    node_label = c.nodeLabel
    x, y, z = c.data[0], c.data[1], c.data[2]
    uz = disp_dict_x.get(node_label, 0)
    output_data_x.append([node_label, x, y, z, uz])
df_x = pd.DataFrame(output_data_x, columns=['节点编号','X坐标','Y坐标','Z坐标','Z向位移'])

# 处理Y方向节点集数据
output_data_y = []
disp_dict_y = {v.nodeLabel: v.data[2] for v in centerDisplacement_y.values}
for c in NodeCoord_y.values:
    node_label = c.nodeLabel
    x, y, z = c.data[0], c.data[1], c.data[2]
    uz = disp_dict_y.get(node_label, 0)
    output_data_y.append([node_label, x, y, z, uz])
df_y = pd.DataFrame(output_data_y, columns=['节点编号','X坐标','Y坐标','Z坐标','Z向位移'])

# 写入Excel,两个节点集数据分别存两个Sheet
with pd.ExcelWriter('node_output.xlsx') as writer:
    df_x.to_excel(writer, sheet_name='X方向节点集', index=False)
    df_y.to_excel(writer, sheet_name='Y方向节点集', index=False)

odb.close()

依赖安装说明

找到ABAQUS安装目录下的python.exe路径,用该路径下的pip执行安装命令即可,示例:D:\SIMULIA\CAE\2021\win_b64\tools\SMApy\python2.7\python -m pip install pandas openpyxl,注意对应自己的ABAQUS版本和Python版本。


内容的提问来源于stack exchange,提问作者knight0fcake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 16:45:06