问题描述
二维平面问题,底部全约束,上部位移荷载,先前定义了SET_FOR_DATA集合,现在要提取该集合的位移数据并生成txt文件。
问题背景
python代码
以下是全部代码,大家注意用的时候将对应的路径及其他信息修改为自己的路径,哪里需要更改我已经在对应代码的后方进行了标注
from odbAccess import openOdb
from textRepr import *
# 获取odb对象
my_odb = openOdb(r"D:\SIMULIA2020\script_learning\Job-1.odb") #改为你自己ODB文件所在地址
# 获取指定分析步
step = my_odb.steps['Step-1'] #改为你所要提取分析步
# 选取最后一帧
frame = step.frames[-1] #改为你所要提取的帧
# 获取全局位移场变量
dis_field = frame.fieldOutputs['U'] #改为你所想要提取的变量
# *****************************************************
# 获取局部场变量
# 在前处理时已经定义好的节点集合
# 该节点集合所属部件为'PART-1-1', 名称为'SET-FOR-DATA'
# 将已经定义好的集合在odb模块中找到,并赋予给变量NodeSet
NodeSet = my_odb.rootAssembly.instances['PART-1-1'].nodeSets['SET-FOR-DATA'] #改为你自己的部件及先前对应的集合
# 在前述全局位移场变量的基础上提取局部位移场
local_dis_values = dis_field.getSubset(region=NodeSet)
# *****************************************************
# 创建新的csv文件用于保存所需数据
# 编历指定集合内各节点信息并格式化输出
with open('data.txt','w') as f: # 不指定绝对路径则在工作路径生成
f.write("NodeLabel, NodeDis\n")
for node_value in local_dis_values.values:
txt_line = "{}, {}\n".format(node_value.nodeLabel, node_value.magnitude)
f.write(txt_line)
使用方法
命令行接口位置
3. 找结果。在Abaqus工作目录下即可看到新生成的data.txt文件,打开如下图所示。
提取结果
上述源文件及资源
我上传的文件信息如下图所示,第一个文件夹中包含有ODB文件,第二个文件就是代码文件,版本为2020。
资源链接:
链接:https://pan.baidu.com/s/1nwDNLCIEaGyPXv5n_2Mf8Q
提取码:yyds
资源文件
学习参考