首页/文章/ 详情

META二次开发一键压缩计算结果

10小时前浏览1
今天分享一个META二次开发的小脚本。


image.png



功能是快速压缩计算结果文件,在计算结果文件夹外生成一个保留塑性应变,应力,位移,减薄率。损伤值的metadb文件。


image.png


这样随时查看计算结果只需要打开metadb就行了,可以把计算结果文件夹里除了binout文件外的所有文件都删除,大大减少电脑的内存。


下面讲解下代码:

import osimport metafrom meta import guitk, utils# 定义全局变量存储路径selected_file_path = Nonedef get_parent_two_levels(file_path):    # 规范化路径(转换为绝对路径)    #abs_path = os.path.abspath(file_path)    # 两次调用 dirname    return os.path.dirname(os.path.dirname(file_path))

上面的代码是用来定义保存metadb文件的路径的,大家如果想在计算文件夹内生成metadb的话,(#两次调用 dirname)这里只需要调用一次就行

def on_folder_clicked(widget, event=None):    global selected_file_path    flag = 0    filter_1 = "Text files (*.txt)"    filter_2 = "PDF files (*.pdf)"    filter_3 = "d3plot files "    m = utils.SelectOpenFile(flag, filter_3)    if len(m) > 0:        print(m[0])            selected_file_path=m[0]                guitk.BCLineEditSetText(input_field, selected_file_path)    else:        print("No file selected")        # 将选择的路径显示在输入框中

这里的代码是用来打开文件夹选择我们的d3plot文件的,而且它只识别d3plot文件,防止你误操作浪费时间。

def on_ok_clicked(widget, event=None):    global selected_file_path    if selected_file_path:        print(f"选择的文件路径是: {selected_file_path}")        output_dir=get_parent_two_levels(selected_file_path)        print(output_dir)        #加载结果        utils.MetaCommand('displ append enable')        utils.MetaCommand('function append scalar enable')        utils.MetaCommand('function append vector enable')        utils.MetaCommand(f'read geom Dyna3d {selected_file_path}')        utils.MetaCommand(f'read dis Dyna3d {selected_file_path} all Displacements')        utils.MetaCommand(f'read onlyfun Dyna3d {selected_file_path} all Stresses,VonMises,MaxofInOutMid')        utils.MetaCommand('read onlyvec Dyna3d {selected_file_path} all Displacements')        utils.MetaCommand(f'read dis Dyna3d {selected_file_path} all Displacements')        utils.MetaCommand(f'read onlyfun Dyna3d {selected_file_path} all Stresses,PlasticStrain,MidSurface')        utils.MetaCommand('read onlyvec Dyna3d {selected_file_path} all Displacements')        utils.MetaCommand(f'read dis Dyna3d {selected_file_path} all Displacements')        utils.MetaCommand(f'read onlyfun Dyna3d {selected_file_path} all ExtraVariables,RelativeThinning(Current/Original)')        utils.MetaCommand(f'read onlyvec Dyna3d {selected_file_path} all Displacements')        utils.MetaCommand(f'write options MetaDB version 20.0.0')        utils.MetaCommand(f'write project "label" "{output_dir}/1.metadb"')        utils.MetaCommand(f'')        meta.guitk.BCDestroy(window)    else:        print("未选择文件")


这里就是读取计算自己想要的计算结果了,这里都是录制的session语言,大家可以自己录制一下,复 制粘贴替换掉我的就行。我这里读取了应力,塑性应变,减薄率,损伤值。


image.png



在这里大家可以录制自己的session语言,这个语言不像python这么难懂,看一看就能理解大概意思。


# 创建窗口window = guitk.BCWindowCreate("选择计算结果文件路径", guitk.constants.BCOnExitDestroy)grid = guitk.BCGridLayoutCreate(window)# 创建第一行:输入框和文件夹按钮input_field = guitk.BCLineEditCreate(window, "")guitk.BCGridLayoutAddWidget(grid, input_field, 0, 0, guitk.constants.BCAlignLeft)folder_button = guitk.BCPushButtonCreate(window, "选择文件", on_folder_clicked)guitk.BCGridLayoutAddWidget(grid, folder_button, 0, 1,guitk.constants.BCAlignRight) # 创建第二行:确认按钮ok_button = guitk.BCPushButtonCreate(window, "确认", on_ok_clicked)guitk.BCGridLayoutAddWidget(grid, ok_button, 1, 0,guitk.constants.BCAlignLeft) # 显示窗口guitk.BCShow(window)

这里就是我们的窗口的代码了。

其实这个脚本的python部分是我用DeepSeek写的,没想到吧。


当初写这个代码是因为,我要删除自己的计算结果,内存不够用了,删除结果前要保存有用的结果,就要要对结果压缩。100多个计算结果,每个点开去加载结果再保存成metadb简直要了我的狗命。



来源:FEAer
二次开发pythonCSTOriginMETA
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-04-30
最近编辑:10小时前
FEAer
本科 | CAE工程师 到点就下班的CAE打工人
获赞 82粉丝 129文章 108课程 2
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