Hypermesh二次开发系列002

1 Tcl 命令和函数介绍

  在hypermesh里有三类tcl命令:

a).Tcl Gui command(界面命令);
b).Tcl Modify Command(修改命令);
c).Tcl Query Command(查询命令);
  其中a类和c类以【hm_】开头,但是a类一般不带参数和返回值,而c类通常会带有参数和返回值。比如【hm_callhelp】属于a类,其功能是调用help帮助文档,【hm_viewleft】属于a类,其功能是模型的左视图;【hm_ce_state ce_id】属于c类,其功能是返回目前connector的状态 (unrealized, realized or failed),ce_id是参数,即connector的编号,【hm_nodevalue node_id】属于c类,其功能是返回指定节点的坐标,node_id是参数,即指定节点的编号;b类是以【* 】开头,比如【createnode x y z system_id surface_id geom_index】,其功能是创建临时节点,其中x y z system_id surface_id geom_index*都是带输入的参数,x y z 是坐标值,system_id 是所在坐标系。

1.1 *createmark

  从上文介绍可以看出有的Tcl命令参数需要指定元素的ID编号,那ID怎么获取呢?这个问题先保留(埋坑1),我们来看一下,怎么通过*createmark命令来创建一个mark,或者说怎么创建一个集合,再或者是一个容器,里面存放着节点,单元,点,线等。
*createmark entity_type mark_id “?option?” list
其中:
 entity_type 表示mark里面要存放的元素类型,比如:节点/单元等;
  mark_id 表示所创建mark的编号,只有1 和2可以使用(埋坑2);
  “?option?” 表示用来定义创建的规则或者逻辑,比如:当前显示的,当前激活的,名字包含XX字母的等等。
 list 表示?option?指定后一些具体的值,比如option是id时,表示编号等。
  举几个具体的例子:
ex1:
命令:*createmark node 1 “by id only” 1 2 3
解释:将编号为1,2, 3的3个节点放入编号为1的mark中。
ex2:
命令:*createmark comps 1 “by id only” 1 2 13
解释:将编号为1,2, 13的3个组件放入编号为1的mark中。
ex3:
命令:*createmark comps 1 -1 -2 -3
解释:将最后创建的3个组件放入编号为1的mark中。
填坑2:,如果ex2,ex3连续使用,且mark编号都是1,那之前创建的将被覆盖。)
ex4:
命令: *createmark comps 1 FRONT SIDE
      *deletemark comps 1
解释:将名字FRONT 和SIDE的2个组件放入编号为1的mark中,并删除。
ex5:
命令: *createmark elems 2 “all”
      *deletemark elems 2
解释:删除所以单元。
ex6:
命令:*createmark elems 1 “by material id” 50
解释:将材料属性编号为50的单元放入编号为1的mark中。
总结下来呢,就是可以通过编号,坐标,属性,名称等创建节点,单元,材料等的集合,方便进一步的使用。

1.2 hm_getvalue

先介绍一下hm_getvalue的功能:查询并获取指定元素的一些具体属性或值。其命令格式如下:
hm_getvalueentity_type   <select_type> = <selection>   dataname=<data name or attribute name/ID>         ?row=<row_index>?  ?column=<column_index>?
其中:
 entity_type :待查询的元素类,如node elem等。
 <select_type>=:被查询的元素;解释比较拗口,不直观,直接上具体的,比如可以是id=,name=,mark=<mark_id>;
 dataname=<data name or attribute name/ID>就是Data Names:这个更不直观,再上具体的,比如: dataname=id,dataname=name,dataname=centerx,内容比较多,也正是这命令强大的地方,不同的enity_type,其的dataname还不一样。
 命令的功能和参数的意义如上所述,如果比较晕可以看下面具体的命令,顺便填坑1
ex7:
命令:hm_getvalue nodes id=1 dataname=x
解释:获取编号为1的节点的x坐标值(全局坐标系)
ex8:
1   *createmark node 2 “by id only” 1
2   set nodecor [ hm_getvalue nodes mark=2 dataname=x]
3   *createnode $nodecor 0 0 0
解释:
1   将节点编号为1 的节点,放入编号为2 的nark里;
2   先看[ ] 里面的: 获取编号为2的mark里的节点的x坐标值。这样该命令就等效为 set nodecor 10.1,其中10.1为 [ hm_getvalue nodes mark=2 dataname=x] 返回值,set是Tcl的关键字,是将10.1 赋值给nodecor这个变量(涉及Tcl语言,先埋坑3)。
3   在编号0的坐标系下(没错,坐标系也有编号,默认整体坐标系编号为0),在($nodecor, 0, 0)位置创建临时节点(涉及Tcl语言,先埋坑3)。
 ex8的3条命令功能是参照节点1创建临时节点,其x坐标同节点1的x坐标,而y和z值均为0。高逼格的说法是:展示了从hypermesh数据库获取信息,并组合使用Tcl命令修改数据的功能。

结束

 本篇仅是hypermesh的Tcl命令使用的一个引子,读者可以跟据项目开发的需求点查看官方HELP文档,下一篇会以一个具体的需求点进行思路和源码展示。

  • 12
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
HyperMesh二次开发是指在HyperMesh软件中进行自定义功能开发的过程。在学习HyperMesh二次开发时,可能会遇到一些困难,因为在最初学习时,可能找不到完整的学习资料。一些人可能只能通过软件帮助和自己摸索来学习,这个过程可能会很痛苦,有时候为了实现一个简单的功能,需要翻遍帮助文档和查询网络,但仍然找不到合适的处理方法,这可能会让人怀疑自己的能力。然而,只要坚持下来,通过不断的学习和实践,就能掌握绝大多数的HyperMesh开发项目。\[1\] 有些人为了分享自己在HyperMesh二次开发学习中的经验总结,帮助有兴趣学习HyperMesh二次开发的同学快速掌握开发知识,以及提供一个技术交流的平台,开设了一些教程专栏。这些教程专栏可以让大家在此交流学习心得、分享技术、共同进步。\[2\] 如果你对HyperMesh二次开发感兴趣,可以寻找这些教程专栏来获取更多的学习资源和指导。虽然这些教程可能存在一些没有覆盖到的内容和错误的地方,但是通过与他人的交流和探讨,可以更好地理解和应用HyperMesh二次开发技术。\[3\] #### 引用[.reference_title] - *1* *2* *3* [HyperMesh二次开发教程 - 前言](https://blog.csdn.net/buleskyline/article/details/122004956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值