在原部件‘PART-CHUZHI’上定义了‘set-for-data’的节点结合用于提取数变形前后的坐标。提取Step-load分析步的变形后的坐标。将提取节点的编号,变形前后坐标输出为csv文件。
节点集合
分析步
查看后处理的显示组,找到我们的节点结合名称,如下图。说明部件为"PART-CHUZHI-1",节点集为"SET-FOR-DATA",这个后续会用到。请大家根据自己的情况在代码中进行修改。
from odbAccess import openOdb
from textRepr import *
import numpy as np
import os
dir_path = r"改为你自己ODB文件所在文件夹地址"
odb_name = 'Job-1.odb' #改为自己ODB的名称
file_path = os.path.join(dir_path, odb_name)
# 获取odb对象
my_odb = openOdb(file_path)
# 获取集合件
assembly = my_odb.rootAssembly
# 获得Part-1部件中内义的‘SET-FOR-DATA’节点集合
nodeset = assembly.instances['PART-CHUZHI-1'].nodeSets['SET-FOR-DATA']
# ==========================================================================
# 获取节点编号及原始坐标,并放在data的前三列
nodes = nodeset.nodes
# 定义一个data数组用于存放提取后的数值,其中第一列为节点编号,第二、三列分别为未变形的X,Y值
# 第四五列分别为变形后的X,Y值
data = np.zeros((len(nodes),5),dtype='float64')
# 获得变形前节点编号和坐标,第一列为节点编号,第二列为X坐标,第三列为Y坐标
for i,node in enumerate(nodes):
data[i,0:3] = [node.label, node.coordinates[0], node.coordinates[1]]
# ==========================================================================
# ==========================================================================
# 获得指定帧变形的位移值,并通过计算获得变形后的坐标
step = my_odb.steps['Step-load'] #改为你所要提取分析步
# 选取最后一帧
frame = step.frames[-1] #改为你所要提取的帧
# 获取全局位移场变量
dis_field = frame.fieldOutputs['U'] #改为你所想要提取的变量
# 在前述全局位移场变量的基础上提取局部位移场
local_dis_values = dis_field.getSubset(region=nodeset).values
# 通过原始坐标加各个位移分量获得变形后的坐标
for i, node_value in enumerate(local_dis_values):
data[i, 3:5] = [data[i,1]+node_value.data[0], data[i,2]+node_value.data[1]]
# ==============================================================================
# 指定输出文件名称,并以14位小数进行输出
output_name = "coordinate_result.csv"
output_path = os.path.join(dir_path, output_name)
np.savetxt(output_path, data, delimiter=",", fmt='%.14f')
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删