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.hqwc.cn/news/456336.html

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

相关文章

2. Maven 继承与聚合

目录 2. 2.1 继承 2.2继承关系 2.2.1 思路分析 2.2.2 实现 2.1.2 版本锁定 2.1.2.1 场景 2.1.2.2 介绍 2.1.2.3 实现 2.1.2.4 属性配置 2.2 聚合 2.2.1 介绍 2.2.2 实现 2.3 继承与聚合对比 maven1:分模块设计开发 2. 在项目分模块开发之后啊&#x…

基于Vue的移动端UI框架整理

一、Vant 官方地址:https://youzan.github.io/vant/#/zh-CN/ 简介:有赞公司开发。 特性:60 高质量组件、90% 单元测试覆盖率、完善的中英文文档和示例、支持按需引入、支持主题定制、支持国际化、支持 TS、支持 SSR。 特别说明&#xff1…

Java老兵 转C语言,需要学习的点(最易懂的解释)

一、static 1.1 修饰函数内的局部变量: void sayHi(void) { static int index 5;index; }多次调用sayHi函数,index 5 只有在第一次调用的时候初始化一次,后面的多次调用,此句话就不执行了。 1.2 修饰全局变量或…

python将Word页面纸张方向设置为横向

通过python-docx的章节属性,就可以更改纸张方向、纸张尺寸。 import docx from docx.enum.section import WD_ORIENT from docx.shared import Cmdocument docx.Document() section document.sections[0]# 设置纸张大小为A4大小 section.page_width Cm(21) sect…

JAVA建造者模式详解

建造者模式 1 建造者模式介绍 建造者模式 (builder pattern), 也被称为生成器模式 , 是一种创建型设计模式. 定义: 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 **建造者模式要解决的问题 ** 建造者模式可以将部件和其组装过程分开…

代理与Reflect反射

属性描述符 Proprety Descriptor 属性描述符 用于描述一个属性的相关信息 1.Object.getOwnPropertyDescriptor(对象,属性名) 可以得到一个对象的 某个属性的属性描述符 Object.getOwnPropertyDescriptors(对象) 可以得到某个对象的所有属性描述符 如果需要为某个…

重新排列链表

不难注意到目标链表即为将原链表分成前后两段然后将后半段反转再依照某种规则链接得到的。这样我们的任务即可划分为三步:找到原链表的中点,将原链表的右半端反转,将原链表的两端合并。可以通过快慢指针找到中点不过要注意链表长度分别为奇偶…

算法学习——LeetCode力扣哈希表篇1

算法学习——LeetCode力扣哈希表篇1 242. 有效的字母异位词 242. 有效的字母异位词 - 力扣(LeetCode) 描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同…

Python学习从0到1 day15 Python函数进阶

什么东西的可塑性最强呢? 是水,水能载舟 exciting ——24.2.6 一、函数的多返回值 当一个函数需要多个返回值,该如何书写代码? 按照返回值的顺序,写对应顺序的多个遍历接收即可 变量之间用逗号隔开 支持不同类型的数据…

爬虫(三)

1.JS逆向实战破解X-Bogus值 X-Bogus:以DFS开头,总长28位 答案是X-Bogus,因为会把负载里面所有的值打包生成X-Boogus 1.1 找X-Bogus加密位置(请求堆栈) 1.1.1 绝招加高级断点(日志断点) 日志断点看有没有X-B值 日志…

【算法分析与设计】无重复的最长子串

📝个人主页:五敷有你 🔥系列专栏:算法分析与设计 ⛺️稳中求进,晒太阳 题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 示例 1: 输入: s "abcabcbb" 输…

java中String类常用API

前言:在学习java的String类的时候,有很多的API需要了解,下面我将举出其中在新手学习时使用频率较大的几个API。 先大体看一下有哪几个:(如图) 目录 1.equals()和 equalsIgnoreCase&…