from odbAccess import * odb = openOdb(path=s_8+'.odb')#你的名字 a11=odb.steps['Step-1'].frames a12=len(a11)#帧数 #开始调用excel模块 for i in range(0,a12): #创建变量表示第1个分析步 step1=odb.steps['Step-1'] # 创建变量表示第1个分析步的最后一帧 lastFrame = step1.frames[i] # 创建变量集 'FE',它属于部件实例PART-1-1 center = odb.rootAssembly.instances['PART-1-1'] #装配体中部件的名称,名字需要大写 # 创建变量表示第1个分析步最后一帧的PEEQ strain = lastFrame.fieldOutputs['LE'] stress = lastFrame.fieldOutputs['S'] # 创建变量表示第1个分析步最后一帧集合FE,积分点的应变 centerstrain = strain.getSubset(region=center,position=INTEGRATION_POINT) centerstress = stress.getSubset(region=center,position=INTEGRATION_POINT) z1=0 z2=0 #统计 for v in centerstrain.values: z1=z1+v.data[2] #.data[]输出的就是6个独立应力 0:x 、1:y 、2:z for v in centerstress.values: z2=z2+v.data[2] #.data[]输出的就是6个独立应力 #print"平均应变:" z1=z1/len(centerstrain.values) z2=z2/len(centerstress.values) sheet1.write(2ii-2,i,z1) sheet1.write(2ii-1,i,z2) savepath = 'E:\shujushuchu\excel1.xls' # 生成的excel存放的位置 book.save(savepath)这行代码中,不要将所有数据都保存进excel,而是按一定补偿保存该怎么修改,写出代码
时间: 2024-03-23 21:40:23 浏览: 91
Odb.rar_odb_oracle_oracle cpp_封装类_数据库 封装
你可以在for循环中添加一个if语句,控制只保存每隔一定次数(如10次)的数据。代码如下:
```python
from odbAccess import *
import xlwt
# 打开excel文件
book = xlwt.Workbook(encoding='utf-8', style_compression=0)
sheet1 = book.add_sheet('Sheet1', cell_overwrite_ok=True)
# 读取odb文件
odb = openOdb(path=s_8+'.odb')
a11 = odb.steps['Step-1'].frames
a12 = len(a11)
# 开始调用excel模块
compensation = 10 # 设置补偿,每隔10次保存一次数据
for i in range(0, a12):
if i % compensation == 0: # 只保存每隔一定次数(如10次)的数据
# 创建变量表示第1个分析步
step1 = odb.steps['Step-1']
# 创建变量表示第1个分析步的最后一帧
lastFrame = step1.frames[i]
# 创建变量集 'FE',它属于部件实例PART-1-1
center = odb.rootAssembly.instances['PART-1-1'] # 装配体中部件的名称,名字需要大写
# 创建变量表示第1个分析步最后一帧的PEEQ
strain = lastFrame.fieldOutputs['LE']
stress = lastFrame.fieldOutputs['S']
# 创建变量表示第1个分析步最后一帧集合FE,积分点的应变
centerstrain = strain.getSubset(region=center, position=INTEGRATION_POINT)
centerstress = stress.getSubset(region=center, position=INTEGRATION_POINT)
z1 = 0
z2 = 0
# 统计
for v in centerstrain.values:
z1 = z1+v.data[2] # .data[]输出的就是6个独立应力 0:x 、1:y 、2:z
for v in centerstress.values:
z2 = z2+v.data[2] # .data[]输出的就是6个独立应力
# 保存数据到excel
sheet1.write(2*i-2, i, z1)
sheet1.write(2*i-1, i, z2)
# 保存excel文件
savepath = 'E:\shujushuchu\excel1.xls' # 生成的excel存放的位置
book.save(savepath)
```
阅读全文