今天我们来学习如何通过二次开发来实现如何沿指定方向移动单元:
本次我们需要创建一个脚本来实现以下目标:
为了实现上述目标,我们需要新学2个hypermesh二次开发命令:
该指令属于HyperMesh Tcl 查询命令,功能为返回单个实体的单个模板/数据名称值;
使用语法为 hm_getentityvalue entity_type entity_name_or_id data_name output_type ?search_type?
entity_type 要查询的实体的类型
entity_name_or_id 实体的名称或ID
data_name 要查询的数据名称或模板属性。使用模板名称查询时, ($) 必须位于属性名称之前。此外,请确保反斜杠 (\) 用于美元符号 ($) 的前面。
output_type 预期的输出类型。有效值为:0 - 整数/实数 1 - 字符串
search_type 默认情况下,HyperMesh按名称搜索实体,并且 如果未找到该名称,则按 ID 进行搜索。此选项允许您指定如何 应进行对实体的搜索。有效值为:-byname - 仅搜索方式 名字。-byid - 仅按 ID 搜索。
例如:
To get the first node of element 1:
hm_getentityvalue elems 1 node1.id 0
To get the name of component ID 4:
hm_getentityvalue comps 4 name 1 -byid
eg:
hm_getentityvalue vector $vect_id xcomp 0
该指令属于HyperMesh Tcl GUI命令,功能为使用HyperMesh面板获取浮点值;
使用语法为 hm_getfloat?caption? ?message? ?default_value?
?caption? 进入面板时显示的可选标题。
?message? 进入面板时在状态栏中显示的可选字符串
?default_value? 进入面板时要设置的可选默认浮点数
例如:
set distance [hm_getfloat "Distance=" "Please specify a distance"]
set dist [hm_getfloat "please input a float number as translate distance"]
以上2个命令介绍完毕,下面展示实现最初目标的完整代码:
*createmarkpanel elements 1 "please select elements to translate"
*createmarkpanel vector 1 "please select a vector to translate"
set vect_id [hm_getmark vector 1]
set vect_x [hm_getentityvalue vector $vect_id xcomp 0]
set vect_y [hm_getentityvalue vector $vect_id ycomp 0]
set vect_z [hm_getentityvalue vector $vect_id zcomp 0]
*createvector 1 $vect_x $vect_y $vect_z
set dist [hm_getfloat "please input a float number as translate distance"]
*translatemark elements 1 1 $dist
下面是代码执行后单元移动效果:
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删