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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring boot学习第十篇:elastic search必须使用用户名密码授权后才能访问、在java代码中操作索引

前提条件:安装好了elastic search服务,参考:elastic search入门_ubuntu elasticsearch 密码-CSDN博客 1、配置elastic search必须使用用户名密码授权才能访问 1.1开启x-pack验证 修改config目录下面的elasticsearch.yml文件,添…

VM 虚拟机和容器技术之间有什么区别?

随着云计算技术的不断发展,虚拟机和容器技术作为两种常见的虚拟化技术,被广泛应用于云计算领域。虽然虚拟机和容器技术都是虚拟化技术,但它们之间存在一些重要的区别。本文将详细介绍虚拟机和容器技术的区别,以便读者更好地了解这…

亚信安慧AntDB推动技术创新与满足用户需求

随着互联网技术的迅猛发展,大数据时代的到来,数据库的需求不断增长。在这样的背景下,国产分布式数据库正逐渐崭露头角,AntDB作为其中的重要代表,也积极参与到了这场竞争中。作为国内的技术创新者,AntDB不仅…

【Mybatis】从0学习Mybatis(2)

前言 本篇文章是从0学习Mybatis的第一篇文章,由于篇幅太长CSDN会限流,因此我打算分开两期来写,这是第二期!第一期在这儿:【Mybatis】从0学习Mybatis(1)-CSDN博客 1.什么是ResultMap结果映射&am…

从小白到入门webrtc音视频通话

0. 写在前面 先会骑车,再研究为什么这么骑,才是我认为学习技术的思路,底部付了demo例子,根据例子上面的介绍即可运行。 1. 音视频通话要用到的技术简介 websocket 介绍:1. 服务器可以向浏览器推送信息;2…

C#,河豚算法(Blowfish Algorithm)的加密、解密源代码

Bruce Schneier 1 河豚算法(Blowfish Algorithm) 河豚算法(Blowfish Algorithm)是1993年11月由Bruce Schneier设计的一个完全开源的算法。 Blowfish算法是一个分组长度为64位、密钥长度可变的对称分组密码算法。 Blowfish算法具…

学习Android的第五天

目录 Android ConstraintLayout 约束布局 简介 ConstraintLayout 约束布局分类 1、相对定位 (Relative positioning) 2、边距 ( Margins ) 3、居中定位和偏向 ( Centering positioning and bias ) 4、环形定位 ( Circular positioning ) 5、对可见性的处理 ( Visibilit…

万物皆可播时代,我们如何把握机遇

在万物皆可播的时代,我们可以通过以下方式来把握机遇: 了解市场需求:通过观察和了解消费者的需求和偏好,发现具有潜力的市场空白。关注时尚、美妆、美食、旅游等领域的发展趋势,掌握最新的流行趋势,结合自…

春运开始,北斗卫星助力盲区来车预警提示

春运开始,北斗卫星助力盲区来车预警提示 近期春运开始,高德地图启动了2024年的“温暖回家路”服务计划,通过数字化服务创新保障春运出行。除了具备自学习能力的新能源导航首发亮相外,还重点升级了盲区会车预警服务。在山区弯道、…

❤ React18 环境搭建项目与运行(地址已经放Gitee开源)

❤ React项目搭建与运行 环境介绍 node v20.11.0 react 18.2 react-dom 18.2.0一、React环境搭建 第一种普通cra搭建 1、检查本地环境 node版本 18.17.0 检查node和npm环境 node -v npm -v 2、安装yarn npm install -g yarn yarn --version 3、创建一个新的React项目…

ABAP 笔记--内表结构不一致,无法更新数据库MODIFY和UPDATE

目录 ABAP 笔记内表结构不一致,无法更新数据库MODIFY和UPDATE ABAP 笔记 内表结构不一致,无法更新数据库 MODIFY和UPDATE 如果是使用MODIFY或者UPDATE

Live800:从客户反馈中学习与改进,塑造卓越的企业客户服务

在当今的商业环境中,客户反馈已经成为企业改进产品和服务,提升客户满意度,增强品牌形象的重要工具。今天将以企业客户服务为例,探讨如何从客户反馈中学习和改进,包括收集客户反馈、分析客户反馈、实施改进措施等方面。…

远程主机可能不符合 glibc 和 libstdc++ Vs Code 服务器的先决条件

vscode连接远程主机报错,原因官方已经公布过了,需要远程主机 glibc>2.28,所以Ubuntu18及以下版本没法再远程连接了,其他Linux系统执行ldd --version查看glibc版本自行判断。 解决方案建议: 不要再想升级glibc了 问题…

Golang GC 介绍

文章目录 0.前言1.发展史2.并发三色标记清除和混合写屏障2.1 三色标记2.2 并发标记问题2.3 屏障机制Dijkstra 插入写屏障Yuasa 删除写屏障混合写屏障 3.GC 过程4.GC 触发时机5.哪里记录了对象的三色状态?6.如何观察 GC?方式1:GODEBUGgctrace1…

机器学习 | 探索朴素贝叶斯算法的应用

朴素贝叶斯算法是一种基于贝叶斯定理和特征条件独立假设的分类算法。它被广泛应用于文本分类、垃圾邮件过滤、情感分析等领域,并且在实际应用中表现出色。 朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法: 1)对于给定的待分类项r…

Architecture Lab:Part C【流水线通用原理/Y86-64的流水线实现/实现IIADDQ指令】

目录 任务描述 知识回顾 流水线通用原理 Y86-64流水线实现(PIPE-与PIPE) 开始实验 IIADDQ指令的添加 优化 ncopy.ys 仅用第四章知识,CEP11.55 8x1展开,CPE9.35 8x1展开2x1展开消除气泡,CPE8.10 流水线化通过…

算法每日一题: 使用循环数组所有元素相等的最少秒数 | 哈希

大家好,我是星恒,今天给大家带来的是一道需要感觉规律的题目,只要读懂题目中的规律,就可以做出来了 这道题用到了哈希,还有一个关键点比较类似循环队列 题目:leetcode 2808 给你一个下标从 0 开始长度为 n…

Postman发送带登录信息的请求

环境:win10Postman10.17.7 假设有个请求是这样的: RequiresPermissions("tool:add") PostMapping(value"/predict") ResponseBody /** * xxx * param seqOrderJson json格式的参数 * return */ public String predictSampleIds(Req…

svg基础(三)分组、渐变

上一篇文章简单介绍了svg常用标签及其属性,本篇主要介绍分组&#xff0c;渐变 1 分组<g> 分组容器 添加到g元素上的变换会应用到其所有的子元素上添加到g元素的属性会被其所有的子元素继承定义复杂对象&#xff0c;可通过<use>元素引用 1.1 分组 <svg>&…

EasyExcel分页上传数据

EasyExcel分页上传数据 一、实例 controller上传入口 PostMapping("/upload")ResponseBodyLog(title "导入工单", businessType BusinessType.IMPORT)public AjaxResult uploadFile(HttpServletRequest request, MultipartFile files) throws Exceptio…