Hello,大家晚上好
好久没有继续更新,今天下班回家写了一个简单的二次开发程序。
根据comps名字创建属性,包含材料以及厚度。
模型命名规则如下:
2800012-VC01_DC01_T1.8
2800022-VC01_DC04_T1.8
写了一部分注释信息,没有开发经验的同学可以跟着注释看着走。
主要用到了一个流程控制命令Foreach,以及Tcl针对字符串操作的命令{string range };列表操作命令{split 、index},其余用到的皆是HyperMesh的二次开发命令。
看明白后,大家可以根据自己的命名规则修改程序。亦可以在程序中把材料位置以及厚度位置固定,减少交互输入字符串的步骤。
今天下班回家时间太晚了,明天还要继续工作。后面几天会录制写代码的过程,并为大家讲解一个二次开发的流程,以及如何完善代码。
疫情当下,祝大家工作顺利
代码如下:
""
#零件名字 2800012-VC01_DC01_T1.8 输入2 1
#只能够赋类型为shell的属性
#AUTHOR : Jintian
#DATE : 2020.04.22
#用户指定材料以及厚度位置
set location [hm_getstring location "厚度位置 材料位置 以下划线区分从零计算 "]
#选择需要创建属性的Comps
*createmarkpanel comps 1 "select"
#获取CompsName
set CompName [hm_getmarkvalue comps 1 name 1]
#获取厚度位置
set Tlocation [lindex $location 0]
#获取材料位置
set Mlocation [lindex $location 1]
#全选所有材料
*createmark materials 1 "all"
#获取材料名字
set MATname [hm_getmarkvalue materials 1 name 1]
#对所选择comps创建属性
foreach q $CompName {
set pp 0
set compID [hm_getvalue comps name=$q dataname=id]
set t [string range [lindex [split $q "_"] $Tlocation] 1 end]
set mat [lindex [split $q "_"] $Mlocation]
if { [lsearch $MATname $mat]<=0} {
catch {*createentity mats cardimage=MAT1 name=$mat}
}
set matid [hm_getvalue materials name=$mat dataname=id]
*createentity props cardimage=PSHELL name=$q
set maxID [hm_entitymaxsolverid props]
*setvalue props id=$maxID STATUS=1 95=$t
*setvalue props id=$maxID materialid= "mats $matid"
*setvalue comps id=$compID propertyid={props $maxID}
}
""
对于ansa的分享,前面分享的都是自己对于软件的一些看法,使用的技巧。写到现在不知道从何下笔,七零八落,东一榔头,西一锤子。这就是前面没有做好计划。
最初豆豆的学习都是通过看帮助文档学习,不得不说软件的帮助文档写的一级棒,为了后面能够继续写下去(主要是懒不想写计划)。后面写的文章顺序主要是根据软件的帮助文档的顺序来写,相应的地方豆豆会提出自己在使用软件过程中的见解,供大家参考。
对了最近开通了广告,大家见谅
每日一语
愿以后的生活是:
不为难自己,不辜负岁月。
时光,浓淡相宜;
人心,远近相安。