C#之CAD二次开发: Ribbon界面初探

# 0. 引言

从CAD2009版本以后就开始使用上了Ribbon界面,更早的版本使用的界面相对较为简单,对比一下就知道啥是Ribbon界面了

这是CAD2006界面,经典的菜单工具栏,略low

这是CAD2018的Ribbon界面

Ofiice从07版本开始采用Ribbon界面,AutoCAD跟随其后在CAD2009开始就使用Ribbon界面

来看看Ofiice2016的界面

那么问题来了,这个Ribbon界面有什么好的呢?光看上面好像就是界面做得更细化了,更有逼格了

其实远远不止于此

Ribbon告别了Windows程序常见的菜单及工具类,转而将所有功能分裂成多个不同的选项卡,显示在上半部分的功能区中,选项卡继续细分以竖线分隔成多个板块。

这可是软件微软交互设计团队经过N次用户调研而制定的方案,设计初衷当然是为了提升用户使用效率。

Ribbon界面的灵魂在整个界面左上角,里面的东东可以让你快速完成一些常规操作

就是这个东东

讲了这么多,一句话就是这个界面很友(zhuang)好(bi)! 当然也是以后界面设计的一个趋势。

那么如何通过代码在CAD里面制作属于自己的界面,以供秀一秀下一步骚操作

还是老方法,先模仿里面的界面制作

# 1. Ribbon界面开发配置

这里我们新建一个项目,跟之前不一样的是这里需要选择WPF应用,这个WPF是什么东东自行查阅资料

新建项目后删除这个三个东东

老样子,添加这三个类库

这里提一嘴,之前一直没说这几个类库作用

AcDbMgd.dll.             当使用图形文件中的对象时使用这个DLL文件。 
AcMgd.dll.                 当使用AutoCAD应用程序时使用这个DLL文件。 
AcCui.dll                    当使用自定义文件时使用这个DLL文件
AcCoreMgd.dll.         当处理编辑器、发布与打印、定义 AutoLISP 命令和函数时引用

因为要使用Ribbon界面,还需要引入下面这个家伙

注意事项提一嘴,记得把复制本地都设为false

然后右键项目,将输出类型设置为类库

调试程序设置为CAD,这样方便调试

这样就设置完成,可以开始你的骚操作了

# 2. 添加Ribbon选项卡和面板

代码封装如下

选项卡

面板

完整代码

using Autodesk.Windows;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _09_Ribbon界面
{
    public static partial class RibbonTools
    {
        /// <summary>
        /// 添加Ribbon选项卡
        /// </summary>
        /// <param name="ribbonCtrl">Ribbon控制器</param>
        /// <param name="title">选项卡标题</param>
        /// <param name="ID">选项卡ID</param>
        /// <param name="isActive">是否置为当前</param>
        /// <returns>RibbonTab</returns>
        public static RibbonTab AddTab(this RibbonControl ribbonCtrl, string title, string ID, bool isActive)
        {
            RibbonTab tab = new RibbonTab();
            tab.Title = title;
            tab.Id = ID;
            ribbonCtrl.Tabs.Add(tab);
            tab.IsActive = isActive;
            return tab;
        }


        /// <summary>
        /// 添加面板
        /// </summary>
        /// <param name="tab">Ribbon选项卡</param>
        /// <param name="title">面板标题</param>
        /// <returns>RibbonPanelSource</returns>
        public static RibbonPanelSource AddPanel(this RibbonTab tab, string title)
        {
            RibbonPanelSource panelSource = new RibbonPanelSource();
            panelSource.Title = title;
            RibbonPanel ribbonPanel = new RibbonPanel();
            ribbonPanel.Source = panelSource;
            tab.Panels.Add(ribbonPanel);
            return panelSource;
        }
    }
}

测试代码:

using Autodesk.AutoCAD.Runtime;
using Autodesk.Windows;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _09_Ribbon界面
{

    public class ProgramClass
    {
         [CommandMethod("RibbonDemo")]
         public void RibbonDemo()
        {
            RibbonControl ribbonCtrl = ComponentManager.Ribbon;
            RibbonTab tab = ribbonCtrl.AddTab("测试选项卡", "Acad.RibbonId1", true);

            tab.AddPanel("绘图");
            tab.AddPanel("修改");
            tab.AddPanel("注释");
            tab.AddPanel("图层");
        }
    }
}

效果

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值