news 2026/5/12 6:52:07

【AutoCad 2025】【C#】零基础教程(三)——获取选中的 Entity 插件 =》 初识 Entity 派生类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【AutoCad 2025】【C#】零基础教程(三)——获取选中的 Entity 插件 =》 初识 Entity 派生类

文章目录

  • 相关教程
    • C#
    • Python
  • 相关文献
  • 前言
  • ✅ 示例:获取当前选择集(Selection Set)
  • 🔍 关键点说明
  • 🎯 进阶:添加选择过滤器(只选圆或线)
  • Entity 派生类

作者:小猪快跑

基础数学&计算数学,从事优化领域8年+,主要研究方向:MIP求解器、整数规划、随机规划、智能优化算法

笔者也是从零开始学习并使用 c# & Python 二次开发 AutoCad 2025。本系列教程会从最基础的项目构建开始,到最终完成复杂插件开发。

如有错误,欢迎指正。如有更好的算法,也欢迎交流!!!——@小猪快跑

相关教程

C#

  • 【AutoCad 2025】【C#】零基础教程(一)——Rider 构建 HELLO 插件-CSDN博客
  • 【AutoCad 2025】【C#】零基础教程(二)——遍历 Entity 插件 =》 AutoCAD 核心对象层级结构-CSDN博客
  • 【AutoCad 2025】【C#】零基础教程(三)——获取选中的 Entity 插件 =》 初识 Entity 派生类-CSDN博客

Python

  • 【AutoCad 2025】【Python】零基础教程(一)——简单示例-CSDN博客

相关文献

  • AutoCAD 2025 .NET Developer’s Guide:
    Help > Developer Documentationin AutoCAD
  • ObjectARX SDK for AutoCAD 2025:
    https://www.autodesk.com/developer-network/platform-technologies/autocad/objectarx

前言

在 AutoCAD 的 .NET API(适用于AutoCAD 2025 + .NET 8或传统 .NET Framework)中,获取用户当前在图形窗口中选择的对象,是一个在编写插件中非常实用的一个操作,通常通过Editor类的GetSelection()方法实现。

下面是一个完整、可运行的 C# 示例,展示如何:

  1. 提示用户选择对象
  2. 获取选中的实体(Entity)
  3. 遍历并输出每个对象的类型或句柄

✅ 示例:获取当前选择集(Selection Set)

