在大型有限元模型的后处理中,经常需要从多个 Step 和 Frame 中提取应力、位移等结果。手动操作耗时且容易出错,以下脚本实现了自动化提取。
功能:从指定 ODB 文件中提取所有节点的应力分量,并导出为 CSV 文件
脚本代码:
```python
from abaqus import odbAccess
import csv
def extract_stress(odb_path, step_name, frame_index, output_csv):
odb = odbAccess.openOdb(odb_path)
step = odb.steps[step_name]
frame = step.frames[frame_index]
results = []
for inst in frame.fieldOutputs['S'].instances.values():
for val in inst.values:
results.append([
val.nodeLabel,
val.data[0], val.data[1], val.data[2], # S11, S22, S33
val.data[3], val.data[4], val.data[5], # S12, S13, S23
])
with open(output_csv, 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Node', 'S11', 'S22', 'S33', 'S12', 'S13', 'S23'])
writer.writerows(results)
odb.close()
print(f'已提取 {len(results)} 个节点数据 → {output_csv}')
extract_stress('Job-1.odb', 'Step-1', -1, 'stress_results.csv')
```
适用场景:批量提取后处理数据、自动生成报告、与其他 Python 数据分析库(pandas/matplotlib)联动。
效率提升:相比 Abaqus GUI 手动导出,效率提升 20 倍以上。