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
8