当前位置: 首页 > news >正文

C# CAD交互界面-自定义面板集-添加快捷命令(五)

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

一、引用

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Windows;
using System;
using System.Drawing;
using System.Windows.Forms;

二、代码说明

  • [CommandMethod("CreatePalette")] 标注的方法 CreatePalette() 是一个在AutoCAD中注册的命令方法,当用户在命令行输入 CreatePalette 时,会触发此方法。

    • 初始化一个新的 PaletteSet 对象,命名为 "我的窗体",并设置了其最小尺寸为300x300像素。

    • 创建一个 CustomPaletteControl 实例,并将 ListBox 的选择更改事件绑定到 ListBoxItemSelected 方法。

    • 向 ListBox 中添加两个 CommandItem 对象,每个对象代表一个具有显示名称和实际命令名的AutoCAD命令或脚本别名(这里假设 "tt10" 和 "tt11" 分别代表某个CAD命令或LISP脚本)。

    • 将 CustomPaletteControl 添加至名为 "快捷键01" 的面板标签下。

    • 最后设置面板集可见,使其出现在AutoCAD界面上。

  • ExecuteAutoCADCommand(string commandName) 方法用于执行传入的AutoCAD命令字符串。当调用此方法时,会在当前活动文档中发送执行命令的指令。

  • ListBoxItemSelected(object sender, EventArgs e) 是 ListBox 选择更改事件的代理方法。当用户从 ListBox 中选择一项时,如果所选项目是一个 CommandItem 并且拥有非空的 CommandName,则通过 ExecuteAutoCADCommand 执行对应的命令,并在命令末尾添加换行符 "\n"(这通常是为了在命令历史记录中区分不同的命令输入)。

  • CustomPaletteControl 类继承自 UserControl,表示承载 ListBox 控件的用户界面元素。构造函数接收 ListBox 选择更改事件的处理程序,并初始化 ListBox 控件的位置、大小以及事件处理。

  • CommandItem 类是一个简单的数据传输对象,用来封装命令的显示名称(DisplayName)和实际命令名(CommandName)。当 ListBox 显示项目时,会调用其 ToString() 方法返回 DisplayName 属性作为显示文本。

三、完整代码

