本次分享将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 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)。 *createentity comps includeid=0 name=temp 通过*createentity命令创建一个名为temp的临时comps,用于存储转换过程中生成的中间单元,避免干扰模型中原有的组件结构。
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,避免冗余。 *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的组件中)。 *createmark elements 1 "by comp names" ^feature
*configedit 1 "bar2" ^feature组件中生成的特征元素。*configedit命令将这些特征元素的配置修改为"bar2"(HyperMesh中CBEAM梁单元对应的标准配置),完成从四面体到CBEAM梁单元的转换。 *setelementcolormode 1
*setelementcolormode 1 通过重复调用*setelementcolormode 1命令,刷新元素的颜色显示模式,确保转换后的CBEAM能正确可视化。
该脚本通过自动化流程实现了Tetra到CBEAM的批量转换,适用于HyperMesh环境下的有限元模型简化与处理工作。