HyperMesh常见菜单函数(二次开发)

HyperMesh常见菜单函数(二次开发)
HyperMesh可以在Utility窗口中创建菜单,再结合Tcl/Tk以及HyperMesh自带的API函数可实现二次开发过程。在Utility窗口下可开发简单的按钮控件,而且都是通过宏文件mac来实现的,在编辑宏文件时常用到的命令有以下这些。
*beginmacro和*endmacro,分别用来开始和结束宏的定义;
*createbutton,在Utility窗口下添加按钮。
利用这三个命令就可以创建按钮,如下所示,在HyperMesh的工作目录下建立一个名称为userpage.mac的文件,在里面输入以下命令:
*createbutton(5, "My Command",0,0,10,BLUE,"",EvalTclScript,"C:/My_scripts/my_commands.tcl")
*beginmacro("EvalTclScript")
*evaltclscript($1,0)
*endmacro()
解释以下*createbutton后面参数的意义:
5:表示page 5,一般情况下就用这个数,此时建立的按钮在user菜单下面;
"My Command":表示按钮上显示的名称;
0:表示位置,按钮在第几行;
0:表示位置,按钮在第几列;
10:表示按钮的宽度;
BLUE:表示按钮的颜色,包括RED,BLUE,GREEN,CYAN,MAGENTA
EvalTclScript:表示按钮后面执行命令的方式,此处表示通过执行Tcl脚本文件的方式;
"C:/My_scripts/my_commands.tcl":脚本路径,如果脚本文件在工作目录下,则不需要指定绝对路径。
最后打开HyperMesh后,在Utility窗口下,点击User,可以看待创建的绿色按钮,如下所示:
图1
点击这个蓝色的按钮后就会执行"C:/My_scripts/my_commands.tcl"文件,从而执行文件里面某些命令。
上面的命令是其中一种方式,还有另一种方式,其命令内容如下:
*createbutton(5, "My Command",0,0,10,BLUE,"","Macname")
*beginmacro(Macname)
*createnode 0 0 0 0 0 0
*endmacro()
与上面不一样的是这种方式没有指定脚本文件,而是直接给出宏的名称为Macname,相应的*beginmacro的参数变成宏的名称,实际的命令这里就写了一句:*createnode 0 0 0 0 0 0
创建一个节点,也就是这个宏包含一条创建一个节点的命令,当点击按钮后即可执行这个宏从而创建一个节点。
综上,创建按钮有两种方式,一种将命令写在脚本文件中,通过指定脚本文件而使按钮具备某些功能;另一种是将命令直接写进宏里。
除了*beginmacro,*endmacro,*createbutton,还有*createbuttongroup,很明显这个函数是创建一组按钮的,示例如下:
*createbuttongroup(5, 1, "yes", 5, 6, 2, GREEN, "Yes","ToggleDisplay", 1)
*createbuttongroup(5, 1, "no", 5, 8, 2, GREEN, "No", "ToggleDisplay", 0)
*beginmacro(ToggleDisplay)
*endmacro()
通过*createbuttongroup创建了两个按钮,同属一个组,*createbuttongroup
后面的第二个参数表示属于哪个组,其他的参数意义与前面相同,另外最后的参数1和0为可选参数,表示此按钮按下之后传递给该宏的值,根据需要而定。这里只是建立一个空的宏,里面不包括任何命令。其效果如下所示:
图2
还有命令*createtext,添加文字,示例如下:
*createbuttongroup(5, 1, "yes", 5, 6, 2, GREEN, "Yes","ToggleDisplay", 1)
*createbuttongroup(5, 1, "no", 5, 8, 2, GREEN, "No", "ToggleDisplay", 0)
*createtext(5, "Display", 4, 0)
*beginmacro(ToggleDisplay)
*endmacro()
比上面多了一行*createtext(5, "Display", 4, 0)
"Display"表示显示名称,4表示行位置,0表示列位置,效果如下所示:
图3
再介绍一个命令*createmarkpanel,创建一个panel,这个命令可以放在宏里面,一旦点击按钮,就会弹出一个panel,让用户可以选择对象创建mark,示例如下:
*createbutton(5, "My Command",0,0,10,BLUE,"","Macname")
*beginmacro(Macname)
*createmarkpanel(elements,1,"Select the elements")
*endmacro()
其中*createmarkpanel entity type mark id message
entity:表示类型;
mark:表示mark号,1或者2;
message:表示提示信息。
点击按钮之后弹出如下的对话框,进行一些操作,
图4
与*createmarkpanel类似的有*createentitypanel和*createlistpanel(),不作赘述。
这里只是介绍了使用方法,想要借此编写一个功能齐全的按钮,需结合Tcl/Tk和大量的API函数,如果需要完成一些跨软件的操作,还需结合其他的比如批处理技术等等。
总之,功能可以很强大。

工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP
