AutoCAD .NET Developer's Guide
AutoCAD .NET 开发指南
(CAD二次开发讲义)
徐昌荣 整理
前 言
本开发指南根据 AutoDesk 公司网站上的AutoCAD.NET Developer s guide 2012 版翻译整理。主要内
容包括AutoCAD.NET API 介绍、使用AutoCAD.NET API 控制AutoCAD工作环境、创建 及编辑AutoCAD实体、创建
和编辑尺寸标注、3D 图形处理、定义打印布局、打印输出、处 理AutoCAD事件,以及使用 Microsoft Visual Studio
的错误处理、应用程序发布等。涵盖了AutoCAD.NET 二次开发所涉及的所有基本任务。
指 南 中 的 示 例 代 码 在 Microsoft Visual Studio 2015 和 AutoCAD2016 环 境 下 进 行 了 测 试 , 并 参 照
AutoCAD.NET Developer s guide 2016 版中关于释放对象的要求,对示例代码进行了修改。
2015年8月8日
目录
第 0 章 AutoCAD.NET API 介绍 .......................................................................................................................................... 1
0.1 本指南主要内容 ................................................................................................................................................... 1
0.2AutoCAD.NET API 概览 .......................................................................................................................................... 1
AutoCAD .NET API 的组件 .......................................................................................................................... 1
0.3
0.4 Microsoft Visual Studio 概览 ................................................................................................................................ 2
0.4.1 Microsoft Visual Studio 的版本选用 ......................................................................................................... 2
0.4.2 与.NET 一起使用 COM 互操作 .............................................................................................................. 3
0.4.3 依赖和限制 ................................................................................................................................................ 3
0.5 更多内容 ............................................................................................................................................................... 4
0.6 示例代码 ............................................................................................................................................................... 4
0.7 ActiveX Automation 到 .NET 的转换 ................................................................................................................. 4
第 1 章 AutoCAD.NET API 基础 .......................................................................................................................................... 5
1.1 了解 AutoCAD 对象层次 ...................................................................................................................................... 5
1.1.1 Application 对象 ........................................................................................................................................ 5
1.1.2 Document 对象 .......................................................................................................................................... 6
1.1.3 Database 对象 ............................................................................................................................................ 7
1.1.4 图形对象和非图形对象 ............................................................................................................................ 8
1.1.5 集合对象 .................................................................................................................................................... 8
1.1.6 非本地的图形对象和非图形对象 ............................................................................................................ 8
1.2 访问 AutoCAD 对象层次 ...................................................................................................................................... 9
1.2.1 引用对象层次中的对象 ............................................................................................................................ 9
1.2.2 访问 Application 对象 ........................................................................................................................... 10
1.3 集合对象 ............................................................................................................................................................. 10
1.3.1 访问集合 .................................................................................................................................................. 11
1.3.2 向集合对象添加新成员 .......................................................................................................................... 11
1.3.3 迭代集合对象 .......................................................................................................................................... 11
1.3.4 从集合对象中删除成员 .......................................................................................................................... 12
1.4 了解属性和方法 ................................................................................................................................................. 13
1.5 进程外与进程内 ................................................................................................................................................. 13
1.6 定义命令和 AutoLISP 函数 .............................................................................................................................. 15
1.6.1 定义命令 .................................................................................................................................................. 15
1.6.2 定义 AutoLISP 函数 ............................................................................................................................... 15
第 2 章 控制 AutoCAD 环境 ............................................................................................................................................. 17
2.1 控制应用程序窗口 ............................................................................................................................................. 17
2.2 控制图形窗口 ..................................................................................................................................................... 18
2.2.1 改变文档窗口的位置和大小 .................................................................................................................. 18
2.2.2 缩放和平移当前视图 .............................................................................................................................. 19
2.2.3 使用命名视图 .......................................................................................................................................... 23
2.2.4 使用平铺视口 .......................................................................................................................................... 25
2.2.5 更新文档窗口的几何信息 ...................................................................................................................... 28
2.3 新建、打开、保存和关闭图形 ......................................................................................................................... 29
2.3.1 新建和打开图形文件 .............................................................................................................................. 29
2.3.2 保存和关闭图形文件 .............................................................................................................................. 29
2.3.3 没有文档打开时 ...................................................................................................................................... 30
2.4 锁定和解锁文档 ................................................................................................................................................. 32
2.5 设置 AutoCAD 选项 ............................................................................................................................................ 33
2.5.1 数据库选项 .............................................................................................................................................. 34
2.6 设置和返回系统变量 ......................................................................................................................................... 34
2.7 精确绘图 ............................................................................................................................................................. 35
2.7.1 调整捕捉和栅格对齐 .............................................................................................................................. 35
2.7.2 使用正交模式 .......................................................................................................................................... 36
2.7.3 计算点和值 .............................................................................................................................................. 36
2.7.4 计算面积 .................................................................................................................................................. 37
2.8 提示用户输入 ..................................................................................................................................................... 38
2.8.1 GetString()方法 ......................................................................................................................................... 39
2.8.2 GetPoint()方法 .......................................................................................................................................... 39
2.8.3 GetKeywords()方法 ................................................................................................................................... 40
2.8.4 控制用户输入 .......................................................................................................................................... 41
2.9 访问 AutoCAD 命令行 ........................................................................................................................................ 41
2.10 调用 AutoCAD 命令 .......................................................................................................................................... 42
2.10.1 使用 Command 方法调用 AutoCAD 命令 ............................................................................................. 42
2.10.2 使用 CommandAsync 方法调用 AutoCAD 命令 .................................................................................... 42
第 3 章 创建和编辑 AutoCAD 实体 ................................................................................................................................. 44
3.1 打开和关闭对象 ................................................................................................................................................. 44
3.1.2 使用事务管理器管理事务 ...................................................................................................................... 45
3.1.3 不使用事务管理器打开和关闭对象 ...................................................................................................... 49
3.1.4 升级打开对象与降级打开对象 .............................................................................................................. 51
3.2 创建对象 ............................................................................................................................................................. 52
3.2.1 确定父对象 .............................................................................................................................................. 52
3.2.2 创建线 ...................................................................................................................................................... 53
3.2.3 创建曲线类对象 ...................................................................................................................................... 55
3.2.4 创建点对象 .............................................................................................................................................. 57
3.2.5 创建实体填充区域 .................................................................................................................................. 58
3.2.6 使用面域 .................................................................................................................................................. 59
3.2.7 创建图案填充 .......................................................................................................................................... 62
3.3 使用选择集 ......................................................................................................................................................... 64
3.3.2 在绘图区域选择对象 .............................................................................................................................. 65
3.3.3 添加或合并多个选择集 .......................................................................................................................... 67
3.3.4 定义选择集过滤器规则 .......................................................................................................................... 68
3.3.5 从选择集删除对象 .................................................................................................................................. 73
3.4 编辑命名对象和二维对象 ................................................................................................................................. 73
3.4.1 使用命名对象 .......................................................................................................................................... 73
3.4.2 删除对象 .................................................................................................................................................. 75
3.4.3 复制对象 .................................................................................................................................................. 76
3.4.4 偏移对象 .................................................................................................................................................. 79
3.4.5 变换对象 .................................................................................................................................................. 80
3.4.6 阵列对象 .................................................................................................................................................. 86
3.4.7 延伸和修剪对象 ...................................................................................................................................... 90
3.4.8 分解对象 .................................................................................................................................................. 91
3.4.9 编辑多段线 .............................................................................................................................................. 92
3.4.10 编辑样条曲线 ........................................................................................................................................ 93
3.4.11 编辑图案填充 ........................................................................................................................................ 95
3.5 使用图层、颜色和线型 ..................................................................................................................................... 98
3.5.1 使用图层 .................................................................................................................................................. 98
3.5.2 使用颜色 ................................................................................................................................................ 107
3.5.3 使用线型 ................................................................................................................................................ 108
3.6 保存和恢复图层状态 ....................................................................................................................................... 113
3.6.1 了解 AutoCAD 如何保存图层状态 ....................................................................................................... 113
3.6.2 用 LayerStateManager 管理图层状态 ................................................................................................ 114
3.7 向图形中添加文字 ........................................................................................................................................... 117
3.7.1 使用文字样式 ........................................................................................................................................ 118
3.7.2 使用单行文字(Text 命令) ..................................................................................................................... 121
3.7.3 使用多行文字(MText 命令) ............................................................................................................... 124
3.7.4 使用 Unicode 字符、控制码、特殊字符 ........................................................................................... 126
3.7.5 替换字体 ................................................................................................................................................ 127
3.7.6 拼写检查 ................................................................................................................................................ 127
第 4 章 标注与公差 ........................................................................................................................................................ 128
4.1 尺寸标注的概念 ............................................................................................................................................... 128
4.1.1 尺寸的组成部分 .................................................................................................................................... 128
4.1.2 定义尺寸标注系统变量 ........................................................................................................................ 129
4.1.3 设置尺寸的文字样式 ............................................................................................................................ 129
4.1.4 了解引线 ................................................................................................................................................ 129
4.1.5 了解关联尺寸 ........................................................................................................................................ 129
4.2 创建尺寸标注 ................................................................................................................................................... 129
4.2.1 创建线性标注 ........................................................................................................................................ 130
4.2.2 建径向标注 ............................................................................................................................................ 131
4.2.3 创建角度标注 ........................................................................................................................................ 132
4.2.4 创建折弯的半径标注 ............................................................................................................................ 133
4.2.5 创建弧长标注 ........................................................................................................................................ 134
4.2.6 创建坐标标注 ........................................................................................................................................ 135
4.3 编辑标注 ........................................................................................................................................................... 137
4.3.1 替换标注文字 ........................................................................................................................................ 137
4.4 使用标注样式 ................................................................................................................................................... 138
4.4.1 创建、修改、拷贝标注样式 ................................................................................................................ 138
4.4.2 修改标注的样式 .................................................................................................................................... 140
4.5 模型空间和图纸空间的尺寸标注 ................................................................................................................... 143
4.6 创建引线和注释 ............................................................................................................................................... 143
4.6.1 创建引线 ................................................................................................................................................ 143
4.6.2 给引线添加注释 .................................................................................................................................... 144
4.6.3 引线关联 ................................................................................................................................................ 144
4.6.4 编辑引线关联 ........................................................................................................................................ 145
4.6.5 编辑引线 ................................................................................................................................................ 145
4.7 使用形位公差 ................................................................................................................................................... 145
4.7.1 创建形位公差 ........................................................................................................................................ 145
4.7.2 编辑形位公差 ........................................................................................................................................ 146
第 5 章 三维空间作业 .................................................................................................................................................... 147
5.1 指定 3D 坐标 .................................................................................................................................................. 147
5.2 定义用户坐标系 UCS ................................................................................................................................... 148
5.3 坐标变换 ........................................................................................................................................................... 150
5.4 创建 3D 对象 .................................................................................................................................................. 152
5.4.1 创建线框 Wireframes .......................................................................................................................... 152
5.4.2 创建网格 Meshes .................................................................................................................................. 152
5.4.3 创建多面网格 Polyface Meshes .......................................................................................................... 154
5.4.4 创建实体 Solids .................................................................................................................................... 155
5.5 编辑 3D 对象 .................................................................................................................................................. 156
5.5.1 在 3D 空间旋转对象............................................................................................................................ 156
5.5.2 在 3D 空间阵列对象............................................................................................................................ 157
5.5.3 在 3D 空间沿平面镜像对象 ................................................................................................................ 159
5.6 编辑 3D 实体 .................................................................................................................................................. 161
第 6 章 定义布局和打印 ................................................................................................................................................ 164
6.1 模型空间和图纸空间 ..................................................................................................................................... 164
6.2 布局 ................................................................................................................................................................... 164
6.2.1 布局和块 ................................................................................................................................................ 164
6.2.2 打印设置 ................................................................................................................................................ 164
6.2.3 布局设置 ................................................................................................................................................ 164
6.3 视口 ................................................................................................................................................................... 166
6.3.1 浮动视口 ................................................................................................................................................ 166
6.3.2 创建图纸空间视口 .............................................................................................................................. 168
6.3.3 修改视口视图和内容 ............................................................................................................................ 170
6.3.4 相对于图纸空间缩放视图 .................................................................................................................. 170
6.3.5 在图纸空间缩放线型图案 .................................................................................................................. 171
6.3.6 使用着色视口 ........................................................................................................................................ 171
6.4 打印出图 ........................................................................................................................................................... 171
6.4.1 从模型空间打印 .................................................................................................................................... 172
6.4.2 从图纸空间打印 .................................................................................................................................... 174
第 7 章 使用事件 ............................................................................................................................................................ 175
7.1 了解 AutoCAD 中的事件 ................................................................................................................................ 175
7.2 事件处理程序的原则 ..................................................................................................................................... 175
7.3 事件的注册与撤销 ......................................................................................................................................... 176
7.4 处理 Application 事件 ................................................................................................................................... 176
7.5 处理 Document 事件 ...................................................................................................................................... 177
7.6 处理 DocumentCollection 对象事件 ............................................................................................................. 178
7.7 处理 Object 级事件 ........................................................................................................................................ 179
7.8 使用.NET 注册基于 COM 的事件 ............................................................................................................ 182
第 8 章 使用 C#开发应用程序 ...................................................................................................................................... 185
8.1 处理错误 ........................................................................................................................................................... 185
8.1.1 应用程序的错误类型 ............................................................................................................................ 185
8.1.2 捕捉运行时错误 .................................................................................................................................... 185
8.1.3 响应用户输入错误 ................................................................................................................................ 187
8.2 发布应用程序 ................................................................................................................................................... 187
附录 A Microsoft Visual Studio 使用入门 ...................................................................................................................... 190
A.1 理解 Microsoft Visual Studio 项目 ................................................................................................................ 190
A.2 定义项目组件 ................................................................................................................................................... 190
A.3 查看项目信息 ................................................................................................................................................... 190
A.4 使用 Microsoft Visual Studio 项目 ................................................................................................................ 191
A.4.1 创建新项目 ............................................................................................................................................ 191
A.4.2 打开现有项目或解决方案 .................................................................................................................... 193
A.4.3 保存项目或解决方案 ............................................................................................................................ 194
A.4.4 在一个解决方案中使用多个项目 ........................................................................................................ 194
A.5 编辑现有项目或解决方案 ............................................................................................................................... 194
A.5.1 添加新建项 ............................................................................................................................................ 194
A.5.2 导入现有项 ............................................................................................................................................ 195
A.5.3 编辑项目 ................................................................................................................................................ 195
A.5.4 项目重命名 ............................................................................................................................................ 198
A.5.5 添加和引用其他项目 ............................................................................................................................ 198
A.5.6 设置 Microsoft Visual Studio 选项 ..................................................................................................... 199
A.6 加载程序集到 AutoCAD .................................................................................................................................. 200
A.7 访问和查找引用库(对象浏览器) .................................................................................................................... 201
A.8 练习:创建第一个项目 ................................................................................................................................... 201
A.8.1 练习:创建新项目 ................................................................................................................................ 201
A.8.2 练习:引用 AutoCAD.NET API 文件 ..................................................................................................... 202
A.8.3 练习:创建新命令 ................................................................................................................................ 202
A.8.4 练习:设置项目的目标架构 ................................................................................................................ 203
A.8.5 练习:编译并加载.NET 程序集到 AutoCAD ..................................................................................... 203
A.9 相关 AutoCAD 命令和术语 .............................................................................................................................. 204
A.10 更多内容 ......................................................................................................................................................... 204
第0章 AutoCAD.NET API介绍
本章描述了通过托管.NET 应用程序编程接口(API)公开的 AutoCAD®对象的概念。AutoCAD.NET API
可以让我们的一些操作任务自动化,如创建和修改保存在图形文件数据库里的对象,或者修改自定义文件的
内容等。
本指南涵盖了 Microsoft® Visual Studio® 2010,以及AutoCAD.NET API 开发使用的编程语言Microsoft®
Visual C#®。
0.1 本指南主要内容
本指南提供了如何使用AutoCAD.NET API 及如何使用 Microsoft Visual Studio 和 C#等编程语言进行
AutoCAD二次开发的知识。关于使用 Microsoft Visual Studio 开发应用 程序的专门知识,参见(附录§A
Microsoft Visual Studio 使用入门)和(§8 使用C#开发应用程序)。如果你没有使用 Microsoft Visual
Studio 进行.NET 框架下的应用开发,可以跳过这两部分内容。不过,本指南里的所有示例代码使用的都是
C#语言。
0.2AutoCAD.NET API 概览
使用AutoCAD.NET API 提供的程序集,我们可以通过编程对AutoCAD和图形文件进行操作。并且可以使用
许多不同的编程语言和开发环境。
在AutoCAD 中实现 .NET API 的几大优点:
更多的编程环境可以编程访问AutoCAD图形。在 .NET API 出现之前,开发人员只能局限于使用
ActiveX®自动操作及支持 COM 的语言、AutoLISP和 ObjectARX 的 C++。
通过使用应用程序本地化的 .NET API 或公开的ActiveX/COM库与其它Windows应用程序(例如
Microsoft Excel 和 Word)共享数据比以前更方便了。
.NET 框架是为 32 位及64位操作系统而设计,而 VBA只为 32 位操作系统设计。
在使用高级编程接口方面,和传统编程语言如 C++相比,.NET 具有较低的学习曲线。
对象是AutoCAD.NET API的主要构造块。每一个公开的对象均精确代表一个AutoCAD组件,它们之间又组
成了不同的程序集和命名空间。AutoCAD .NET API 有许多不同类型的对象。例如:
直线、圆弧、文字和标注等图形对象都是对象。
文字与标注样式等样式设置都是对象。
图层、组合和块等组织结构都是对象。
视图和视口等图形显示都是对象。
图形、AutoCAD 应用程序本身也是对象。
0.3 AutoCAD .NET API 的组件
AutoCAD .NET API 由不同的 DLL 文件组成,这些 DLL 文件包含有大量的类、结构、方法及事件,用
于访问图形文件对象或AutoCAD程序对象。每个DLL文件定义了不同的命名空间,这些命名空间按功能组织API
库组件。
常用的AutoCAD .NET API的三个主要DLL文件是:
AcDbMgd.dll 当处理图形文件中存储的对象时引用;
AcMgd.dll 当处理AutoCAD应用程序和用户接口时引用;
AcCui.dll 当添加或修改AutoCAD的用户界面时引用;
(注:AutoCAD 2014 版拆分出来一个 AcCoreMgd.dll,这样主要 DLL 文件变成了 4 个。)
AcCoreMgd.dll 当处理编辑器、发布与打印、定义 AutoLISP 命令和函数时引用。
使用 AutoCAD.NET API 的DLL文件
使用AutoCAD.NET API 相关 DLL 文件里提供的类、结构、方法及事件之前,必须在你的 Visual Studio
工程中引用相应的 DLL 文件。完成引用后,你就可以在工程中使用该 DLL 文件里定义的命名空间和 API
组件。
一旦引用了AutoCAD.NET API DLL 文件,应将该引用的“复制本地”属性设置为 False(设置方法:解决方
案资源管理器->右键该引用->属性->复制本地->选 False)。“复制本地”属性确定当 Microsoft Visual
Studio 编译工程时是否创建一个引用文件的副本并将它放在与工程的程序集文件相同的目录下。由于
AutoCAD安装目录里包含有相同文件名的DLL文件,因此,如果创建了引用文件副本,当加载程序集文件到
AutoCAD中时可能会引发意想不到的结果。
AutoCAD .NET API DLL 文件的存放位置
第 1 页