田新星 周學(xué)武 鄭 澤
隨著AutoCAD 軟件版本的不斷更新,Ribbon 界面已經(jīng)成為軟件發(fā)展主流,而且從AutoCAD2015 版本開始,經(jīng)典界面也已經(jīng)取消,僅保留了Ribbon界面,因此,為持久保持軟件的生命活力,將軟件升級至Ribbon 界面勢在必行。
隨著設(shè)計水平的提高和軟件應(yīng)用的不斷深入,軟件默認的原始界面和功能往往不能滿足用戶的需求,這就需要進行二次開發(fā)。通過二次開發(fā),既可以將原有內(nèi)部命令進行重組,又可以添加新的命令,從而實現(xiàn)命令重組。AutoCAD 從2009 版本開始,引入了WPF(Windows Presentation Foundation)和Ribbon 界面(也可以稱為功能區(qū)),他們將不同的工具進行分組,外形更加華麗。Ribbon 界面分為3 個層級,分別為選項卡(Tab)、面板(Panel)和按鈕或組合框(Button 或Combo 等)。
采用C#方式添加Ribbon 界面的流程如圖1所示。
本方法的關(guān)鍵在于理解C#平臺Ribbon 界面結(jié)構(gòu)的繼承性,元素(Item)必須添加到面板(Panel)中,面板(Panel)必須添加到選項卡(Tab)中,其中如果創(chuàng)建多個元素,可通過重復(fù)過程A 實現(xiàn)。
采用C#實現(xiàn)Ribbon 界面,可采用層次化過程實現(xiàn)。主要過程為:(1)創(chuàng)建一個源面板(sourcePanel);(2)創(chuàng)建一個面板的實例(Panel);(3)創(chuàng)建一個或多個元素(Button、SplitButton 等);(4)將元素與面板掛接。
圖1 Ribbon界面創(chuàng)建流程圖
為保證界面美觀和程序易讀性,可以為元素添加圖片。Ribbon 界面按鈕圖片的定義,是通過給項目添加一個用戶字典resourceDicionary的方式實現(xiàn)的,用戶可以自定義圖標ico 文件,自定義圖標顯示大小,圖標與文字相對關(guān)系等設(shè)置。ico 文件可以通過Photoshop 等軟件制作。
Ribbon 按鈕類的命令處理是由其基類Ribbon CommandItem 的CommandHandler 屬性實現(xiàn)的,該屬性屬于System.Windows.Input.ICommand接口,該接口,可以實現(xiàn)ICommand接口的RibbonCommandHandler。
LISP 語言和SCR 腳本文件由于具有易于交互、語法規(guī)則簡單、靈活易學(xué)易用等特點而被設(shè)計人員廣泛采用。對于采用Lisp 文件或SCR 腳本文件定義的命令,例如初始化文字樣式、自動建立圖層,可以通過以下命令實現(xiàn)Ribbon 界面按鈕與Lisp文件或SCR 文件鏈接。
與Lisp 文件自動鏈接關(guān)鍵代碼:
//獲取當前活動文檔
Document curAcadDoc = AcadApp.Document Manager.MdiActiveDocument;
//定義lsp 文件的路徑
string lispPath="d:/***/set-new.lsp";
//獲取lsp 文件中的函數(shù)名稱
string loadStr = String.Format("(load "{0}")TextDim ",lispPath);
//執(zhí) 行 函 數(shù) curAcadDoc.SendStringToExecute(loadStr,true,false,false)
與SCR 腳本文件自動鏈接關(guān)鍵代碼:
//獲取當前活動文檔
Document curAcadDoc =AcadApp.Document Manager.MdiActiveDocument;
//執(zhí)行函數(shù)
curAcadDoc.SendStringToExecute("filedia 0 ",true,false,false);
curAcadDoc.SendStringToExecute("script d:/***/wsgp ",true,false,false);
curAcadDoc.SendStringToExecute("filedia 1 ",true,false,false);
根據(jù)上述方法完成的廠房CAD 軟件Ribbon 界面如圖2 所示。
圖2 廠房CAD Ribbon界面
為增加程序可讀性和界面友好性,繪制了部分界面圖標,見表1。經(jīng)過添加Ribbon 界面,廠房CAD 可以在AutoCAD2007 及以上版本使用,并能大大加快軟件操作效率。
表1 廠房CAD Ribbon界面部分圖標展示
通過研究廠房CAD 軟件Ribbon 界面的開發(fā)過程發(fā)現(xiàn),可以得到以下結(jié)論:
(1)Ribbon 界面是設(shè)計單位各種常用軟件(例如Bentley 平臺旗下的MicroStation、Office 系列軟件等)的發(fā)展趨勢,設(shè)計人員掌握基本的Ribbon 界面開發(fā)技能和軟件界面定制技巧,能提高設(shè)計效率,增強軟件易用性。
(2)目前絕大多數(shù)計算機已經(jīng)采用64 位操作系統(tǒng),AutoCAD2007 以前的版本,很難安裝在64位操作系統(tǒng)上,因此,不建議設(shè)計人員使用低于AutoCAD2006 版本的軟件。
(3)研究發(fā)現(xiàn),隨著AutoCAD 版本的升級,每個版本對應(yīng)的引用庫文件也不同(例如自定義界面的CUI 文件或CUIx 文件),開發(fā)者應(yīng)結(jié)合AutoCAD官方的升級說明進行開發(fā),否則容易引起錯誤。