# 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("图层");}}
}

效果

C#之CAD二次开发: Ribbon界面初探相关推荐

  1. c# cad二次开发 ribbon界面 给CAD加个菜单栏

    c# cad二次开发 ribbon界面 给CAD加个菜单栏 using System; using System.Collections.Generic; using System.Text; usi ...

  2. c# cad二次开发实现注记搜索跟扩展属性搜索,并点击即可定位到位置,添加了界面操作

    c# cad二次开发实现注记搜索跟扩展属性搜索,并点击即可定位到位置,添加了界面操作 在这里插入图片描述 using Autodesk.AutoCAD.DatabaseServices; using ...

  3. c# cad 二次开发 类库 对话框 将frame界面添加到类库中

    c# cad 二次开发 类库 对话框 将frame界面添加到类库中 using System; using System.Collections.Generic; using System.Compo ...

  4. cad二次开发——自动运行dll,加载菜单(收集)

    1.自动加载dll的方法(个人觉得下面第4个方法会更方便) cad加载dll_实现CAD插件启动自动加载的三种方法_weixin_39774556的博客-CSDN博客从网上或者别处淘来的CAD插件,效 ...

  5. c#CAD二次开发全套视频目录

    本人非专业编程人员,设计院画图民工一名.自学CAD编程,也写了一些小程序!初期学习lisp编程语言,基本了解CAD各中开发模块,写过一些程序!前段时间自学C#CAD二次开发,遍布网上无教学视频.经过自 ...

  6. cad二次开发程序的绿色安装

    此问题的引入是因为一个cad二次开发软件,客户要求做成绿色安装.何为绿色安装呢?软件包copy到一台电脑上(已安装CAD),双击exe,打开的界面包含自定义的菜单.菜单的图标能正确显示.每个功能能使用 ...

  7. Revit二次开发——Ribbon菜单的创建以及各种不同的button(按钮)的代码总结

    目录 一.创建普通的一个panel里面三个32px*32px的pushbutton,剩下两个写法一样 二.创建三个层叠按钮 层叠按钮图标需为16px*16px 层叠按钮最多为一列放三个,这个也要创建个 ...

  8. CAD二次开发资料汇总

    欢迎加入建筑信息化开发交流群,获取开发资料 群号:711844216 一.背景 对工程出身的朋友来说,CAD就像一位朋友,常伴吾身,为了提高效率,于是小伙伴门开始尝试CAD二次开发,刚入门,资料去哪找 ...

  9. CAD二次开发--像纬地与CASS程序一样双击桌面图标实现插件的自动挂载(不用netload也不用进入后输入挂载命令)

    先说一下我为什么要写这个文章,首先这一块我自己研究并查找了很久,始终没有很好的办法.二是网络上很多办法鱼龙混杂,要不很复杂,要不现在就已经过时了,总之不能解决问题.干脆自己写一下,防止遗忘! 要明白C ...

  10. cad 二次开发 插入图片_CAD如何加载二次开发程序?

    CAD给我们设计师提供了众多的绘图修改命令,满足了我们一般的绘图应用,但是有时候这些命令应用起来有时候并不太方便,为了使我们的绘图命令更加方便快捷,有时候我们需要加载二次开发程序;例如:lisp.VB ...

最新文章

  1. 8位alu运算器(vhdl语言)_C语言中signed char类型,能表示-128到127,为什么负数多一位?...
  2. 分布式与集群是一回事儿么?别让这么简单的问题难住你!
  3. java 图片灰度化
  4. IIS设定 CORS 跨域请求(跨域)
  5. python中文编辑器推荐-Python使用什么编辑比较好,Python编辑器推荐
  6. python 实现HMAC_SHA1算法
  7. 【JavaWeb】JavaScript基础篇+高级篇
  8. linux下 c语言 用write open二进制写文件,Linux下用C语言fopen、fread和fwrite函数对二进制文件的操作-Go语言中文社区...
  9. python小应用之整理手机图片
  10. mutations vuex 调用_Vuex源码解析
  11. 克隆的仓库 设置全局https协议转换成git协议,加快拉取速度(git)
  12. mongodb 实现transaction
  13. 计算机电子极域控制,极域电子教室的反控制实现【无需教师端】
  14. 人脸识别、活体检测、人脸识别面临的挑战
  15. Android串口开发
  16. chrome浏览器主页被劫持为hao123
  17. 年轻人“新宠”冷泡茶:能否开启下一个“立顿时代”?
  18. win10加装机械硬盘卡_win10重装,机械硬盘和SSD的C盘如何分区?记住这2点电脑10年不卡...
  19. 【电脑问题解决】回收站右键,多出来个“找回清空的文件”选项,怎么删除这个选项?
  20. 濒死状态下的静息态网络激活和功能连接

热门文章

  1. 26个字母与ASCII值对照表
  2. java linux 时间戳转时间_Java时间和时间戳的相互转换
  3. android自定义4级联动,使用Android如何实现四级联动地址选择器
  4. 泛微oa明细表添加按钮_关于E8,这些快捷方式你必须知道
  5. (附源码)springboot菠萝大学课室预约分析与设计 毕业设计641656
  6. 数据清洗工具 OpenRefine简介
  7. Openrefine mysql_openrefine 2.5稳定版-OpenRefine下载(数据清洗工具) 2.5 官方稳定版 - 河东下载站...
  8. imagej得到灰度图数据_imageJ 使用教程之样本长度测量
  9. 归并算法 merge
  10. 吴恩达机器学习笔记——线性代数知识回顾、梯度下降、多项式线性回归、正则方程