打开visual-viewer,加载计算结果文件。
注意导出的数据是当前步数下的计算数据,可以改变步数实现不同步数下数据的导出。
在工具栏右键打开Selection工具条,切换到Node模式。

将导出模型的所有节点选上。节点选中无误后,在视图窗口右键选择Properties,Ctrl+A选中弹出窗口左侧的所有节点后,点击保存图标,将默认的ci_data.txt文件名改为ci_data.csv方便后续操作。

用记事本打开导出的数据,如下所示,

可以看出此时数据很冗余,并不能供我们分析,接下来需要将其format成我们需要的格式。
注意,这种方法每次只能导出10000个节点数据,超过单次上限的情况需要使用
Filter分批导出。
用Excel打开我们导出的ci_data.csv文件,参考格式化思路如下:
选中第一列,数据/分列->分隔符号->空格。

全选后,数据/删除重复值。
选中如下所示行列(第1、4行、第1列),删除。

新建一列,命名为Effective Stress,当列使用公式进行快捷赋值填充。

将生成的列进行复制,只保留值,再删除公式生成的那一列。
选中第一列,数据/筛选,将单元内容为
Effective的行筛选出来后,全选,右键删除行。

删除完成后,将其他数据显示出来,退出筛选。
至此,单个文件格式化完成,内容如下:

如果导出多个文件的话,在完成格式化后,还需将文件进行合并。或者先合并再格式化。
相较于使用Excel表格进行格式化操作,写脚本进行格式化更方便快捷。
procast_ES_format.py
import os
import re
import pandas as pd
import numpy as npfilesPath = r"./procast导出应力数据/"
nodeNum = 24154
ESTable = pd.DataFrame(columns = ['x', 'y', 'z', 'Mpa'], index = range(nodeNum))for fname in os.listdir(filesPath):with open(filesPath + fname) as f:content = f.read()data_txt = re.findall(r'[-+]?\d+(?:\.\d+(?:E[-+]?\d+)?)?', content)data_list = list(map(float, data_txt))for i, d in enumerate(data_list):if i % 5 == 0:if d % 1 != 0:print(f"Invalid data in Node {int(d)} !")ESTable.iloc[int(d) - 1, 0] = data_list[i + 1]ESTable.iloc[int(d) - 1, 1] = data_list[i + 2]ESTable.iloc[int(d) - 1, 2] = data_list[i + 3]ESTable.iloc[int(d) - 1, 3] = data_list[i + 4]
ESTable.to_csv(filesPath + "ES_result.csv")
文件目录结构如下:

导出结果如下:
