張作勝,朱振國,陳傳勝
(安徽職業(yè)技術(shù)學院 機械工程學院,安徽 合肥 230011)
Ribbon是一種以面板及標簽頁為架構(gòu)的用戶界面(user interface),最早出現(xiàn)在 Microsoft Office2007中。這種界面與傳統(tǒng)菜單式界面相比,整合了菜單和工具欄,將功能有組織地進行布局。Ribbon除了讓用戶更容易找到常用的、重要的功能外,還有外觀漂亮、功能直觀、操作簡潔方便等優(yōu)點。
Siemens UG NX軟件是面向產(chǎn)品全生命周期的大型軟件,從UG NX9.0起,該軟件也開始使用Ribbon界面,相比之前的伸縮下拉菜單或工具條圖標,橫鋪式的菜單更直觀且與觸摸操作兼容性更好。
為了滿足不同類型用戶對UG NX軟件的個性化定制需求,UG NX軟件提供了多種高效的開發(fā)工具實現(xiàn)在其平臺上的二次開發(fā),二次開發(fā)的主要內(nèi)容涉及用戶界面開發(fā)及功能開發(fā)2個方面[1]。菜單和Ribbon工具條是用戶界面的重要組成部分,也是構(gòu)建模塊框架進行二次開發(fā)工作的基礎,大多數(shù)二次開發(fā)的應用模塊都要通過菜單或工具條與UG平臺集成,方便用戶調(diào)用[2]。
基于UG/Open平臺的二次開發(fā),已有眾多文獻論述,如白海濱等基于NX二次開發(fā)的三維彈簧快速設計方法[3]、唐博文等基于STEP的電子束數(shù)模特征識別與再建CAD二次開發(fā)系統(tǒng)[4]和趙仁兵等基于UnigraphicsNX二次開發(fā)功能的批量后置軟件[5]等,這些都側(cè)重于二次開發(fā)程序的功能設計,對于用戶界面開發(fā)尤其是Ribbon工具條鮮有論述。
以下基于UG NX12開發(fā)平臺,應用UG/Open技術(shù)框架下的Menuscript編程語言,研究UG NX二次開發(fā)中Ribbon工具條的定制與設計技術(shù),對于開發(fā)具有良好UI界面的二次開發(fā)程序有重要意義。
在UG NX12中新建或打開一個部件,此時軟件默認處于建模環(huán)境。功能區(qū)在繪圖區(qū)上方,包括主頁、裝配、曲線和視圖等選項卡,每個選項卡包含一組或幾組面板,每個面板上一般又包含多個工具按鈕,UG NX的Ribbon界面如圖1所示。
圖1 UG NX12 Ribbon界面
UG NX Ribbon界面分為3個層級,分別為選項卡(Tab)、面板(Panel)和元素(Button或 Combo等)[6],可以將這3個層級類比成一級、二級與三級菜單。
(1)選項卡。多個作用相近的命令組合成為一個選項卡,也可稱為分類。例如在UG NX的Ribbon界面中,視圖相關(guān)的命令就放在“視圖”這個頁面中。在形式上,“選項卡”表現(xiàn)為Ribbon面板上的一個Tab頁面。
(2)面板?!斑x項卡”的下一個層級是“面板”,也是若干個命令的組合,只是同一面板內(nèi)的命令聯(lián)系會更緊密?!斑x項卡”包含“面板”,“面板”又包含下一個層級的“元素”。如圖1中“可見性”即為一個面板,其中包含“顯示隱藏”和“圖層”等多個功能相近的命令按鈕。
(3)元素?!霸亍笔亲罨镜拿睿话阒该畎粹o,它們被不同的“面板”所包含,主要完成具體的交互任務。
UG/Open二次開發(fā)平臺提供的界面開發(fā)工具主要有Block UIStyler和Menuscript兩種方式。其中Block UIStyler(塊UI樣式編輯器)是NX6.0版本之后提供的工具,代替之前的UIStyler,具有可視化功能,可幫助用戶快速構(gòu)建與NX用戶界面一致的對話框[7]。而Menuscript技術(shù)主要用來定制NX二次開發(fā)程序的菜單[8],除此之外,Menuscript技術(shù)還可以定制工具條和Ribbon工具條,其腳本文件擴展名分別為:*.tbr和*.rtb。
1.2.1 Menuscript技術(shù)環(huán)境搭建
利用UGII_VENDOR_DIR環(huán)境變量指定二次開發(fā)程序及其菜單的放置位置,以基于NX平臺二次開發(fā)的澆注系統(tǒng)為例,將環(huán)境變量指向D:GatingsystemTools,該目錄下建有startup和application兩個子目錄。
Ribbon界面的客戶化文件和菜單或工具條*.men、*.trb文件一樣,可以放置在application目錄、startup目錄或applicationprofiles目錄下,放在不同位置有如下區(qū)別。
(1)startup目錄:如果放置在這個文件夾下面,NX啟動后會立即顯示該Ribbon界面工具條,即Ribbon工具條會在NX啟動后,立即全部展現(xiàn)。
(2)application目錄:只有在特定的模塊下,Ribbon工具條才會顯示,通??梢酝ㄟ^定義men文件或通過API函數(shù)UF_UI_create_ribbon進行定義。
(3)applicationprofiles目錄:可以參考NX安裝目錄UGIImenusprofiles中對應的模塊目錄文件夾,可根據(jù)軟件當前模塊自動加載和卸載Ribbon工具條。比如Ribbon工具條文件放在UG_APP_MODELING目錄下,只會在建模環(huán)境下才會加載。
1.2.2 Ribbon工具條編程語法
使用Menuscript技術(shù)創(chuàng)建菜單、工具條和Ribbon工具條的編程語法略有不同,此處著重探討Ribbon工具條的編程設計方法。在前期完成NX二次開發(fā)程序澆注系統(tǒng)的菜單編程的基礎上,得到菜單文件JZ_main.men。該文件放置在startup目錄,位圖等相關(guān)資源放入application目錄下,其簡單Ribbon工具條代碼如下:
啟動UG NX12,新建或打開一個部件,進入建模環(huán)境,可看到澆注系統(tǒng)選項卡已經(jīng)出現(xiàn)在NX界面,如圖2所示。
圖2 澆注系統(tǒng)簡單Ribbon工具條
從圖2可看出,該Ribbon界面只有選項卡和元素2個層級,可以使用GROUP關(guān)鍵字添加面板這一層級。其具體用法是,在需要放置在同一面板的命令按鈕代碼之前和之后分別添加“BEGIN_GROUP XX”和“END_GROUP”,其中“XX”代表該面板名稱。圖3所示是添加了GROUP關(guān)鍵字的Ribbon界面。
圖3 添加了GROUP關(guān)鍵字的Ribbon工具條
除了GROUP關(guān)鍵字外,UG/Menuscript還為Ribbon工具條提供了用于自定義UI樣式的關(guān)鍵字,部分摘錄如表1所示。
表1 部分自定義Ribbon工具條的關(guān)鍵字
續(xù) 表
可以直接在*.rtb文件中使用GROUP、CASCADE、COLLAPSED等關(guān)鍵字,一般情況下,設計者更傾向于把不同風格的UI制作成不同格式的文件,如*.ddb文件(可變換圖標的下拉式按鈕)、*.csb文件(不會變換圖標的下拉式按鈕)、*.gly(galley庫樣式)文件以及*.grb文件(group文件)等。
現(xiàn)在已經(jīng)完成澆注系統(tǒng)的NX二次開發(fā),為進一步實現(xiàn)圖4所示的Ribbon界面,設計步驟如下。
(1)新建一個 Ribbon工具條文件(rbn_jzxi‐tongcs.rtb)放在UG_APP_MODELING目錄下,以保證在建模環(huán)境下才出現(xiàn)此澆注系統(tǒng)Ribbon界面。其代碼如下:
(2)在UG_APP_MODELING目錄下創(chuàng)建rib‐bon_group1_jz.grb文件,其部分關(guān)鍵代碼如下:
BUTTON JZ_LENG_Z//創(chuàng)建Z形冷料穴命令按鈕
RIBBON_STYLELARGE_IMAGE_WITHOUT_TEXT//指明其形式為不帶文字大圖標
圖4 澆注系統(tǒng)Ribbon界面
BUTTON JZ_LENG_ZHUI//創(chuàng)建錐形冷料穴命令按鈕
RIBBON_STYLELARGE_IMAGE_WITHOUT_TEXT//指明其形式為不帶文字大圖標
BUTTON JZ_LENG_HUAN//創(chuàng)建環(huán)形冷料穴命令按鈕
RIBBON_STYLELARGE_IMAGE_WITHOUT_TEXT//指明其形式為不帶文字大圖標
(3)繼續(xù)創(chuàng)建ribbon_gallery1_jz.gly庫文件,其部分關(guān)鍵代碼如下:
COLUMN_IN_RIBBON 2//指明RIBBON界面出現(xiàn)2列
COLUMN_IN_POPUP 2//指明POPUP時出現(xiàn)2列
GALLERY_STYLE SMALL_IMAGE_AND_TEXT//指明其形式為帶文字小圖標BEGIN_GALLERY分流道//開始創(chuàng)建分流道庫
BUTTON JZ_YUAN//創(chuàng)建圓形分流道命令按鈕
BUTTON JZ_TI//創(chuàng)建梯形分流道命令按鈕
BUTTON JZ_U//創(chuàng)建U形分流道命令按鈕
BUTTON JZ_BAN//創(chuàng)建半圓形分流道命令按鈕
BUTTON JZ_JU//創(chuàng)建矩形分流道命令按鈕
END_GALLERY//分流道庫創(chuàng)建結(jié)束
(4)再建ribbon_group2_jz.grb文件,其部分關(guān)鍵代碼如下:
BUTTON JZ_CE//創(chuàng)建側(cè)澆口命令按鈕
RIBBON_STYLE LARGE_IMAGE_AND_TEXT//指明其形式為帶文字大圖標
BUTTON JZ_FAN//創(chuàng)建扇形澆口命令按鈕
RIBBON_STYLE SMALL_IMAGE_AND_TEXT//指明其形式為帶文字小圖標
BUTTON JZ_POINT//創(chuàng)建點澆口命令按鈕
RIBBON_STYLE SMALL_IMAGE_AND_TEXT//指明其形式為帶文字小圖標
BUTTON JZ_QIAN//創(chuàng)建潛伏式澆口命令按鈕
RIBBON_STYLE SMALL_IMAGE_AND_TEXT//指明其形式為帶文字小圖標
(5)最后創(chuàng)建ribbon_cascade_jz.csb文件,其部分關(guān)鍵代碼如下:
通過對UG/Open二次開發(fā)平臺Menuscript技術(shù)設計Ribbon風格界面的分析和探討,介紹了Ribbon界面實現(xiàn)的方法、步驟,并通過基于NX二次開發(fā)的澆注系統(tǒng)Ribbon界面的設計,實現(xiàn)了不同風格樣式的Ribbon界面。以上提出的Ribbon界面UI設計方法適用于各種基于UG NX二次開發(fā)的Ribbon工具條定制,對NX二次開發(fā)技術(shù)人員具有一定的參考意義。