usingAutodesk.AutoCAD.ApplicationServices;usingAutodesk.AutoCAD.DatabaseServices;usingAutodesk.AutoCAD.EditorInput;usingAutodesk.AutoCAD.Runtime;usingAutodesk.AutoCAD.Geometry;[assembly:CommandClass(typeof(MyAutoCADPlugin.SelectionDemo))]namespaceMyAutoCADPlugin{publicclassSelectionDemo{[CommandMethod("GETSEL")]publicvoidGetSelectedObjects(){// 获取当前文档和编辑器Documentdoc=Application.DocumentManager.MdiActiveDocument;Databasedb=doc.Database;Editored=doc.Editor;// 提示用户选择对象PromptSelectionOptionsopts=newPromptSelectionOptions();opts.MessageForAdding="\n请选择要处理的对象: ";opts.AllowDuplicates=false;PromptSelectionResultres=ed.GetSelection(opts);// 检查用户是否选择了对象if(res.Status!=PromptStatus.OK){ed.WriteMessage("\n未选择任何对象。");return;}SelectionSetss=res.Value;ed.WriteMessage($"\n共选择了{ss.Count}个对象。");// 在事务中打开对象以读取数据(推荐方式)using(Transactiontr=db.TransactionManager.StartTransaction()){foreach(ObjectIdidinss.GetObjectIds()){// 以只读方式打开实体Entityent=tr.GetObject(id,OpenMode.ForRead)asEntity;if(ent!=null){// 输出对象类型和句柄ed.WriteMessage($"\n类型:{ent.GetType().Name}, 句柄:{id.Handle}");// 示例:如果是圆,输出圆心if(entisCirclecircle){ed.WriteMessage($" | 圆心: ({circle.Center.X:F2},{circle.Center.Y:F2})");}}}tr.Commit();// 虽然只读,但良好习惯}}}}

🔍 关键点说明

功能说明
Editor.GetSelection()弹出选择提示,返回PromptSelectionResult
PromptSelectionOptions可定制选择行为(如过滤、窗口选择、消息等)
SelectionSet.GetObjectIds()获取所有被选中对象的ObjectId数组
Transaction必须使用事务来安全地访问数据库对象(即使只读)
OpenMode.ForRead以只读方式打开,避免锁定或修改

🎯 进阶:添加选择过滤器(只选圆或线)

// 仅选择 Line 和 CircleTypedValue[]filterList={newTypedValue((int)DxfCode.Start,"LINE"),newTypedValue((int)DxfCode.Start,"CIRCLE")};SelectionFilterfilter=newSelectionFilter(filterList);PromptSelectionResultres=ed.GetSelection(opts,filter);

⚠️ 注意:DXF 组码"LINE"对应Line实体,"CIRCLE"对应Circle

Entity 派生类

AutoCAD 中的Entity类作为所有图形对象的基础类,有许多直接或间接派生自它的子类。以下是一些常见的Entity派生类,以表格形式展示:

Entity 派生类描述
Arc表示圆弧图形对象
Circle表示圆形图形对象
DBText表示单行文本
MText表示多行文本
Ellipse表示椭圆图形对象
Hatch表示填充图案(阴影线或渐变色)
Image表示插入到图纸中的图像
Leader表示指引线
Line表示直线图形对象
Polyline表示多段线图形对象
LWPolyline表示轻量级多段线,与Polyline类似但更高效
Point表示点对象
PolygonMesh表示多边形网格
PolyFaceMesh表示多面体网格
Region表示二维区域对象
Solid表示实体填充图形对象
Spline表示样条曲线
Underlay表示底图(如DWF、DGN或PDF格式的底图)
Wipeout表示擦除对象,用于遮挡其他图形对象
BlockReference表示块引用,用于重复使用一组对象
AttributeDefinition表示属性定义,通常与块关联
Attribute表示块属性的实际值

请注意,这个列表并不全面,AutoCAD 的 .NET API 还包括其他一些派生自Entity的类,这些类可能特定于某些类型的对象或者功能。此外,随着 AutoCAD 版本更新,可能会引入新的派生类。因此,建议参考最新的官方文档来获取最完整和准确的信息。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 6:57:33

【Java毕设源码分享】基于springboot+vue的付费自习室管理系统设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/12 6:52:06

58、Ubuntu实用工具、测试参与及Perl编程入门指南

Ubuntu实用工具、测试参与及Perl编程入门指南 在Ubuntu系统的使用和开发过程中,有许多实用的工具和方法,同时也有多种途径可以参与到Ubuntu社区的建设中。此外,Perl作为一种强大的脚本语言,在Ubuntu系统中也有着广泛的应用。下面将为大家详细介绍这些内容。 实用工具介绍…

作者头像 李华
网站建设 2026/5/12 5:30:56

HTML奇妙冒险第一关:从零开始的网页构建之旅

本文将主要梳理html网页布局的基础知识与常用标签以及注意事项,对于软件的选用与课外知识不加涉猎 文章目录一、HTML的基本结构标签二、常用的HTML标签与必要的基本知识点1、基础知识之标签结构说明:2、基础知识之属性特性说明:3、常用标签1.…

作者头像 李华
网站建设 2026/5/10 23:56:23

QGIS open sans font安装失败

设置一下就可以了 打开QGIS,选择设置选择选项选择 字体上图红框勾选去掉即可

作者头像 李华
网站建设 2026/5/10 18:58:57

【单片机毕业设计】【mcugc-mcu912】基于单片机的智能饮水机

一、基本介绍 功能: 1、通过一个按键模拟加热电源的开关 2、通过防水式DS18B20检测水温,当电源打开时,温度小于设置最小值,进行自动加热,直到加热到最大值时停止; 3、通过三个LED灯显示当前状态&#xff0c…

作者头像 李华