C# CAD界面-自定义工具栏(二)

运行环境 vs2022 c# cad2016  调试成功

一、引用 

  • acdbmgd.dll
  • acmgd.dll
  • accoremgd.dll
  • Autodesk.AutoCAD.Interop.Common.dll
  • Autodesk.AutoCAD.Interop.dll

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Interop;
using System.IO; 

 复制本地 False

 二、代码步骤

C#代码定义了一个类Class1,该类实现了Autodesk.AutoCAD.Runtime.IExtensionApplication接口,这意味着它是一个AutoCAD扩展应用,会在AutoCAD启动时自动加载并执行初始化操作。

  • Initialize()方法:当AutoCAD启动时调用。在这个方法中,调用了AddToolBar()方法,用于在AutoCAD界面中添加一个新的自定义工具栏。

  • Terminate()方法:当AutoCAD退出时调用。这里没有实现任何功能。

  • AddToolBar()方法:

    • 首先,获取当前运行的AutoCAD应用程序实例。
    • 创建一个名为"001"的新工具栏,并将其添加到AutoCAD主菜单组“ACAD”下。
    • 设置位图路径,假设按钮图标文件(button_sum.bmp和button_batch.bmp)与执行程序位于同一目录。
    • 分别为新工具栏添加两个按钮:"数字文本求和"和"批量转换",每个按钮都有标签、提示信息以及关联的AutoCAD命令("Sum "和"dwgToPdf "),同时设置其位图图标。
    • 将工具栏停靠到右侧。
    • 最后,将工具栏设为可见。

总之,这段代码是为AutoCAD设计的一个扩展应用,其主要功能是在AutoCAD启动时自动创建并显示一个带有两个按钮的自定义工具栏,这两个按钮分别关联了"Sum "和"dwgToPdf "命令,并使用指定的位图作为图标。

 三、完整代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Interop;
using System.IO; 

namespace cad工具栏01
{
    public class Class1 : IExtensionApplication 
    {
        public void Initialize()
        {
            AddToolBar();//启时自动加载工具栏
        }

        public void Terminate()
        {
        }
        public void AddToolBar()
        {
            // 获取当前运行AutoCAD应用程序的引用
            Autodesk.AutoCAD.Interop.AcadApplication acadApp = (AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication;

            // 创建一个新的工具栏对象
            Autodesk.AutoCAD.Interop.AcadToolbar atb = null;
            atb = acadApp.MenuGroups.Item("ACAD").Toolbars.Add("001");

            // 设置位图路径(假设位图文件与执行程序在同一目录)
            string bitmapPath = Path.Combine(Directory.GetCurrentDirectory(), "button_sum.bmp");

            // 添加第一个按钮:“0101”
            Autodesk.AutoCAD.Interop.AcadToolbarItem atbiSum = atb.AddToolbarButton(0, "数字文本求和", "数字文本求和", "Sum ", false);
            atbiSum.SetBitmaps(bitmapPath, bitmapPath);

            // 设置第二个位图路径
            bitmapPath = Path.Combine(Directory.GetCurrentDirectory(), "button_batch.bmp");

            // 添加第二个按钮:“批量转换”
            Autodesk.AutoCAD.Interop.AcadToolbarItem atbiBatch = atb.AddToolbarButton(1, "批量转换", "批量转换", "dwgToPdf ", false);
            atbiBatch.SetBitmaps(bitmapPath, bitmapPath);

            // 将工具栏停靠到右侧
            atb.Dock(Autodesk.AutoCAD.Interop.Common.AcToolbarDockStatus.acToolbarDockRight);

            // 显示工具栏
            atb.Visible = true;
        }
    }
}

 bmp图片跟dll文件放一起

//感谢大家的点赞,收藏,转发,关注 

相关推荐

  1. Android实现维码扫描定义扫描界面

    2024-02-05 20:50:05       8 阅读
  2. .定义头文件

    2024-02-05 20:50:05       25 阅读
  3. 定义图像增强工具包

    2024-02-05 20:50:05       17 阅读
  4. 【嵌入式——QT】样式表定义界面

    2024-02-05 20:50:05       20 阅读
  5. 【HarmonyOS NEXT】鸿蒙customScan (定义界面扫码)

    2024-02-05 20:50:05       6 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-05 20:50:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-05 20:50:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-05 20:50:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-05 20:50:05       18 阅读

热门阅读

  1. 使用sql创建数据库以及常用的sql简介

    2024-02-05 20:50:05       28 阅读
  2. Vue实现视频播放

    2024-02-05 20:50:05       24 阅读
  3. 使用Vue+ ECharts进行动态图表展示

    2024-02-05 20:50:05       32 阅读
  4. vue实现父组件与子组件传参

    2024-02-05 20:50:05       31 阅读
  5. C语言如何控制输出精度?

    2024-02-05 20:50:05       37 阅读
  6. 游戏如何选择服务器

    2024-02-05 20:50:05       25 阅读
  7. spring aop实现接口超时处理组件

    2024-02-05 20:50:05       31 阅读