AutoCAD .Net 创建Ribbon界面(一)

从 AutoCAD 2010 版开始,引入了 Ribbon 界面。
那怎样用代码创建 Ribbon 界面呢?
本篇文章讲解如何创建如下图所示的 Ribbon Tab 页:测试Ribbon页。
这里写图片描述
如上图所示:
AutoCAD 的 Ribbon 界面由一系列 Tab 组成:默认、插入、注释……
测试Ribbon页 是我们创建的 Tab 页。
它由两个 Panel 组成:Panel1、Panel2。
Panel 下面就是三个按钮:直线、圆、Test。

除了需要添加 AutoCAD 引用: acmgd、acdbmgd、accoremgd(AutoCAD 2012版本及后续版本)。
还需要添加如下 AutoCAD 引用:
* AcWindows
* AdWindows

using System;
using System.Collections.Generic;
using System.Text;

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;

using Autodesk.AutoCAD.Ribbon;
using Autodesk.Windows;

//-----------------------------------------------
private static RibbonTab myRibbonTab = null;

[CommandMethod("MyRibbonTab")]
public static void MyRibbonTab()
{
    // 创建Ribbon Tab页
    if (myRibbonTab == null)
    {
        myRibbonTab = new RibbonTab();
        myRibbonTab.Title = "测试Ribbon页";
        myRibbonTab.Id = "MyRibbonTab";

        //
        RibbonPanel panel1 = new RibbonPanel();
        RibbonPanelSource panel1Src = new RibbonPanelSource();
        panel1Src.Title = "Panel 1";
        panel1.Source = panel1Src;
        myRibbonTab.Panels.Add(panel1);

        RibbonButton rbnBtnLine = NewRibbonBtn("直线");
        panel1Src.Items.Add(rbnBtnLine);
        RibbonButton rbnBtnCircle = NewRibbonBtn("圆");
        panel1Src.Items.Add(rbnBtnCircle);

        //
        RibbonPanel panel2 = new RibbonPanel();
        RibbonPanelSource panel2Src = new RibbonPanelSource();
        panel2Src.Title = "Panel 2";
        panel2.Source = panel2Src;
        myRibbonTab.Panels.Add(panel2);

        RibbonButton rbnBtnTest = NewRibbonBtn("Test");
        panel2Src.Items.Add(rbnBtnTest);
    }

    // 在AutoCAD的Ribbon窗口中显示
    RibbonControl ribCntrl = RibbonServices.RibbonPaletteSet.RibbonControl;
    ribCntrl.Tabs.Add(myRibbonTab);
}

private static RibbonButton NewRibbonBtn(string text)
{
    RibbonButton button = new RibbonButton();
    button.Text = text;
    button.ShowText = true;
    return button;
}

以 AutoCAD 2014 版本为例,以上代码编译时会报错,添加如下引用即可解决。
* WindowsBase
* PresentationCore
* PresentationFramework
* System.Xaml


以上部分,只是实现了 Ribbon 界面,但 Ribbon 按钮还没实现触发执行命令。
首先,我们实现一自定义类 AdskCommandHandler,通过该类关联 Ribbon 按钮和对应的命令。

using Autodesk.AutoCAD.ApplicationServices.Core;
using Autodesk.Windows;
using System;
using System.Threading;
using System.Windows.Input;

//namespace HelloAcad2014
//{
    public class AdskCommonHandler : ICommand
    {
        public event EventHandler CanExecuteChanged;

        public bool CanExecute(object parameter)
        {
            return true;
        }

        public void Execute(object parameter)
        {
            RibbonButton button = parameter as RibbonButton;
            if (button != null)
            {
                Application.DocumentManager.MdiActiveDocument.SendStringToExecute(
                    (string)button.CommandParameter, true, false, true);
            }
        }
    }
//}

然后,更改 MyRibbonTab 代码如下:

using System;
using System.Collections.Generic;
using System.Text;

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;

using Autodesk.AutoCAD.Ribbon;
using Autodesk.Windows;

//-----------------------------------------------
private static RibbonTab myRibbonTab = null;

[CommandMethod("MyRibbonTab")]
public static void MyRibbonTab()
{
    // 创建Ribbon Tab页
    if (myRibbonTab == null)
    {
        myRibbonTab = new RibbonTab();
        myRibbonTab.Title = "测试Ribbon页";
        myRibbonTab.Id = "MyRibbonTab";

        //
        RibbonPanel panel1 = new RibbonPanel();
        RibbonPanelSource panel1Src = new RibbonPanelSource();
        panel1Src.Title = "Panel 1";
        panel1.Source = panel1Src;
        myRibbonTab.Panels.Add(panel1);

        RibbonButton rbnBtnLine = NewRibbonBtn("直线", "line ");
        panel1Src.Items.Add(rbnBtnLine);
        RibbonButton rbnBtnCircle = NewRibbonBtn("圆", "circle ");
        panel1Src.Items.Add(rbnBtnCircle);

        //
        RibbonPanel panel2 = new RibbonPanel();
        RibbonPanelSource panel2Src = new RibbonPanelSource();
        panel2Src.Title = "Panel 2";
        panel2.Source = panel2Src;
        myRibbonTab.Panels.Add(panel2);

        RibbonButton rbnBtnTest = NewRibbonBtn("Test", "MyCmdTest ");
        panel2Src.Items.Add(rbnBtnTest);
    }

    // 在AutoCAD的Ribbon窗口中显示
    RibbonControl ribCntrl = RibbonServices.RibbonPaletteSet.RibbonControl;
    bool isShow = false;
    foreach (RibbonTab rbnTab in ribCntrl.Tabs)
    {
        if (rbnTab == myRibbonTab)
        {
            isShow = true;
            break;
        }
    }
    if (!isShow)
    {
        ribCntrl.Tabs.Add(myRibbonTab);
    }
}

