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,可以看待創建的綠色按鈕,如下所示:
.png@!jslnk)
圖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為可選參數,表示此按鈕按下之后傳遞給該宏的值,根據需要而定。這里只是建立一個空的宏,里面不包括任何命令。其效果如下所示:
.png@!jslnk)
圖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表示列位置,效果如下所示:
.png@!jslnk)
圖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:表示提示信息。
點擊按鈕之后彈出如下的對話框,進行一些操作,
.png@!jslnk)
圖4
與*createmarkpanel類似的有*createentitypanel和*createlistpanel(),不作贅述。
這里只是介紹了使用方法,想要借此編寫一個功能齊全的按鈕,需結合Tcl/Tk和大量的API函數,如果需要完成一些跨軟件的操作,還需結合其他的比如批處理技術等等。
總之,功能可以很強大。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















