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文件放一起

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/371050.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RK3568平台 设备模型基本框架-kobject 和kset

一.什么是设备模型 字符设备驱动通常适用于相对简单的设备,对于一些更复杂的功能,比如说电源管理和热插拔事件管理,使用字符设备框架可能不够灵活和高效。为了应对更复杂的设备和功能,Linux内核提供了设备模型。设备模型允许开发…

西瓜书学习笔记——流形学习(公式推导+举例应用)

文章目录 等度量映射(仅保留点与其邻近点的距离)算法介绍实验分析 局部线性嵌入(不仅保留点与其邻近点的距离还要保留邻近关系)算法介绍实验分析 等度量映射(仅保留点与其邻近点的距离) 算法介绍 等度量映…

Unity动画循环偏移的使用

最近项目中有一个需求是做煤矿中猴车的动画,动画本身不复杂,但是猴车很多,怎么能简化工作量呢? 首先单个猴车的动画循环是必须要做的,重点是怎么让不同的猴车动画按顺序错开,研究了以下,可以通过…

后端登录校验

文章目录 登录校验CookieSessionJWT生成JWT校验JWT基于JWT进行身份验证CSRF Cookie、Session、Token的区别?过滤器(Filter)配置过滤器过滤器链 登录校验 由于HTTP协议是无状态的,我们在进行登录后等一系列接口请求是无法直接区分是哪一个用户的发给服务…

电路设计(10)——超温报警电路的proteus仿真

1.题目背景 在现实生活中,常有一种工程技术,即带有自动温度补偿的设备,能在规定温度内正常工作。但是为了设备安全,需设定工作的上限温度,万一温控补偿失效,设备温度一旦超出上限温度时,便立即切…

ES高可用架构涉及常用功能整理

ES高可用架构涉及常用功能整理 1. es的高可用系统架构和相关组件2. es的核心参数2.1 常规配置2.2 特殊优化配置2.2.1 数据分片按ip打散2.2.2 数据分片机架感知2.2.3 强制要求数据分片机架感知2.2.4 写入线程池优化2.2.5 分片balance优化2.2.6 限流控制器优化 3. es常用命令3.1 …

项目中将sass更换成less(TypeError: this.getOptions is not a function已解决)

在更换之前,首先了解sass与less在用法上的区别有哪些(这里简单提几个): 变量区别:Less中用,Sass用$sass支持条件语句,可以使用if{}else{}、for循环等,而less不支持在定义变量时候&a…

PyTorch 2.2 中文官方教程(十八)

开始使用完全分片数据并行(FSDP) 原文:pytorch.org/tutorials/intermediate/FSDP_tutorial.html 译者:飞龙 协议:CC BY-NC-SA 4.0 作者:Hamid Shojanazeri,Yanli Zhao,Shen Li 注意…

如何获取和查找您的Android设备的序列号

Hello大家好!我是咕噜铁蛋!,我们经常会在文章中提及到各种各样的Android设备,而其中一个重要的标识就是设备的序列号。设备的序列号在很多情况下被用于唯一标识一个设备,例如在软件开发中进行设备的调试和测试&#xf…

Python统计分析——参数估计

参考资料:用python动手学统计学 所谓参数就是总体分布的参数。 1、导入库 # 导入用于数值计算的库 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 导入用于绘图的库 from matplotlib import pyplot as plt import seabor…

FL Studio Producer Edition 21.2.2全插件版+Crack下载链接(亲测可用,非钓鱼)

不知道为什么现在钓鱼的这么多(有答案的请在评论区上告诉我),就一个学习版的编曲软件有必要这样子搞吗?我也是在各类博客上找了一大堆教程,根本没几个能用的,索性直接到海盗湾上找了一个,发现可…

学习ArtTs -- 初见ArkTs

作者:Uncle_Tom 原文链接:学习ArtTs -- 初见ArkTs-云社区-华为云 1. 前言 需要静态分析去检查一个语言,必须对这个语言有深刻的认识,才能有效的对这个语言进行有效的检查。 我常说:“作为一个程序分析员需要比一般的程序员考虑…

移动端基础-vw适配

什么是vw 相对单位 相对视口的尺寸 vw:viewport width 换算 1vw1/100视口宽度 vw不需要向rem一样检查视口宽度 若视口宽为375px 1vw3.75px vw与vmin的区别 vmin更照顾横竖屏问题 1vw是视口宽度的100%,而vmin是找宽度和高度中最小的那个,这样横屏…

Ansible自动化工具(1)

目录 ansible的特性:. 二.部署ansible 管理端安装 ansible: ansible 目录结构: 管理主机上配置主机清单: ​编辑 配置密钥对验证: ansible 命令行模块 : 1.command 模块 指定 ip 执行…

Python使用zdppy_es国产框架操作Elasticsearch实现增删改查

Python使用zdppy_es国产框架操作Elasticsearch实现增删改查 本套教程配套有录播课程和私教课程,欢迎私信我。 Docker部署ElasticSearch7 创建基本容器 docker run -itd --name elasticsearch -p 9200:9200 -e "discovery.typesingle-node" -e ES_JAVA_…

esp8266 步骤

安装驱动 http://arduino.esp8266.com/stable/package_esp8266com_index.json oled库 esp8266-oled-ssd1306

网络规划与部署实训

一 实训目的及意义 本周实训主要是了解网络规划与部署,熟悉三大厂商华为、思科、锐捷交换机路由器以及相关协议的原理和配置,提高学生的动手能力和分析规划部署能力。 实训主要针对计算机网络系统集成的设计与实现的实际训练,着重锻炼学生熟练…

网站不收录,与服务器不备案有关吗

随着互联网的快速发展,网站已经成为企业、个人和机构宣传和展示自己的重要平台。然而,许多网站在建设完成后却面临着不收录的问题,这给网站的管理者和拥有者带来了很大的困扰。其中,一些人认为,网站不收录的原因与服务…

什么是前端工程化,请举例说明

前端工程化 前端工程化的定义为什么需要前端工程化前端工程化的核心概念 模块化开发:组件化开发:规范化开发:自动化开发:持续集成 前端工程化的主要工具前端工程化的应用总结: 前端工程化 前端工程化的定义 前端工程…

百面嵌入式专栏(面试题)华为面试题

文章目录 题目:static有什么用途?(请至少说明两种)题目:引用与指针有什么区别?题目:描述实时系统的基本特性题目:全局变量和局部变量在内存中是否有区别?如果有,是什么区别?题目:什么是平衡二叉树?题目:堆栈溢出一般是由什么原因导致的?题目:什么函数不能声明为…