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   =   dataname=         ?row=?  ?column=?
其中:
 entity_type :待查询的元素类,如node elem等。
=:被查询的元素;解释比较拗口,不直观,直接上具体的,比如可以是id=,name=,mark=
 dataname=就是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文档,下一篇会以一个具体的需求点进行思路和源码展示。

你可能感兴趣的:(HyperMesh二次开发)