[CommandMethod("MyCmdTest")]
public static void MyCmdTest()
{
    Document doc = Application.DocumentManager.MdiActiveDocument;
    doc.Editor.WriteMessage("www.caxdev.com\n");
}

private static RibbonButton NewRibbonBtn(string text, string cmd)
{
    RibbonButton button = new RibbonButton();
    button.Text = text;
    button.ShowText = true;
    button.CommandHandler = new AdskCommonHandler();
    button.CommandParameter = cmd;
    return button;
}

注意:
RibbonButton 的 CommandParameter 一定要在命令字符串最后加空格。

参考文章:
AutoCAD中程序创建Ribbon界面执行AutoCAD命令

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: AutoCAD .NET Ribbon菜单是AutoCAD软件中的一个功能菜单,它位于AutoCAD界面顶部,并提供了各种工具和命令。Ribbon菜单是一个易于访问和使用的界面,有助于用户快速找到所需的功能。 Ribbon菜单由多个选项卡组成,每个选项卡都包含一组相关的工具和命令。通常,每个选项卡都对应于特定的设计任务,比如绘图、修改或注释等。 每个选项卡又分为多个面板,每个面板代表一个相关的子主题。面板上显示了一系列的工具按钮或命令图标,用户可以通过单击这些按钮或图标来执行相应的功能。 Ribbon菜单还提供了一些额外的功能,如快速访问工具栏、状态栏和命令行。快速访问工具栏是一个位于菜单顶端的小工具栏,用户可以将常用的命令添加到其中,以便快速访问。状态栏显示了当前的工作状态,比如当前的坐标、单位设置等。命令行是一个文本区域,用户可以输入命令或参数来执行相应的操作。 通过Ribbon菜单,用户可以方便地访问AutoCAD提供的各种功能和工具,从而提高工作效率。用户可以根据自己的需要自定义Ribbon菜单,添加或删除选项卡、面板和命令,以适应特定的设计任务和工作流程。 ### 回答2: AutoCAD.NET Ribbon菜单是AutoCAD软件中的一个功能,它是一个集成化的菜单界面,提供了易于使用和导航的工具和选项。 Ribbon菜单以水平方式显示在顶部的工具栏上,其中包含了各种命令和功能按钮。 Ribbon菜单分为多个选项卡,每个选项卡上又分为多个面板。每个面板包含了一组相关的工具和选项,以便用户可以方便地访问和使用。用户可以通过单击选项卡和面板之间的标题,来切换到不同的面板和选项卡。 每个面板上,又包含了各种命令和功能按钮。用户可以通过单击这些按钮来执行不同的操作,比如绘制线条、创建图形、编辑对象等。用户还可以使用搜索框来查找特定的命令和工具。 Ribbon菜单的优点是,它提供了直观的界面和易于理解的命令组织结构,使用户更容易找到所需的工具和选项。它还支持自定义,用户可以根据自己的需要添加或删除选项卡、面板和按钮。 总之,AutoCAD.NET Ribbon菜单是AutoCAD软件中的一种功能强大的菜单界面,使用户能够轻松地访问和使用各种命令和功能。它的直观性和可定制性,使其成为AutoCAD软件中不可或缺的一部分。 ### 回答3: Autodesk AutoCAD是一款常用的CAD软件,它提供了许多不同的菜单选项来帮助用户进行绘图和设计。其中,AutCAD.NET Ribbon菜单是AutoCAD的一个重要功能。 Ribbon菜单是Autodesk AutoCAD的主菜单,它位于软件界面的顶部。Ribbon菜单使用了一个类似于Microsoft Office的界面,将不同的工具和命令集中在不同的选项卡中,使得用户可以更方便地访问和使用这些功能。Ribbon菜单的选项卡通常按照功能进行分类,如绘图工具、编辑工具、注释工具等。 在Ribbon菜单中,每个选项卡又包含了多个面板,每个面板又包含了多个工具和命令按钮。这种层次结构的设计使得用户可以更轻松地找到所需的工具和命令,并且可以根据需要进行自定义。用户可以通过选择不同的选项卡和面板,在界面上展开或收起不同的工具栏,以及调整和配置菜单的显示方式。 Ribbon菜单的设计使得AutoCAD的功能更加整合和统一,提供了更便捷和高效的绘图和设计体验。用户可以通过Ribbon菜单直接访问到众多AutoCAD的功能,无需再费时费力地搜索和找寻。此外,Ribbon菜单还支持自定义,用户可以根据自己的习惯和需求,在菜单中添加或删除工具按钮,以及调整工具按钮的顺序和位置。 总之,Autodesk AutoCADRibbon菜单是一种使用方便且功能强大的工具,它为用户提供了一个直观、整洁和统一的界面,通过它用户可以更方便地使用AutoCAD的各种功能和命令,提高绘图和设计的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值