田新星 周学武 郑 泽
随着AutoCAD 软件版本的不断更新,Ribbon 界面已经成为软件发展主流,而且从AutoCAD2015 版本开始,经典界面也已经取消,仅保留了Ribbon界面,因此,为持久保持软件的生命活力,将软件升级至Ribbon 界面势在必行。
随着设计水平的提高和软件应用的不断深入,软件默认的原始界面和功能往往不能满足用户的需求,这就需要进行二次开发。通过二次开发,既可以将原有内部命令进行重组,又可以添加新的命令,从而实现命令重组。AutoCAD 从2009 版本开始,引入了WPF(Windows Presentation Foundation)和Ribbon 界面(也可以称为功能区),他们将不同的工具进行分组,外形更加华丽。Ribbon 界面分为3 个层级,分别为选项卡(Tab)、面板(Panel)和按钮或组合框(Button 或Combo 等)。
采用C#方式添加Ribbon 界面的流程如图1所示。
本方法的关键在于理解C#平台Ribbon 界面结构的继承性,元素(Item)必须添加到面板(Panel)中,面板(Panel)必须添加到选项卡(Tab)中,其中如果创建多个元素,可通过重复过程A 实现。
采用C#实现Ribbon 界面,可采用层次化过程实现。主要过程为:(1)创建一个源面板(sourcePanel);(2)创建一个面板的实例(Panel);(3)创建一个或多个元素(Button、SplitButton 等);(4)将元素与面板挂接。
图1 Ribbon界面创建流程图
为保证界面美观和程序易读性,可以为元素添加图片。Ribbon 界面按钮图片的定义,是通过给项目添加一个用户字典resourceDicionary的方式实现的,用户可以自定义图标ico 文件,自定义图标显示大小,图标与文字相对关系等设置。ico 文件可以通过Photoshop 等软件制作。
Ribbon 按钮类的命令处理是由其基类Ribbon CommandItem 的CommandHandler 属性实现的,该属性属于System.Windows.Input.ICommand接口,该接口,可以实现ICommand接口的RibbonCommandHandler。
LISP 语言和SCR 脚本文件由于具有易于交互、语法规则简单、灵活易学易用等特点而被设计人员广泛采用。对于采用Lisp 文件或SCR 脚本文件定义的命令,例如初始化文字样式、自动建立图层,可以通过以下命令实现Ribbon 界面按钮与Lisp文件或SCR 文件链接。
与Lisp 文件自动链接关键代码:
//获取当前活动文档
Document curAcadDoc = AcadApp.Document Manager.MdiActiveDocument;
//定义lsp 文件的路径
string lispPath="d:/***/set-new.lsp";
//获取lsp 文件中的函数名称
string loadStr = String.Format("(load "{0}")TextDim ",lispPath);
//执 行 函 数 curAcadDoc.SendStringToExecute(loadStr,true,false,false)
与SCR 脚本文件自动链接关键代码:
//获取当前活动文档
Document curAcadDoc =AcadApp.Document Manager.MdiActiveDocument;
//执行函数
curAcadDoc.SendStringToExecute("filedia 0 ",true,false,false);
curAcadDoc.SendStringToExecute("script d:/***/wsgp ",true,false,false);
curAcadDoc.SendStringToExecute("filedia 1 ",true,false,false);
根据上述方法完成的厂房CAD 软件Ribbon 界面如图2 所示。
图2 厂房CAD Ribbon界面
为增加程序可读性和界面友好性,绘制了部分界面图标,见表1。经过添加Ribbon 界面,厂房CAD 可以在AutoCAD2007 及以上版本使用,并能大大加快软件操作效率。
表1 厂房CAD Ribbon界面部分图标展示
通过研究厂房CAD 软件Ribbon 界面的开发过程发现,可以得到以下结论:
(1)Ribbon 界面是设计单位各种常用软件(例如Bentley 平台旗下的MicroStation、Office 系列软件等)的发展趋势,设计人员掌握基本的Ribbon 界面开发技能和软件界面定制技巧,能提高设计效率,增强软件易用性。
(2)目前绝大多数计算机已经采用64 位操作系统,AutoCAD2007 以前的版本,很难安装在64位操作系统上,因此,不建议设计人员使用低于AutoCAD2006 版本的软件。
(3)研究发现,随着AutoCAD 版本的升级,每个版本对应的引用库文件也不同(例如自定义界面的CUI 文件或CUIx 文件),开发者应结合AutoCAD官方的升级说明进行开发,否则容易引起错误。