许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  HyperMesh二次开发:创建组件与移动单元技巧

HyperMesh二次开发:创建组件与移动单元技巧

阅读数 4
点赞 0
article_banner

今天我们来学习如何通过二次开发来实现组件创建和单元移动:

本次我们需要创建一个脚本来实现以下目标:

  1. 创建一个component,让用户自定义名称;
  2. 让用户选择element,并将这些单元移入已创建的component中;
  3. 平移这些单元,并且可以让用户指定距离;

为了实现上述目标,我们先介绍几个hypermesh二次开发命令:

  • hm_getstring

该指令属于HyperMesh Tcl GUI 命令,功能为使用HyperMesh面板获取字符串值,此命令通过向用户提供HyperMesh面板来返回字符串值;

使用语法为 hm_getstring ?caption? ?message? ?default_value?

?caption? 进入面板时显示的可选标题。

?message? 进入面板时在状态栏中显示的可选字符串,必须指定才能使用此选项。

?default_value?进入面板时要设置的可选默认字符串,必须指定才能使用此选项。

例如:

set label1 [hm_getstring "Label=" "Please specify the label"]

set comp_name [hm_getstring "comp name=" "please specify the comp name"]
代码执行结果 窗口如图所示
  • createentity

该指令属于HyperMesh Tcl 修改命令,功能为使用指定数据创建新实体,只允许设置数据名称,不支持属性,不支持 STATUS;

使用语法为 entity_type ?modelname=<name_of_model>? ?name1=value1? ?name2=value2? ... ?name3=valueN?

entity_type 要创建的实体类型

modelname=<name_of_model> 是当数据库有多个模型时要更新的可选模型名称;如果未指定,则使用当前模型。

<name>=<value>定义实体的相关数据

例如:

创建具有默认集合类型和名称的集合
*createentity sets

创建一组类型节点和节点 ID 1-4:
*createentity sets type=nodes ids={1 2 3 4}

创建名称为 set1 的集合cardimage GRNOD
*createentity sets name=set1 cardimage=GRNOD

eg*createentity comps name=$comp_name
  • createmarkpanel

该指令属于HyperMesh Tcl 修改命令,功能为提供用于向标记添加实体的面板;

使用语法为 entity_type mark_id message ?face_edge_mode? ?filter?

entity_type 要添加的实体的类型

mark_id 标记的 ID。有效值为 1 和 2

message 进入面板时在消息栏中显示的字符串

?face_edge_mode? 进入面板时使用的默认面/边缘选择模式。这是有效的仅适用于节点和元素。无效值默认为 0,或者被忽略不支持的实体类型

  • 0 - 标准实体选择
  • 1 - 2D 面 (elems) 或面 (节点)
  • 2 - 2D 面 ext(elems 和 nodes)
  • 3 - 自由边(仅限节点)
  • 4 - 边(仅限节点)
  • 5 - 循环(仅限节点)
  • 6 - 自由边 ext(仅限节点)
  • 7 - 边 ext(仅限节点)

例如:

在面板上创建一个标记单元
*createmarkpanel elems 1 "Please select the elements"
hm_getmark elems 1

使用 2D 面作为默认选择在面板中创建元素标记 模式
*createmarkpanel elems 1 "Please select the elements" 1
hm_getmark elems 1

使用 2D 面作为默认选择模式在面板中创建元素标记仅限允许2D面和2D自由边ext模式
*createmarkpanel elems 1 "Please select the elements" 1 6
hm_getmark elems 1

eg*createmarkpanel elements 1 "please select elements to translate"
  • movemark

该指令属于HyperMesh Tcl 修改命令,功能为将实体组织到收集器中,将实体从一个收集器移动到另一个收集器;

使用语法为 entity_type mark_id name

entity_type 要移动的实体的类型

mark_id 包含要移动的实体的标记的 ID。有效值为 1 和 2

name 要将实体移动到的收集器的名称

例如:

将所有元素从comp1移到comp2
*createmark elems 1 "by collector name" comp1
*movemark elems 1 comp2

eg*movemark elements 1 $comp_name
  • createvector

该指令属于HyperMesh Tcl 修改命令,功能为定义要在后续命令中使用的向量;

使用语法为 vector id x component y component z component

vector id 正在定义的向量的 ID(1 或 2)

x component 向量法线的 x 分量

y component 向量法线的 y 分量

z component 向量法线的 z 分量

例如:

要沿 y 轴定义向量
createvector(1,0,1,0)

eg*createvector 1 0 0 1
  • translatemark

该指令属于HyperMesh Tcl 修改命令,功能为沿向量平移所选实体;

使用语法为 entity_type mark_id vector_id distance

entity_type 要平移的实体类型

mark_id 包含实体的标记的 ID 有效值为 1 和 2

vector_id 要用于平移的向量的 ID 这是使用*createvector命令定义的

distance 要平移的距离

例如:

要沿 y 轴平移节点1  5 个单位
*createvector 1 0 1 0
*createmark nodes 1 1
*translatemark nodes 1 1 5

eg
*createmark components 1 $comp_name
*createvector 1 0 0 1
set dist [hm_getfloat "distance=" "please input the translate distance"]
*translatemark components 1 1 $dist

以上几个命令介绍完毕,下面展示实现最初目标的完整代码:

set comp_name [hm_getstring "comp name=" "please specify the comp name"]
*createentity comps name=$comp_name
*createmarkpanel elements 1 "please select elements to translate"
*movemark elements 1 $comp_name
*createmark components 1 $comp_name
*createvector 1 0 0 1
set dist [hm_getfloat "distance=" "please input the translate distance"]
*translatemark components 1 1 $dist


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

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

* 公司名称:

姓名不为空

手机不正确

公司不为空