为了后面学习更好理解,我们先来了解下在 C# 的 AutoCAD 二次开发中,这些面向对象编程的核心概念,以下是用日常生活中的比喻来帮助大家理解:
名词解释:
1、命名空间 (Namespace)
是什么:类似一个「工具箱分类标签」。
比如 Autodesk.AutoCAD.ApplicationServices 是专门存放 AutoCAD 应用相关工具的“工具箱”。
作用:防止不同功能的类重名,方便代码组织。
2、类 (Class)
是什么:像「设计图纸」。
例如 Document 类是一份“图纸”,描述了 AutoCAD 中打开的文档的结构。
作用:定义一类对象的模板,比如如何操作文档。
3、对象 (Object)
是什么:根据「图纸」造出的「实物」。
比如 doc = Application.DocumentManager.MdiActiveDocument 就是根据 Document 类创建的实际文档对象。
作用:通过操作对象(比如保存文档)实现功能。
4、方法 (Method)
是什么:对象的「动作能力」。
比如 doc.Save() 是让文档对象执行保存动作。
作用:定义对象能做什么(动词形式)。
5、属性 (Property)
是什么:对象的「特征值」。
比如 doc.Name 是文档的名字(如“Drawing1.dwg”)。
作用:获取或设置对象的状态(名词形式)。
6、事件 (Event)
是什么:对象的「通知机制」。
比如当用户保存文档时,会触发 DocumentManager.DocumentSaved 事件。
作用:让外部代码订阅响应(如保存后自动备份)。
7、特性 (Attribute)
是什么:代码的「标记标签」。
比如 [CommandMethod("MyCommand")] 标记一个方法,使其成为 AutoCAD 命令行可调用的命令。
作用:为代码添加元数据(不影响逻辑,但影响行为)。
关键区别:
实际场景示例
// 命名空间引用 using Autodesk.AutoCAD.ApplicationServices; // 类定义 public class MyCommands { // 特性:标记这是一个 AutoCAD 命令 [CommandMethod("Hello")] public void HelloCommand() { // 获取当前文档对象 Document doc = Application.DocumentManager.MdiActiveDocument; // 使用属性获取文档名 string name = doc.Name; // 调用方法弹出消息 doc.Editor.WriteMessage($"Hello, {name}!"); // 订阅文档关闭事件 doc.Closing += (s, e) => { /* 关闭前的操作 */ }; } }
以上,希望你能够理解,通过这种方式,你可以逐步构建 AutoCAD 插件功能。


评论