当前位置:服务支持 >  软件文章 >  HyperMesh二次开发实例详解与程序编写教程

HyperMesh二次开发实例详解与程序编写教程

阅读数 13
点赞 0
article_banner
HyperMesh二次开发

使用Tcl/Tk进行二次开发的过程很简单:在Hypermesh的默认工作路径下有一个文件Command.cmf,这个文件记录了每个操作的动作。在打开Hypermesh之前,删除这个文件。启动Hypermesh,这个文件会被重新生成。执行一个需要重复操作的动作周期,Command.cmf就记录了操作过程。编辑这个文件,将其中的括号和逗号全部用空格替代,将文本另存为以tcl为后缀的文件。

 
脚本实例一

以下是一个将Hypermesh网格按照component分组逐个输出为nastran格式的脚本,输出文件名为component名字,因此需要注意不要有特殊符号。代码中的tmpl和savedir变量根据实际进行修改。
set lst_comp [hm_entitylist comps name] 
set tmpl "[hm_info -appinfo SPECIFIEDPATH TEMPLATES_DIR]/feoutput/nastran/general" 
set savedir "https://www.gofarlic.com/work/Temp/Hm" 
*displaynone 
foreach comp_name $lst_comp { 
    *displaycollectorwithfilter components "on" $comp_name 1 0  
    *retainmarkselections 0  
    *entityhighlighting 1  
    *createstringarray 0  
    *feoutputwithdata $tmpl $savedir/$comp_name.bdf 0 0 0 1 0  
    *displaycollectorwithfilter components "off" $comp_name 1 0  
} 
*displayall

 
脚本实例二

Hypermesh本身的提取中面功能较为简单,通过选择所有提取中面的部件,按照选项提取中面后命名为一个新的分组"Middle Surface"。在部件分组较多的情况下,对部件重新组织就比较麻烦。
以下代码实现的功能是遍历所有部件,如果部件有实体,则提取中面,并按照用户输入的实体厚度重新命名为新的分组,否则不做操作并给出提醒信息。所输入的实体厚度仅作为新部件的命名使用。
*createmark comps 1 all
set mycomps [ hm_getmark comps 1 ]
*clearmark comps 1
set NumFail 0
set hmname [hm_info hmfilename]
set Errorlog [file join [file dirname $hmname] "error.log"]
set fid [open $Errorlog w]
puts $fid "The file is generated by Midsurface."
foreach Compid $mycomps {
    set Compname [hm_getcollectorname comps $Compid]
    hm_createmark solids 1 "by component" $Compname
    set SolidIds [hm_getmark solids 1]
    set NumSolids [llength $SolidIds]
    puts "$Compname has $NumSolids solids "
    if {$NumSolids < 1} {
        incr NumFail
        puts -nonewline $fid $NumFail
        puts -nonewline $fid ". "
        puts -nonewline $fid "\["
        puts -nonewline $fid $Compname
        puts -nonewline $fid "\] "
        puts $fid ", Failure=No Solid in $Compname."
        continue
    } 
    *retainmarkselections 1
    *setsurfacenormalsdisplaytype 1
    *normalsoff
    *midsurface_extract_10 solids 1 3 0 1 1 0 0 20 0 0 10 0 10 -2 undefined 0 0 1 
    *midsurface_remove_edit_bodies
    *release_temp_fixed_vertices
    *normalsoff
    set suffix [hm_getfloat "Thickness of component $Compname:"]
    set divchar "_"
    set lenunit "mm"
    set Newcompname $Compname$divchar$suffix$lenunit
    if { [hm_entityinfo exist comps $Newcompname -byname] == 1 } {
        hm_errormessage "Component name $Newcompname already exists."
        puts $fid "Component name $Newcompname already exists."
        return
    }  
    *renamecollector components "Middle Surface" $Newcompname
    *retainmarkselections 0 
} 
close $fid
hm_usermessage "Done."

微信关注【有限元微刊】,获得更多神技~

welcomeToIfem.png



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空