//根据自己要求自己添加 格式如下
customCtrl.ListBox1.Items.Add(new CommandItem("CAD宗地内面积", "tt10"));
customCtrl.ListBox1.Items.Add(new CommandItem("导入", "tt11")); // 假设 dd10 是一个自定义 LISP 或其他扩展的别名

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Windows;
using System;
using System.Drawing;
using System.Windows.Forms;namespace cad自定义面板集
{public class Class1{[CommandMethod("CreatePalette")]public void CreatePalette(){// 初始化面板集对象PaletteSet ps = new PaletteSet("我的窗体");ps.MinimumSize = new System.Drawing.Size(300, 300);// 创建用户自定义控件并设置 ListBoxCustomPaletteControl customCtrl = new CustomPaletteControl(ListBoxItemSelected);customCtrl.ListBox1.Items.Add(new CommandItem("CAD宗地内面积", "tt10"));customCtrl.ListBox1.Items.Add(new CommandItem("导入", "tt11")); // 假设 dd10 是一个自定义 LISP 或其他扩展的别名// 添加控件到面板集中ps.Add("快捷键01", customCtrl);// 可以添加更多控件...// 显示面板ps.Visible = true;}private void ExecuteAutoCADCommand(string commandName){Document adoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;adoc.SendStringToExecute(commandName, true, false, false);}// ListBox 选择更改事件代理方法private void ListBoxItemSelected(object sender, EventArgs e){if (sender is ListBox listBox && listBox.SelectedItem is CommandItem item && !string.IsNullOrEmpty(item.CommandName)){ExecuteAutoCADCommand(item.CommandName + "\n");}}}// 定义承载 ListBox 的 UserControl 类public class CustomPaletteControl : UserControl{public ListBox ListBox1 { get; private set; }// 添加构造函数接收 ListBox 选择更改事件代理public CustomPaletteControl(EventHandler listBoxSelectedIndexChangedHandler){ListBox1 = new ListBox();ListBox1.Location = new Point(5, 5);ListBox1.Size = new Size(280, 250);// 添加 ListBox 选择更改事件处理程序ListBox1.SelectedIndexChanged += listBoxSelectedIndexChangedHandler;this.Controls.Add(ListBox1);}}// 用于存储命令名称的简单类public class CommandItem{public string DisplayName { get; set; }public string CommandName { get; set; }public CommandItem(string displayName, string commandName){DisplayName = displayName;CommandName = commandName;}public override string ToString(){return DisplayName;}}
}

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

相关文章:

C# CAD交互界面-自定义面板集-添加快捷命令(五)

运行环境 vs2022 c# cad2016 调试成功 一、引用 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Windows; using System; using System.Drawing; using System.Windows.Forms; 二、代码说明 [CommandMethod("Cre…...

Spring boot集成各种数据源操作数据库

一、最基础的数据源方式 1.导入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency <dependency><groupId>com.mysql</groupId><art…...

K8s环境下rook-v1.13.3部署Ceph-v18.2.1集群

文章目录 1.K8s环境搭建2.Ceph集群部署2.1 部署Rook Operator2.2 镜像准备2.3 配置节点角色2.4 部署operator2.5 部署Ceph集群2.6 强制删除命名空间2.7 验证集群 3.Ceph界面 1.K8s环境搭建 参考&#xff1a;CentOS7搭建k8s-v1.28.6集群详情&#xff0c;把K8s集群完成搭建&…...

【JavaEE】传输层网络协议

传输层网络协议 1. UDP协议 1.1 特点 面向数据报&#xff08;DatagramSocket&#xff09;数据报大小限制为64k全双工不可靠传输有接收缓冲区&#xff0c;无发送缓冲区 UDP的特点&#xff0c;我理解起来就是工人组成的**“人工传送带”**&#xff1a; 面向数据报&#xff08;…...

08-Java过滤器模式 ( Filter Pattern )

Java过滤器模式 实现范例 过滤器模式&#xff08;Filter Pattern&#xff09;或允许开发人员使用不同的标准来过滤一组对象&#xff0c;通过逻辑运算以解耦的方式把它们连接起来 过滤器模式&#xff08;Filter Pattern&#xff09; 又称 标准模式&#xff08;Criteria Pattern…...

ChatGPT高效提问—prompt常见用法(续篇八)

ChatGPT高效提问—prompt常见用法(续篇八) 1.1 对抗 ​ 对抗是一个重要主题,深入探讨了大型语言模型(LLM)的安全风险。它不仅反映了人们对LLM可能出现的风险和安全问题的理解,而且能够帮助我们识别这些潜在的风险,并通过切实可行的技术手段来规避。 ​ 截至目前,网络…...

微软.NET6开发的C#特性——接口和属性

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;看到不少初学者在学习编程语言的过程中如此的痛苦&#xff0c;我决定做点什么&#xff0c;下面我就重点讲讲微软.NET6开发人员需要知道的C#特性&#xff0c;然后比较其他各种语言进行认识。 C#经历了多年发展…...

容器基础知识:容器和虚拟化的区别

虚拟化与容器化对比 容器化和虚拟化都是用于优化资源利用率并实现高效应用程序部署的技术。然而&#xff0c;它们在方法和关键特征上存在差异&#xff1a; 虚拟化: 可以理解为创建虚拟机 (VM)。虚拟机模拟一台拥有自己硬件&#xff08;CPU、内存、存储&#xff09;和操作系统…...

【Linux】vim的基本操作与配置(下)

Hello everybody!今天我们继续讲解vim的操作与配置&#xff0c;希望大家在看过这篇文章与上篇文章后都能够轻松上手vim! 1.补充 在上一篇文章中我们说过了&#xff0c;在底行模式下set nu可以显示行号。今天补充一条&#xff1a;set nonu可以取消行号。这两条命令大家看看就可…...

[office] 图文演示excel怎样给单元格添加下拉列表 #知识分享#经验分享

图文演示excel怎样给单元格添加下拉列表 在Excel表格中输入数据的时候&#xff0c;为了简便快捷的输入&#xff0c;经常需要给Excel单元格添加一个下拉菜单&#xff0c;这样在输入数据时不必按键盘&#xff0c;只是用鼠标选择选项就可以了。 比的位置。 4、可以看到一个预览的…...

【RT-DETR有效改进】利用SENetV2重构化网络结构 (ILSVRC冠军得主,全网独家首发)

👑欢迎大家订阅本专栏,一起学习RT-DETR👑 一、本文介绍 本文给大家带来的改进机制是SENetV2,其是2023.11月的最新机制(所以大家想要发论文的可以在上面下点功夫),其是一种通过调整卷积网络中的通道关系来提升性能的网络结构。SENet并不是一个独立的网络模型,而…...

【Linux】学习-进程间通信

进程间通信 介绍 进程间通信的本质 进程间通信的前提&#xff0c;首先需要让不同的进程看到同一块“内存”此“内存”一定不属于任何进程&#xff0c;而应该强调共享二字 进程间通信的目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;…...

45. C++ 字符指针和字符串

一、字符指针可以指向一个字符串。 我们可以用字符串常量对字符指针进行初始化。例如&#xff0c;有说明语句&#xff1a; char *str "This is a string.";是对字符指针进行初始化。此时&#xff0c;字符指针指向的是一个字符串常量的首地址&#xff0c;即指向字符…...

如何制作一款3D FPS游戏

制作一款3D FPS游戏是一个复杂的过程&#xff0c;需要涵盖多个方面&#xff0c;包括游戏设计、游戏引擎选择、模型制作、音效制作、关卡设计等。下面是一个关于如何制作一款3D FPS游戏的超长文章。 游戏设计 首先&#xff0c;你需要确定游戏的整体设计和核心玩法。这包括游戏的…...

人工智能|深度学习——使用多层级注意力机制和keras实现问题分类

代码下载 使用多层级注意力机制和keras实现问题分类资源-CSDN文库 1 准备工作 1.1 什么是词向量? ”词向量”&#xff08;词嵌入&#xff09;是将一类将词的语义映射到向量空间中去的自然语言处理技术。即将一个词用特定的向量来表示&#xff0c;向量之间的距离&#xff08;例…...

C语言常见面试题:C语言中如何进行网页开发编程?

在C语言中进行网页开发通常不是一个直接的过程&#xff0c;因为C语言主要用于系统级编程&#xff0c;而不是Web开发。传统的Web开发主要使用高级语言如JavaScript、Python、Ruby、PHP等&#xff0c;以及与Web相关的技术&#xff0c;如HTML、CSS和数据库。 然而&#xff0c;如果…...

DevOps落地笔记-20|软件质量:决定系统成功的关键

上一课时介绍通过提高工程效率来提高价值交付效率&#xff0c;从而提高企业对市场的响应速度。在提高响应速度的同时&#xff0c;也不能降低软件的质量&#xff0c;这就是所谓的“保质保量”。具备高质量软件&#xff0c;高效率的企业走得更快更远。相反&#xff0c;低劣的软件…...

政安晨:梯度与导数~示例演绎《机器学习·神经网络》的高阶理解

这篇文章确实需要一定的数学基础&#xff0c;第一次接触的小伙伴可以先看一下我示例演绎这个主题的前两篇文章&#xff1a; 示例演绎机器学习中&#xff08;深度学习&#xff09;神经网络的数学基础——快速理解核心概念&#xff08;一&#xff09;&#xff1a; 政安晨&#…...

CTFSHOW命令执行web入门29-54

description: >- 这里就记录一下ctfshow的刷题记录是web入门的命令执行专题里面的题目,他是有分类,并且覆盖也很广泛,所以就通过刷这个来,不过里面有一些脚本的题目发现我自己根本不会笑死。 如果还不怎么知道写题的话,可以去看我的gitbook,当然csdn我也转载了我自己的…...

探索ChatGPT4:新一代人工智能语言模型的突破

ChatGPT4&#xff0c;作为最新一代的语言处理模型&#xff0c;代表了人工智能在自然语言理解和生成方面的最新突破。本文将深入介绍ChatGPT4的新特性&#xff0c;探讨其在各个领域的潜在应用。 ChatGPT4概述 在继承了前一代模型的强大基础之上&#xff0c;ChatGPT4引入了多项…...

SMART-AM40玩转轻量桌面:Armbian下xfce4从安装到远程控制的完整指南

SMART-AM40轻量化桌面革命&#xff1a;Armbian系统下xfce4环境全流程部署与远程控制实战 在单板计算机领域&#xff0c;SMART-AM40凭借其Rockchip处理器和出色的能效比&#xff0c;正成为轻量化桌面解决方案的新宠。本文将带您完成从Armbian系统基础配置到xfce4桌面环境部署&am…...

PCB开窗技术:设计要点与工程应用解析

PCB开窗技术详解&#xff1a;设计要点与工程应用1. PCB开窗基础概念1.1 开窗的定义与物理特性PCB开窗是指去除印刷电路板导线表面阻焊油墨层的工艺处理&#xff0c;使底层铜箔直接暴露。在标准PCB制造流程中&#xff0c;所有信号走线默认覆盖阻焊层&#xff08;Solder Mask&…...

不止是字体!用Qt Creator样式表自定义你的IDE主题(附工具栏优化)

不止是字体&#xff01;用Qt Creator样式表打造个性化开发环境 作为一名长期使用Qt Creator的开发者&#xff0c;你是否曾对默认界面的单调感到审美疲劳&#xff1f;或是被工具栏上过小的字体折磨得眼睛酸痛&#xff1f;其实&#xff0c;Qt Creator的界面定制能力远超大多数人的…...

OpenClaw技能市场盘点:10个适配Qwen3.5-4B-Claude的实用模块

OpenClaw技能市场盘点&#xff1a;10个适配Qwen3.5-4B-Claude的实用模块 1. 为什么需要关注技能市场&#xff1f; 去年冬天&#xff0c;当我第一次在本地部署OpenClaw时&#xff0c;最让我惊喜的不是框架本身&#xff0c;而是它背后那个不断生长的技能市场。作为一个长期被重…...

掌握Dynamic-DataSource注解与事务传播:MANDATORY模式终极指南

掌握Dynamic-DataSource注解与事务传播&#xff1a;MANDATORY模式终极指南 【免费下载链接】dynamic-datasource dynamic datasource for springboot 多数据源 动态数据源 主从分离 读写分离 分布式事务 项目地址: https://gitcode.com/gh_mirrors/dy/dynamic-datasource …...

无需编程!cv_resnet18_ocr-detection WebUI界面操作详解

无需编程&#xff01;cv_resnet18_ocr-detection WebUI界面操作详解 1. 开篇&#xff1a;为什么选择这个OCR工具&#xff1f; 在日常工作和生活中&#xff0c;我们经常需要从图片中提取文字信息。传统OCR工具要么需要复杂的编程接口&#xff0c;要么功能单一难以满足需求。今…...

LazyVim终极指南:5分钟打造高效Neovim开发环境

LazyVim终极指南&#xff1a;5分钟打造高效Neovim开发环境 【免费下载链接】LazyVim Neovim懒人配置。 项目地址: https://gitcode.com/GitHub_Trending/la/LazyVim LazyVim是一个基于&#x1f4a4; lazy.nvim的Neovim懒人配置方案&#xff0c;专为希望快速搭建专业开发…...

GLM-4.7-Flash多场景落地:保险条款解读、理赔话术生成与客户异议应答

GLM-4.7-Flash多场景落地&#xff1a;保险条款解读、理赔话术生成与客户异议应答 保险行业每天都要处理海量的文本工作&#xff1a;厚厚的保单条款需要解读&#xff0c;复杂的理赔申请需要沟通&#xff0c;客户的各种疑问需要专业、及时地回应。这些工作不仅繁琐&#xff0c;而…...

Leather Dress Collection多场景落地:独立设计师IP开发、虚拟试衣、NFT服饰创作

Leather Dress Collection多场景落地&#xff1a;独立设计师IP开发、虚拟试衣、NFT服饰创作 1. 项目概述 Leather Dress Collection 是一个基于Stable Diffusion 1.5的LoRA模型集合&#xff0c;专门用于生成各种皮革服装风格的图像。这个系列由Stable Yogi开发&#xff0c;包…...

应对复杂代码库学习难题:AI驱动的智能分析工具

应对复杂代码库学习难题&#xff1a;AI驱动的智能分析工具 【免费下载链接】Tutorial-Codebase-Knowledge Turns Codebase into Easy Tutorial with AI 项目地址: https://gitcode.com/gh_mirrors/tu/Tutorial-Codebase-Knowledge 在快速发展的技术环境中&#xff0c;开…...