Auto CAD二次开发——Ribbon界面(1)

学如逆水行舟,不进则退。 愿自己不忘初心,坚持积累。感谢大家的支持。本篇博客主要是学习Ribbon界面,关于Ribbon界面的内容十分多,从今天开始一步步学习。在我看来,Ribbon 界面必然是CAD软件未来的主流趋势。对于绘制圆、直线这类单一基础操作,界面形式的影响或许并不明显,但在处理综合性复杂任务时,其优势便尤为突出 ------ 这类操作往往无法一步完成,需要多步骤、多命令的协同配合。而用户大多难以熟记所有快捷键,此时Ribbon界面通过模块化的功能布局,搭配直观且具有明确辨识度的图标,能让用户快速定位所需功能,极大降低操作门槛,同时带来更流畅、更友好的使用体验。

目录

1、基础知识储备

2、选项卡、面板、按钮的加载

3、部分演示代码:

4、演示结果:


1、基础知识储备

今天我们探究一下CAD中的按钮类型,目前个人发现包括:

1、BibbonButton(普通按钮)

2、RibbonSplitButton(带分隔按钮)

3、RibbonRowPanel+RibbonButton类,面板堆叠RibbonButton

4、RibbonRowPanel+RibbonSplitButton类,面板堆叠RibbonSplitButton

5、下拉面板的实现

面板分隔符:panelSource.Items.Add(new RibbonPanelBreak());//换行,换行,实现下拉面板功能。

同理下拉菜单中可以实现RibbonSplitButton(带分隔按钮)、RibbonSplitButton(带分隔按钮)、RibbonRowPanel+RibbonButton类、RibbonRowPanel+RibbonSplitButton类等功能。

6、RibbonGallery类,这是CAD官方自己封装的类与combo类不同,该类可以放置图片在其item中。

注意Items为图片位置,MenuItems为管理样式,管理样式的其实就是一个按钮,将按钮加载到RibbonGallery.MenuItems中即可。

7、RibbonCombo类

个人水平有限只能做出这样,如果有人有思路,可以相互学习,或者交换只是,只要我博客中出现的东西。

8、RibbonDataBoundDropDown类型(个人感觉为是的下拉列表框的一种其他风格)

可以设置字体为大字体,图片为大图片,而选择以后为小图标显示

9、RibbonSeparator类型

10、RibbonCompositeltem类型

这种目前水平有限,没有实现,所有的方法都试了,要不就是不显示,要不就是一列一列,个人认为这个组合是下拉列表+行面板组合(普通按钮),但是所有方法都试了,如果大家有方法可以交流一下,米不多,个人可以出。

11、下拉面板旁边的小箭头按钮

这个如何设置,个人也不会,哎,官方开放的按钮,虽然可能使用c#可以做出来但是感觉和CAD纯生太不太像。以后有时间接着试,或者万一2050年接口开放了,学习一下

2、选项卡、面板、按钮的加载

这篇文章主要学习RibbonTab(选项卡),BibbonPanel(面板),和BibbonButton(按钮)三类,后面的逐步进行探索。

这里提前预告一下,按照学习内容封装为五个类库,CurPaht、RibbonTool、RibbonCommandHandler、RibbonButtonInfos、RibbonButtonEX。其中:

1、RibbonTool

主要封装三个功能函数,添加Ribbon选项卡、添加面板、给面板添加下拉组合按钮。

2、RibbonCommandHandler

主要封装的是命令处理功能函数

3、RibbonButtonInfos

主要封装的各按钮模块,例如直线、多段线、圆等。

4、CurPath

主要是定义标签位图的路径

5、RibbonButtonEX

主要封装的是Ribbon界面的扩展函数以及各种事件函数,例如鼠标进入事件、鼠标离开事件、设置位图等。

3、部分演示代码:

cs 复制代码
 [CommandMethod("RibbonDemo")]
        public void RibbonDemo()
        {
            //1)创建一个选项卡
            RibbonControl ribbonCtrl = ComponentManager.Ribbon; //获取cad的Ribbon界面
            RibbonTab tab = ribbonCtrl.AddTab("白雪公主的后妈", "Acad.RibbonId1"); //给Ribbon界面添加一个选项卡

            CurPath.curPaht = Path.GetDirectoryName(this.GetType().Assembly.Location) + "\\"; //获取程序集的加载路径

            //2)给选项卡添加Ribbon面板
            RibbonPanelSource panelSource = tab.AddPanel("绘图");

            //3.1)给面板添加命令按钮
            panelSource.Items.Add(RibbonButtonInfos.LineBtn); //添加直线命令按钮
            panelSource.Items.Add(RibbonButtonInfos.PolylineBtn); //添加多段线命令按钮
        }

4、演示结果:

相关推荐
程序设计实验室1 小时前
Spark.NET:一个试图把 Django / Rails 式开发体验带回 .NET 世界的全栈 Web 框架。
c#
byoass2 小时前
智巢AI知识库深度解析:企业文档管理从大海捞针到精准狙击的进化之路
开发语言·网络·人工智能·安全·c#·云计算
njsgcs6 小时前
solidworks自动标注折弯4 无向图 c#
开发语言·c#·solidworks
我是唐青枫7 小时前
C#.NET ThreadLocal 深入解析:线程独享数据、性能收益与实战边界
c#·.net
JQLvopkk9 小时前
C# 工业级上位机:交互实战
开发语言·c#·交互
kingwebo'sZone10 小时前
PdfiumViewer使用权限控制期操作按钮(PdfViewer其实也可以完整兼容)
c#
张小俊_10 小时前
WPF 跨线程 UI 更新与硬编码赋值引发的 Bug 排查
c#·bug·wpf
無斜11 小时前
【CAPL实用开发】--- CAPL调用 .NET DLL
开发语言·c#·capl·canoe
puamac11 小时前
UcTabWindow 布局多tab,加载编辑器和资源管理器等自定义控件
c#·编辑器·datagridview
唐青枫11 小时前
别再把增删改查写成一锅粥!C#.NET CQRS 从原理到实战
c#·.net