利用ANSYS的UIDL開發新的菜單功能
利用ANSYS的UIDL開發新的菜單功能
ANSYS的界面開發語言有UIDL和Tcl/Tk兩種,Tcl/Tk能夠觸及深處因此能夠開發的界面功能更加強大,UIDL則是ANSYS本身的開發語言,能夠對ANSYS的菜單進行一些開發,得到新的菜單功能,或者可以對已有的菜單進行修改等。
對于編程者而言其實界面不那么重要,可有可無,而對于使用者而言界面就變得尤為重要。
ANSYS的界面開發的相關文件位于F:\Program Files\ANSYS Inc\v160\ansys\gui\en-us\UIDL目錄下面,其中的引用文件menulist160.ans就引用了相關的GRN和AUI文件,自行開發的UIDL文件如果要使用,也必須在這個文件進行引用,同時UIDL文件也要放在這個目錄下面。
UIDL開發的文件擴展名是GRN,利用UIDL編寫開發有其固定的格式。
抬頭是控制頭文件,由一系列的UIDL命令組成,且必須以冒號開頭,其結構如下:
:F UIMENU.GRN
:D Modefied %E%,Revision(SID)=%I%
:I 0, 0, 0
:!
第一行:F Filename 控制文件名稱
:N 定義唯一的構造塊名稱
:S 描述構造塊的位置信息,這個當引用后會自動更新
:T 描述構造塊的類型,可分為Menu,Cmd,Help等類型
:A 對不同類型的構造塊有不同的功能,在Menu中為必須的,定義出現在GUI中的子菜單的名稱
:D 描述構造塊的信息
:C 用于執行APDL命令
以下是一段完整的菜單欄的UIDL代碼,創建了一個新的菜單,在菜單欄的最下面,菜單名稱為Input Parameter.
:F Screwmenu.GRN !建立名稱為Scremenu.GRN的控制文件
:D Modefied on %E%,Revision(SID)=%I%
:I 0, 0, 0 !第9,18,27行
:!
:N MenuRoot !定義的構造塊名稱
:S 0, 0, 0 !第9,16,23行
:T Menu !模塊為菜單模塊類型
:A Ansys Main Menu !主菜單的菜單名
:D ANSYS Main MENU !以上四行是模塊首部
Men_UVBA_Main_T1 !以下是數據控制部分
Men_UVBA_Main_T2
Men_UVBA_Main_T3
Fnc_preferences !調用功能模塊
Sep_ !分割線
Men_Preproc !調用菜單模塊
Men_Solution !調用求解模塊
Men_GenlPost !調用通用后處理模塊
Men_TimePost !調用時間歷程后處理模塊
K_LN(DROPTEST)
Sep_
K_LN(DROPTEST)
Men_DropTest
Sep_
Men_ToPo
Men_ROM
Men_DesXplorerVT
K_LN(alpha)
Men_DesOpt
K_LN(ALPHA)
Men_DesOpt_al
Men_ProbDesign
Men_Aux12
Men_RunStat
Sep_
Fnc_UNDO
Sep_
Fnc_FINISH !以上是菜單的一般形式
Sep_
Men_input !添加菜單
K_LN(UTILMENU)
Men_utilMenu
Men_UVBA_Main_B1
Men_UVBA_Main_B2
Men_UVBA_Main_B3
:E END !該行是模塊尾行
:N Men_input
:S 0, 0, 0
:T Menu
:A Input Parameter
:D Input Parameter
:C) Multipro,'start',4 !創建對話框
:C) /prep7
:C) *cset,1,3,A,'Parameter A',5
:C) *cset,4,6,B,'Parameter B',10
:C) *cset,7,9,C,'Parameter C',15
:C) *cset,10,12,D,'Parameter D',20
:C) Multipro,'end'
:E END
將上述UIDL代碼保存在GRN文件中,復制到之前所說的目錄下面,并修改ans文件添加引用,重新打開ANSYS即可自動加載,最終顯示的菜單欄如下所示。

圖1
由于在創建新菜單的時候用來ANSYS自帶的APDL命令multipro,因此點擊該菜單會自動彈出一個對話框用于設置幾個參數。點擊對話框的OK按鈕后及設置了4個參數,可以在ANSYS的主菜單欄查看,如下所示。

圖2
這里面用到的*cset和multipro命令可以查看筆者之前的文章查看其用法。
可以注意到,上面一大段的UIDL代碼創建新菜單的同時也引用了ANSYS的原來很多菜單,因此可以修改或者刪除其中的一些命令,那么菜單就可以按照自己的意愿分布。
如果將UIDL代碼縮短為如下:
:F Screwmenu.GRN !建立名稱為Scremenu.GRN的控制文件
:D Modefied on %E%,Revision(SID)=%I%
:I 0, 0, 0 !第9,18,27行
:!
:N MenuRoot !定義的構造塊名稱
:S 0, 0, 0 !第9,16,23行
:T Menu !模塊為菜單模塊類型
:A Ansys Main Menu !主菜單的菜單名
:D ANSYS Main MENU !以上四行是模塊首部
Sep_
Men_input !添加菜單
K_LN(UTILMENU)
Men_utilMenu
Men_UVBA_Main_B1
Men_UVBA_Main_B2
Men_UVBA_Main_B3
:E END !該行是模塊尾行
:N Men_input
:S 0, 0, 0
:T Menu
:A Input Parameter
:D Input Parameter
:C) Multipro,'start',4 !創建對話框
:C) /prep7
:C) *cset,1,3,A,'Parameter A',5
:C) *cset,4,6,B,'Parameter B',10
:C) *cset,7,9,C,'Parameter C',15
:C) *cset,10,12,D,'Parameter D',20
:C) Multipro,'end'
:E END
那么重新打開ANSYS后即可顯示如下圖所示的菜單分布。

圖3
很明顯,此時只剩下一個創建的按鈕而已。
基于此,再結合APDL,可以將某個結構的自動化分析過程完全做成幾個菜單就能解決的問題,不需要人為的干預。
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















