首页/文章/ 详情

告别手动截图!HyperMesh二次开发:批量随机抽取FEM模型并自动截图

1月前浏览948

 

在CAE仿真工程师的日常工作中,你是否经常遇到这样的场景:

项目交付前,需要抽查一批历史计算模型(FEM文件),检查网格质量、边界条件或进行结果后处理。面对成百上千个文件,手动一个个导入、切换视角、截图、保存……不仅耗时耗力,还容易因为枯燥的重复劳动导致漏截或错截。

如果一个重复性的工作超过5次,我们就应该寻找自动化的方法。 今天,我们将通过一段实用的HyperMesh TCL二次开发代码,教你如何实现 “批量随机抽取FEM文件 + 自动导入 + 一键截图” ,让HyperMesh替你完成这些枯燥的“摸鱼”工作!

核心代码解析:从文件检索到自动截图

下面这段代码是一个完整的自动化脚本框架,主要分为“文件检索与随机抽样”和“循环导入与截图”两大逻辑块。

1. 多文件夹检索与智能随机抽样

  if 1 {
    # 1. 指定多个目标文件夹路径
    set dirs [list \
    "result_out_20260608" \
    "result_out_20260608-1" \
    "result_out_20260608-2"]

    # 2. 遍历文件夹,收集所有.fem文件并去重排序
    set femList [list]
    foreach d $dirs {
        set tmp [glob -nocomplain $d/*.fem]
        set femList [concat$femList$tmp]
    }
    set femList [lsort -unique $femList]
    
    # 3. 容错处理:如果没有找到文件,直接退出
    if {[llength$femList] == 0} {
        puts"找不到任何fem文件,脚本退出"
        return
    }

    # 4. 设置抽取数量,并兼容HM环境的随机抽取逻辑
    set pickNum 30
    set total [llength$femList]
    set selFem [list]
    while {[llength$selFem] < $pickNum && [llength$selFem] < $total} {
        set rndIdx [expr int(rand() * $total)]
        set target [lindex$femList$rndIdx]
        if {[lsearch$selFem$target] == -1} { lappend selFem $target }
    }
}

💡 亮点说明:

  • • 多路径支持:使用 glob -nocomplain 可以安全地跨多个文件夹检索文件,即使某个文件夹为空也不会报错中断。
  • • 防重复机制:通过 lsort -unique 保证文件列表不重复;在随机抽取时,使用 lsearch 判断已选列表,确保抽出的30个模型绝对不重样。
  • • 兼容HM环境:HyperMesh内置的TCL环境对某些现代语法支持有限,这里采用 while + rand() 的经典写法代替 shuffle,保证了脚本在HM中的稳定运行。

2. 自动化导入与视角截图

  foreach fem $selFem {
    # 1. 静默清理当前模型,避免弹窗打断自动化流程
    hm_answernext yes
    *deletemodel 
    
    # 2. 配置导入参数并导入FEM文件
    *feinputpreserveincludefiles
    

*createstringarray 13 "OptiStruct " " " "ANSA " "PATRAN " "EXPAND_IDS_FOR_FORMULA_SETS " \

    "ASSIGNPROP_BYHMCOMMENTS " "LOADCOLS_DISPLAY_SKIP " "VECTORCOLS_DISPLAY_SKIP " \

    "SYSTCOLS_DISPLAY_SKIP " "CONTACTSURF_DISPLAY_SKIP " "\[DRIVE_MAPPING=\] " \

    "CREATE_PART_HIERARCHY " "IMPORT_MATERIAL_METADATA "



    *feinputwithdata2 "\#optistruct\\optistruct""$fem"0000011310
    
    # 3. 切换标准等轴测视角并自动截图
    *view "iso1"
    *screencopy
}
puts "执行完毕,共处理[llength $selFem]个fem"

💡 亮点说明:

  • • 静默处理hm_answernext yes 配合 *deletemodel 是自动化脚本的标配,它能自动确认删除提示,让脚本实现真正的“无人值守”。
  • • 标准化视角*view "iso1" 确保每次截图的视角完全一致,方便后续进行统一的网格质量评审或汇报展示。

结语

二次开发并不是程序员的专属,而是仿真工程师提升效率的“外挂”。从几行简单的TCL代码开始,把重复劳动交给软件,把思考的时间留给真正的工程设计。

互动话题:你在HyperMesh中最头疼的重复性工作是什么?欢迎在评论区留言,我们一起探讨如何用代码解决它!

 


来源:TodayCAEer
ACTOptiStructHyperMeshPatran二次开发ANSA
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-07-09
最近编辑:1月前
TodayCAEer
本科 签名征集中
获赞 85粉丝 191文章 740课程 2
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