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:表示按钮的颜色,包括REDBLUEGREENCYANMAGENTA

EvalTclScript:表示按钮后面执行命令的方式,此处表示通过执行Tcl脚本文件的方式;

"C:/My_scripts/my_commands.tcl":脚本路径,如果脚本文件在工作目录下,则不需要指定绝对路径。

最后打开HyperMesh后,在Utility窗口下,点击User,可以看待创建的绿色按钮,如下所示:

                                               

1.1 (1).png

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

后面的第二个参数表示属于哪个组,其他的参数意义与前面相同,另外最后的参数10为可选参数,表示此按钮按下之后传递给该宏的值,根据需要而定。这里只是建立一个空的宏,里面不包括任何命令。其效果如下所示:

1.1 (2).png

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表示列位置,效果如下所示:

 

1.1 (3).png

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:表示提示信息。

点击按钮之后弹出如下的对话框,进行一些操作,

 

1.1 (4).png

4

 

*createmarkpanel类似的有*createentitypanel*createlistpanel(),不作赘述。

 

 

这里只是介绍了使用方法,想要借此编写一个功能齐全的按钮,需结合Tcl/Tk和大量的API函数,如果需要完成一些跨软件的操作,还需结合其他的比如批处理技术等等。

总之,功能可以很强大。

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

17
4
6