第三章用Tcl执行HyperMesh的命令介绍

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
例子:自动创建一个用户定义大小的力
• • 这个脚本将会创建一个可以让用户输入大小的力 用到的命令:
• HyperMesh提供的Tcl命令:
用Tcl执行HyperMesh的命令概览
关键点: • HyperMesh 命令 vs. HyperMesh Tcl 命令 • Tcl 界面命令和Tcl 查询命令 • HyperMesh基础输入控件 • 常用的HyperMesh Tcl 命令 • 使用命令窗口 • 例子: 使用命令窗口 • 创建一个执行Tcl 的HyperMesh 宏 • 例子: 自动创建一个用户定义大小的力
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
用Tcl执行HyperMesh的命令
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
• • 执行任何HyperMesh 提供的Tcl 命令或者纯Tcl 命令。 可以用source {script.tcl} 命令或者 右键File>>Load选择脚本文件来执行一个tcl文件
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
Get information for an entity using the HyperMesh template interface
Get filename from user using HyperMesh file panel Get floating point value from user using HyperMesh panel Get integer value from user using HyperMesh panel Get ids for passed entity type on passed mark mask Get text string from user using HyperMesh panel Get general information about HyperMesh Clear IDs for entity type from passed mark mask
Return ID of closest node to point xyz
hm_nodelist
hm_nodevalue
Get list of node IDs for passed element
Get XYZ values for passed node ID Display message in HyperMesh header message bar
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
HyperMesh 命令 vs. HyperMesh Tcl 命令
• 两种命令语法的对比:
Macro in userpage.mac file
• • 任何HyperMesh 提供的Tcl命令也可以执行 例如,我们用HyperMesh提供的Tcl命令 hm_info: hm_info –appinfo SPECIFIEDPATH TEMPLATES_DIR
•wk.baidu.com
• •
就可以返回当前的模板文件的目录路径了.
命令窗口可以让开发人员更方便的测试一个概念,而不需要写到脚本文件里去 在命令窗口中,我们可以:
hm_getclosestnode
hm_usermessage
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
使用命令窗口
• • HyperMesh提供了一个交互式的命令窗口 这就会启动一个交互式的Tk console (TkCon)
hm_getstring ?option? ?message? hm_getstring “Load collector name” “Enter a name for the load collector”

这个命令返回值就是我们输入的string,因此,我们可以将其返回值赋值给一 个变量:
set loadname [hm_getstring “Load collector name” “Enter name for load collector”]
*jpegfile()
*setbackgroundcolor(0,0,0) *setmeshlinecolor(0) *endmacro()
*jpegfile
*setbackgroundcolor 0 0 0 *setmeshlinecolor 0 Not used in Tcl
• 注意HyperMesh Tcl命令与HyperMesh命令基本上没有变化,只是将“,” 、“(”和“)”去掉
*createmark *clearmark hm_getfloat

纯Tcl命令:
set
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
练习
练习 3a 描述 创建一个tcl脚本完成以下任务:
例子: 使用命令窗口
• 本例的目的是熟悉命令窗口的使用
*createmark elements 1 all set n_ElemNum [hm_marklength elements 1] set lst_ElemIDs [hm_getmark elements 1] *deletemark elements 1

我们接下来将会学习一个HyperMesh 基本的输入控件和一些常用的命令
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
HyperMesh基本的输入控件
• hm_getstring 命令可以弹出输入控件,让用户输入一个string:

在这个命令窗口里,用户可以执行任意Tcl的命令
• 例如 ls、pwd 和 cd 等都可以在命令窗口执行
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
使用命令窗口
*beginmacro("macroJpeg") *setbackgroundcolor(255,255,255) *setmeshlinecolor(6)
Tcl Script
Not used in Tcl *setbackgroundcolor 255 255 255 *setmeshlinecolor 6
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
创建一个执行Tcl 的HyperMesh 宏 • 基本过程如下:
1. 2. 3. 4. 5. 6. 7. 8. 9. 删除command.cmf文件内容,保存; 手工执行宏所要完成的功能; 打开command.cmf文件,讲语句拷贝到某tcl文件中; 手动修改command语言到tcl语法,删除多余的语句; 修改一些与模型相关的语句; 保存文件,并在HM读取文件,测试功能; 打开userpage.mac文件;HyperMesh工作目录 在文件中写入宏设置语句,调用该tcl文件; 测试功能
• 除了语法的不同,Tcl脚本中,还能使用Tcl的常规命令
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
Tcl 界面命令和Tcl 查询命令 • • • HyperMesh Tcl 界面命令可以改变或者更新HyperMesh的界面或者控件 HyperMesh Tcl 查询命令可以查找HyperMesh的数据信息 这些命令有一个“hm_”前缀
• • • 创建一个用户定义名字的component 选择单元,并把这些单元移动到刚刚创建的component 将新component中的单元沿着z方向移动用户输入的距离
set force [hm_getfloat “Force” “Enter force value”]
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
常用HyperMesh Tcl 命令
Force an answer to the next *command hm_answernext "yes" *deletemodel
Inform HyperMesh whether or not messages should be displayed in header message bar Return list of element ids for passed component id Get information about entities in current model Get list of names or IDs of all entities of the requested type in current model Return maximum ID in use for an entity type hm_getentityvalue hm_getfilename hm_getfloat hm_getint hm_getmark
hm_answernext
hm_blockmessages hm_elemlist hm_entityinfo
hm_getstring
hm_info hm_markclear
hm_entitylist hm_entitymaxid
hm_errormessage
Display error message in header message bar
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
用Tcl执行HyperMesh的命令概览
• 目前为止,我们学习的HyperMesh的宏在完成重复性的工作时是很有效 的,但是同时也是有很多限制的 • Tcl脚本语言就可以突破这种限制,让我们能够完成更多的任务 • 用我们上一讲那个创建load collector的例子为例,用HyperMesh Tcl命 令我们可以让用户输入一个名称和力的大小,并用这些输入值来创建一个 力.
Copyright © 2009 Altair Engineering, Inc. Proprietary and Confidential. All rights reserved.
HyperMesh基本的输入控件
• hm_getint 和 hm_getfloat 命令可用于得到整数和实数:
• 这两个命令的用法与hm_getstring命令基本一致 • hm_getint 返回一个整数 • hm_getfloat 返回一个实数
相关文档
最新文档