首页/文章/ 详情

hypermesh二次开发:自动创建材料和属性

4月前浏览1040

在结构仿真中,通常有几十上百个component,如果手动创建每个component对应的材料卡片和属性卡片,工作量大,重复操作多,还容易出错不易察觉,检查起来特别麻烦,可以通过对hypermesh进行二次开发,在通过识别组件名称里的字符串来自动创建材料和属性,并自动赋予对应的组。

为了能自动创建材料和属性卡片,就要求在component命名时包含结构的相关信息,如材料,属性,薄板件还需要厚度。对于不同材料,首先在名称里包含相应的材料牌号,如Q235,6005A等,并通过程序提前创建好这些材料参数,便于后面自动创建材料卡片时调用参数。比方car-Q235-pshell-T5mm,表示材料为Q235,薄壁件用二维壳单元shell模拟,薄壁厚度5mm。car-Q235-psolid,表示材料为Q235,用实体单元模拟,因此不用赋予厚度。通过对关键字的判断就可以创建材料Q235,两个属性卡片pshell和psolid。

以下是一个简单的示例代码,用于根据component名称中的关键字自动生成材料和属性:
# 获取所有component的名称
set components [hm_entityinfo components]
# 循环遍历每个component
foreach comp $components {
    set comp_name [hm_getentityvalue components $comp name]
    # 判断component名称中包含的关键字
    if {[string match "*mat*" $comp_name]} {
        # 生成材料
        set mat_name "Material_$comp"
        *createstringmaterial $mat_name
        *createmark components 1 $comp
        *assignmaterial $mat_name
    } elseif {[string match "*pshell*" $comp_name]} {
        # 生成壳单元属性
        set prop_name "Property_$comp"
        *createentity comps prop_shell $prop_name
        *createmark components 1 $comp
        *assignproperty $prop_name
    } elseif {[string match "*psolid*" $comp_name]} {
        # 生成实体单元属性
        set prop_name "Property_$comp"
        *createentity comps prop_solid $prop_name
        *createmark components 1 $comp
        *assignproperty $prop_name
    } elseif {[string match "*T*" $comp_name]} {
        # 生成厚度属性
        set thickness [lindex [split $comp_name "T"] 1]
        *createentity comps prop_thickness $thickness
        *createmark components 1 $comp
        *assignproperty $thickness
    }
}
这段程序的大致思路是:

1)规范component命名,名称里包含材料,属性(shell,solid),便于程序识别。

2)读取所有component,识别材料和属性关键字符。

3)根据识别字符创建材料和属性卡片

4)将创建的材料和属性卡片赋予对应的component。

本程序以自动化的方式创建了材料和属性,效率高,准确率高,解放了CAE工程师双手和脑力。
本程序仅提高编程思路,请根据你的实际需求和具体的Hypermesh二次开发环境进行调整和修改。


来源:仿真老兵
HyperMesh二次开发材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-08-23
最近编辑:4月前
无情浪子
硕士 签名征集中
获赞 23粉丝 10文章 59课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