首页/文章/ 详情

【HyperMesh 二次开发】Tetra批量转换为CBEAM

9月前浏览314

 

本次分享将Tetra批量转换为CBEAM的HyperMesh脚本,其核心功能是通过自动化流程处理模型中的四面体,生成对应的梁单元。需要注意的是,对于包含大量元素的模型,由于处理步骤较多,此脚本可能需要较长的运行时间。(另外一个策略是将所有单元节点释放,就不用单个生成face,效率会高很多,具体说明就不在本篇文章分享了,后面给大家分析)。

脚本代码及功能解析

完整代码

  hm_createmark elems 1 "by config""tetra4"
set hex_elems [hm_getmark elems 1]
*createentity comps includeid=0 name=temp
foreach extract $hex_elems {
 *createmark elements 1$extract
 *findfaces elements 1
 *createmark elements 1"by comp names" ^faces
 *movemark elements 1"temp"
 *createmark components 1"^faces"
 *deletemark components 1
}
*createmark elements 1"by comp names" temp
*createstringarray 1"IgnoreNormal: 0"
*features_advanced elements 1300300011
*createmark elements 1"by comp names" ^feature
*configedit 1"bar2"
*setelementcolormode 1
*setelementcolormode 1

分步功能说明

1. 选择所有Tetra4元素

  hm_createmark elems 1 "by config" "tetra4"
set hex_elems [hm_getmark elems 1]
  • • 第一行通过hm_createmark命令,按配置("by config")选中模型中所有类型为"tetra4"(四节点四面体),并将其存储在单元Mark1中。
  • • 第二行通过hm_getmark命令获取Mark1中所有四面体单元的ID列表,存储在变量hex_elems中(注:变量名hex_elems为历史命名,实际存储的是四面体ID)。

2. 创建临时component

  *createentity comps includeid=0 name=temp

通过*createentity命令创建一个名为temp的临时comps,用于存储转换过程中生成的中间单元,避免干扰模型中原有的组件结构。

3. 遍历四面体并提取面

  foreach extract $hex_elems {
    *createmark elements 1 $extract
    *findfaces elements 1

    *createmark elements 1 "by comp names" ^faces
    *movemark elements 1 "temp"

    *createmark components 1 "^faces"
    *deletemark components 1
}

这是脚本的核心循环,逐一对每个四面体进行处理:

  • • *createmark elements 1 $extract:将当前遍历的四面体单元($extract)标记到单元Mark1中。
  • • *findfaces elements 1:提取该四面体单元的表面^faces。
  • • *createmark elements 1 "by comp names" ^faces:选中^faces组件中的所有面单元。
  • • *movemark elements 1 "temp":将这些面单元移动到之前创建的tempcomponent中,统一管理。
  • • *createmark components 1 "^faces"和*deletemark components 1:删除临时生成的^facescomponent,避免冗余。

4. 基于面单元创建梁特征

  *createmark elements 1 "by comp names" temp
*createstringarray 1 "IgnoreNormal: 0"
*features_advanced elements 1 30 0 30 0 0 1 1
  • • 第一行选中temp组件中所有的面单元(即之前从四面体中提取的面)。
  • • 第二行创建字符串数组,设置特征提取参数"IgnoreNormal: 0"。
  • • 第三行*features_advanced命令通过高级特征提取功能,基于面元素生成梁特征(特征元素自动存储在名为^feature的组件中)。

5. 将特征元素转换为CBEAM元素

  *createmark elements 1 "by comp names" ^feature
*configedit 1 "bar2"
  • • 第一行选中^feature组件中生成的特征元素。
  • • 第二行*configedit命令将这些特征元素的配置修改为"bar2"(HyperMesh中CBEAM梁单元对应的标准配置),完成从四面体到CBEAM梁单元的转换。

6. 刷新显示

  *setelementcolormode 1
*setelementcolormode 1

通过重复调用*setelementcolormode 1命令,刷新元素的颜色显示模式,确保转换后的CBEAM能正确可视化。

脚本运行说明

适用场景

  • • 需将实体四面体网格简化为梁单元模型(如从详细实体模型中提取框架结构)。

注意事项

  • • 运行时间:对于包含大量四面体(数万级及以上)的模型,由于循环处理和特征提取步骤计算量较大,脚本可能需要较长时间运行,请耐心等待。
  • • 模型备份:建议在运行前备份模型,避免因异常中断导致数据丢失。
  • • 结果验证:转换完成后,建议检查CBEAM的数量和位置是否与原四面体匹配,确保转换效果符合预期。

该脚本通过自动化流程实现了Tetra到CBEAM的批量转换,适用于HyperMesh环境下的有限元模型简化与处理工作。

 


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