基于C#.NET的AutoCAD二次开发_简版


基 基 基 基 于 于 于 于 C#.NE C#.NE C#.NE C#.NE T T T T 的 的 的 的 AutoCA AutoCA AutoCA AutoCA D D D D 二次开发 二次开发 二次开发 二次开发 --- 用实例学编程 II 目目目目录录录录 第一章 AutoCAD.NETAutoCAD.NETAutoCAD.NETAutoCAD.NET APIAPIAPIAPI 介绍 ……………………………………………………………………………………………………………………………….... 1111 1.1 AutoCAD 二次开发技术 ………………………………………………… 1 1.2 基于C#的AutoCAD.NET API 二次开发技术 …………………………… 1 1.3 一个简单的二次开发程序 ………………………………………...…… 2 1.4 使用版本的问题 …………………………………………………………7 第二章 创建 AutoCAD 对象 ……………………………………………………………………………………………………………………………………………………………… 8888 2.1 理解AutoCAD 对象模型 ………………………………………………...8 2.1.1 Application 对象 …………………………………………………9 2.1.2 Document 对象 …………………………………………………….13 2.1.3 Editor 编辑器对象 ……………………………………………….15 2.1.4 Database 对象 …………………………………………………….20 2.1.5 集合对象 …………………………………………………………..22 2.1.6 事务对象 …………………………………………………………..29 2.2 图形对象 ………………………………………………………………..31 2.2.1 创建 AutoCAD 实体 …………………………………………………32 2.2.2 创建直线 …………………………………………………………..34 2.2.3 创建曲线类对象 …………………………………………………..38 2.2.4 创建点对象 ………………………………………………………..39 2.2.5 创建实体填充区域 ………………………………………………..40 2.2.6 创建面域 …………………………………………………………..41 2.2.7 创建图案填充 Hatches …………………………………………..43 2.3 向图形中添加文字 ……………………………………………………..47 2.3.1 创建单行文字 ……………………………………………………..47 2.3.2 格式化单行文字 …………………………………………………..47 2.3.3 使用多行文字(MText)………………………………………....50 第三章 编辑 AutoCAD AutoCAD AutoCAD AutoCAD 对象 ……………………………………………………………………………………………………………………………………………………55551111 3.1 使用命名对象 ………………………………………………………….51 3.1.1 清理未引用的命名对象 …………………………………………..51 3.1.2 重命名对象 ……………………………………………………….52 3.1.3 删除对象 ………………………………………………………….55 3.1.4 复制对象 ………………………………………………………….56 III 3.1.5 偏移对象 ……………………………………………………….61 3.2 变换对象 …………………………………………………………….63 3.2.1 移动对象 ………………………………………………………..65 3.2.2 旋转对象 ……………………………………………………….66 3.2.3 镜像对象 ……………………………………………………….67 3.2.4 缩放对象 ……………………………………………………….69 3.3 阵列对象 …………………………………………………………..70 3.3.1 创建环形阵列 …………………………………………………71 3.3.2 创建矩形阵列 …………………………………………………74 3.4 延伸和修剪对象 ………………………………………………………77 3.5 分解对象 ………………………………………………………………78 3.6 编辑多段线 ……………………………………………………………79 3.7 编辑样条曲线 …………………………………………………………80 3.8 编辑图案填充 …………………………………………………………82 3.8.1 编辑填充边界 ……………………………………………………83 3.8.2 编辑填充图案 ……………………………………………………84 第四章 选择 AutoCAD AutoCAD AutoCAD AutoCAD 对象 …………………………………………………………………………………………………………............……………………88887777 4.1 获得先选择后执行选择集 ……………………………………………88 4.2 在图形区域选择对象 ………………………………………………….89 4.3 添加或合并多个选择集 ………………………………………………92 4.4 定义选择集过滤器规则 ………………………………………………93 4.4.1 使用选择过滤器定义选择集规则 ……………………………….93 4.4.2 多个过滤条件 ……………………………………………………95 4.4.3 复杂的过滤条件 ………………………………………………….96 4.4.4 在过滤条件里使用通配符 ………………………….……………99 4.4.5 过滤扩展数据 ……………………………………….…………..100 4.5 从选择集删除对象 ……………………………………….…………..101 第五章 线型、图层和颜色 …………………………………………………………………………………………………………………………………………101010102222 5.1 线型 …………………………………………………………………..102 5.1.1 加载线型到 AutoCAD ……………………………………….......102 5.1.2 设置线型为活动 ………………………………………..............103 5.1.3 重命名线型 ………………………………………......................105 5.1.4 删除线型 ………………………………………...........................105 5.1.5 指定线型比例 ………………………………………..................106 IV 5.2 图层 ………………………………………........................................108 5.2.1 创建新图层 ………………………………………....................108 5.2.2 将图层设为当前图层 ………………………………………....110 5.2.3 冻结和解冻图层 ………………………………………............111 5.2.4 锁定和解锁图层 ………………………………………............112 5.2.5 删除图层 ………………………………………........................113 5.2.6 指定图层线型 ………………………………………................115 5.2.7 指定图层颜色 ………………………………………................117 5.3 颜色 ………………………………………........................................119 5.3.1 给对象颜色赋值 ……………………………………….............119 5.3.2 通过数据库设置当前颜色 ……………………………………122 5.3.3 使用系统变量 CECOLOR 设置当前颜色 …………………...122 第六章 AutoCAD AutoCAD AutoCAD AutoCAD 绘图………………………………………………………………………………………………………………………………………………………………........123123123123 6.1调整捕捉和栅格对齐………………………………………………....123 6.2 使用正交模式 ………………………………………………………125 6.3 计算点和值 …………………………………………………………125 6.4 计算面积 ……………………………………………………………127 6.4.1 计算给定面积 ..………………………………………………127 6.4.2 计算有用户输入点定义的面积 ………………………………128 6.5 交互式创建polyline线 ……………………………………………129 6.5.1 使用GetPoint 得到线的顶点 ………………………………..129 6.5.2 及时绘图JIG(Just In Time Graphic)……………………132 6.5.3 使用PLINE 命令创建多段线 ………………………………..143 6.6 访问AutoCAD 命令行 ………………………………………………145 第七章 .NET .NET .NET .NET 调用 ActiveX ActiveX ActiveX ActiveX 对象……………………………………………………………………………………………………………………........147147147147 7.1 AutoCAD ActiveX 技术介绍 ……………………………………….147 7.2 在.NET环境中使用AutoCAD的ActiveX对象 ………………………149 7.3 进程外的程序与AutoCAD互操作 …………………………………..151 7.4 ActiveX自动化与.NET的比较 ……………………………………..158 第八章 设置 AutoCAD AutoCAD AutoCAD AutoCAD 选项 ………………………………………………………………………………………………………………………………............160160160160 8.1 访问Perferences 对象 ……………………………………………160 8.2 设置和返回系统变量 ………………………………………………161 8.3 控制应用程序窗口 …………………………………………………161 V 8.4 图形文档操作 ………………………………………………………162 8.4.1 创建、打开、保存和关闭图形文件 …………………………162 8.4.2 锁定和解锁文档 ………………………………………………166 8.5 模型空间、图纸空间、布局 ……………………………………….168 8.5.1 模型空间和图纸空间 ………………………………………….168 8.5.2 布局和打印 ……………………………………………………169 8.6 视口 …………………………………………………………………174 8.6.1 浮动视口 ……………………………………………………….174 8.6.2 创建图纸空间视口 ……………………………………………176 8.6.3 修改视口视图和内容 …………………………………………181 8.7 打印图形 ……………………………………………………………182 8.7.1 从模型空间打印 ……………………………………………….182 8.7.2 从图纸空间打印 ………………………………………………187 第九章 AutoCAD AutoCAD AutoCAD AutoCAD 事件 ………………………………………………………………………………………………................................................................................................188188188188 9.1 事件处理的原则 ……………………………………………………188 9.2 AutoCAD 应用程序事件 ……………………………………………191 9.3 文档事件 …………………………………………………………...193 9.4 文档集合事件 ……………………………………………………...196 9.5 实体对象事件 ………………………………………………………198 第十章 AutoCADAutoCADAutoCADAutoCAD 三维对象 ………………………………………………………………………………………………........................................................203203203203 10.1 指定三维坐标 …………………………………………………….203 10.2 定义用户坐标系统 ………………………………………………206 10.3 转换坐标 …………………………………………………………210 10.4 创建三维对象 ……………………………………………………214 10.4.1 创建线框 …………………………………………………….214 10.4.2 创建网格 ……………………………………………………214 10.4.3 创建多面网格 ………………………………………………217 10.4.4 创建实体 ……………………………………………………220 10.5 在三维空间中编辑 ………………………………………………222 10.5.1 在三维空间旋转 ……………………………………………222 10.5.2 在三维空间阵列 ……………………………………………225 10.5.3 沿着平面镜像对象 …………………………………………230 10.6 编辑三维实体 ……………………………………………………232 第十一章 标注和公差 ……………………........................................…………………………………………………………………………........................................................235235235235 VI 11.1 标注的概念 ……………………………………………………...235 11.1.1 标注的组成部分 …………………………………………...235 11.1.2 标注系统变量和设置标注的文字样式 …………………...236 11.1.3 引线和关联标注 …………………………………………...237 11.2 创建标注 ………………………………………………………...237 11.2.1 创建线性标注 ……………………………………………...238 11.2.2 创建一个旋转的线性标注 ………………………………...240 11.3 编辑标注 ………………………………………………………...241 11.4 使用标注样式 …………………………………………………...243 11.5 模型空间和图纸空间中的标注 ………………………………...248 11.6 创建引线和注释 ………………………………………………...248 11.6.1 创建引线 …………………………………………………...249 11.6.2 向引线添加注释 …………………………………………...251 11.7 编辑引线关联性和编辑引线 …………………………………...253 11.8 使用形位公差 …………………………………………………...254 11.8.1 创建形位公差 ……………………………………………...254 11.8.2 编辑形位公差 ……………………………………………...255 第十二章 AutoCAD.NET 编程实例 ……………………........................................……………………………………………………........257257257257 12.1 获取AutoCAD 对象的类型和属性 ……………………………...257 12.1.1 获取特殊的 AutoCAD 对象类型 …………………………...257 12.1.2 得到AutoCAD 的块属性 ……………………………............261 12.2 添加AutoCAD 对象 ……………………………...........................263 12.2.1 添加块 …………………………….......................................263 12.2.2 添加带属性的块 …………………………….......................264 12.2.3 添加扩展数据 ……………………………...........................267 12.2.4 添加实体到组 ……………………………...........................270 12.2.5 添加对象到命名对象词典 …………………………….......272 12.2.6 添加实体对象到模型空间或图纸空间 …………………...273 12.3 用户交互 ……………………………...........................................277 12.3.1 在特殊位置选择实体的两种方法 ………………………...277 12.3.2 改变显示次序 ……………………………...........................280 12.3.3 根据提示在屏幕上选择对象 ……………………………...282 12.3.4 用户界面 ……………………………...................................287 12.4 及时绘图 ……………………………...........................................290 1 第一章 AutoCAD.NETAutoCAD.NETAutoCAD.NETAutoCAD.NET APIAPIAPIAPI 介绍 AutoCAD 是美国Autodesk 公司开发的计算机辅助设计软件,现已经 成为国际上广为流行的绘图工具。其应用领域非常广泛,在不同的行业中, Autodesk 开发了行业专用的版本和插件: 在机械设计与制造行业中发行了 AutoCAD Mechanical 版本。 在电子电路设计行业中发行了 AutoCAD Electrical 版本。 在勘测、土方工程与道路设计发行了 Autodesk Civil 3D版本。 但无论 AutoCAD 有多么强大,在实际应用中,有必要根据不同客户 的需求,在该平台上进行第二次有针对性的开发,即在现有的软件上进行 定制修改,功能扩展,达到自己想要的功能,而不会改变原有系统的内核。 1.1 AutoCAD 二次开发技术 为充分利用AutoCAD进行二次开发,Autodesk 公司为用户提供了5 种对AutoCAD进行二次开发的方式,即 1)AutoLISP/VLISP(基于LISP语言) 2)ADS(基于C语言) 3)Object ARX/ Object DBX(基于C++语言) 4)ActiveX Automation(支持COM的语言,C++,VBA,VB,Delphi等) 5)AutoCAD.NET API(.NET语言,如C#,VB.NET, C++.NET) 在AutoCAD.NET API出现之前,开发人员只能局限于使用 ActiveX Automation和支持COM的语言、AutoLISP和 ObjectARX 的 C++。 从AutoCAD2006开始,AutoCAD.NET API出现了,开发人员可以使 用.NET语言(如C#,VB.NET等),利用.NET Framework强大的功能对 AutoCAD进行二次开发。 本书介绍基于 C#语言的 AutoCAD.NET API 二次开发技术。 1.21.21.21.2 基于C#C#C#C#的AutoCAD.NETAutoCAD.NETAutoCAD.NETAutoCAD.NET APIAPIAPIAPI 二次开发技术 C#是由微软公司所开发的一种面向对象,且运行于.NET Framework 之上的高级程序设计语言。它综合了VB 简单的可视化操作和C++的高运 行效率,以其强大的操作能力、创新的语言特性和便捷的面向组件编程的 支持成.NET 开发的首选语言。 通过使用C#进行AutoCAD二次开发,不但能充分利用.NET平台的强大 2 功能,进行良好的数据封装,以更好的方式进行面向对象的程序设计。例 如在C#中,系统自动管理内存、回收垃圾;而ObjectARX C++ 需要开发者 自行管理内存,很容易发生内存泄露的问题。 1) AutoCAD版本与开发平台VS(Visual Studio.NET) 可用C#对不同版本的AutoCAD(2013--2006)进行二次开发。 C#的开发平台VS也是在不断升级中,本书中将以VS2010为基础进行 介绍。 2) AutoCAD .NETAPI组件 AutoCAD .NETAPI由不同的DLL文件组成,这些DLL文件包含有大 量的类、结构、方法及事件,用于访问图形文件对象或AutoCAD程序对象。 每个DLL文件定义了不同的命名空间,按功能组织API组件。 常用的AutoCAD.NET API的4个主要DLL文件是: a) AcDbMgd.dll 用于处理图形文件对象 b) AcMgd.dll 和 accoremgd.dll 用于处理AutoCAD应用程序 c) AcCui.dll 用于处理自定义文件 使用AutoCAD .NETAPI相关DLL文件里提供的类、结构、方法之前,必 须在你的VS中引用相应的DLL文件。完成引用后,你就可以在工程中使用该 DLL文件里定义的命名空间和API组件。下面通过一个简单的例子来说明。 1.31.31.31.3 一个简单的二次开发程序 我们将使用VS2010 来创建一个新的类库项目。通过这个项目,你可 以创建一个能被AutoCAD 装载的dll 文件。这个dll 文件会向AutoCAD 加 入一个名为“HelloWorld”的新命令。当用户运行这个命令后,在AutoCAD 命令行上将显示“Hello World”文本。 1)1)1)1) 启动VS2010,选择“文件->新建->项目”。在新建项目对话框中,选 择模板类型为【Visual C# Window】,然后选择“类库”模板,在名称 框中输入“ClassLibrary1”,然后选择项目存放的位置。见下图。 3 图1-1 新建项目对话框 2)2)2)2) 如果是AutoCAD2013,2012,选择.NET Framework 4,见下图。 图1-2 选择.NET Framework 如果是AutoCAD2011--2010,选择.NET Framework 3.5; 如果是AutoCAD2009--2007,选择.NET Framework 2.0。 3)3)3)3) 点击【确定】按钮来创建项目。 在项目的Class1.cs 文件中,一个Class1类被系统自动创建了。 接下来添加引用,然后向这个类加入AutoCAD命令。 4)添加引用。 鼠标右击【引用】,然后选择【添加引用】。在弹出的“添加引用” 对话框中选择【浏览】。在“选择组件”对话框中,选择AutoCAD 2013 的安装目录(假定为C:\Program Files\Autodesk\AutoCAD 2013), 4 在这个目录下找到acdbmgd.dll,然后选择并打开它。同理,找到 acmgd.dll和accoremgd并打开它。当这3个组件被加入后,请单击“添 加引用”对话框中的【确定】按钮。见下图。 图1-3 添加引用 注:如果是AutoCAD2012或更低的版本,只要引用acdbmgd.dll和 acmgd.dll即可。acdbmgd.dll 包含ObjectDBX 托管类,而 acmgd.dll 包含AutoCAD 托管类。 一旦引用了AutoCAD .NETAPIDLL文件,应将该引用的“复制本地” 属性设置为False。 设置方法:解决方案资源管理器->右键该引用->属性->复制本地->选 False,见下图。 图1-4 “复制本地”的设置 “复制本地”属性确定当VS编译工程时是否创建一个引用文件的副本 并将它放在与工程的程序集文件相同的目录下。 由于AutoCAD安装目录里 包含有相同文件名的DLL文件, 因此,如果创建了引用文件副本,当加载 5 程序集文件到AutoCAD中时可能会引发意想不到的结果。 4)向类加入AutoCAD命令 cmd1 在代码编辑器中打开Class1.cs文件,系统开始生成的代码如下: namespace ClassLibrary1 { public class Class1 {} } 然后我们添加一些代码如下: using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Runtime; [assembly: CommandClass(typeof(ClassLibrary1.Class1))] namespace ClassLibrary1 { public class Class1 { [CommandMethod("cmd1")] public void HelloWorld() { Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; ed.WriteMessage("Hello World"); } } } 代码分析 a) 要加入能在AutoCAD 中调用的命令,你必须使用CommandMethod属 性。这个属性由Runtime 命名空间提供。在类Class1 中加入下列属性和函 数。 [CommandMethod("cmd1")] public void HelloWorld() {} b) 当cmd1命令在AutoCAD中运行的时候,上面定义的HelloWorld 函数 就会被调用。在这个函数中,一个Editor 类的实例将被创建。Editor 类拥 有访问AutoCAD命令行的相关方法。 6 4) 要在AutoCAD 中调试程序,你可以让 VS启动AutoCAD。 1 在解决方案管理器中右键单击 ClassLibrary1,然后选择【属性】。 2 在属性页对话框中,选择【调试】� 【启动外部程序】。 3 单击省略号按钮,然后选择AutoCAD 2013安装目录下的acad.exe。 见下图。 图1-5 让VS启动AutoCAD的配置 5)设置好以后,按F5 来启动AutoCAD。这样就会编译你的程序然后自动 启动AutoCAD,而当编译后有错误的时候就会停止。 6)在AutoCAD命令行中输入NETLOAD命令,在出现的对话框中选择上面 生成的ClassLibrary1.dll,然后打开它。NETLOAD命令被用来装载托 管程序。 7) 在AutoCAD命令行中输入cmd1命令,结果显示“Hello World”,见 下图。 图1-6 结果显示 8) 切换到VS,在ed.WriteMessage()语句处,用F9加入一个断点。在 AutoCAD 中再次运行cmd1 命令,你会注意到你可以跟踪代码的运行。 7 如果您按照上面的步骤可以得到正常的结果,可以说您开始步入 AutoCAD.NET二次开发的大门了。后面的章节分为基础篇和开发篇,但更加 基础的内容,例如AutoCAD的命令和操作,您需要查看有关的书籍;C#的基 础编程知识,您可参考科学出版社出版的《面向对象和组件的C#编程》, 或其它书籍。 1.41.41.41.4 使用版本的问题 本书例题代码都是在VS2010上调试,在AutoCAD2013平台上运行通过。 当然您也可以选择其他的VS版本和AutoCAD版本。 1) 开发AutoCAD 2013(或2012).NETAPI项目,我们使用: Microsoft Visual Studio 2010 (专业版或高级版) Microsoft .NET Framework 4.0 2) 开发AutoCAD 2011(或2010).NETAPI项目,我们使用: Microsoft Visual Studio 2008 with Service Pack 1 Microsoft .NET Framework 3.5 with Service Pack 1 3) 开发AutoCAD 2009(或2008,2007).NETAPI项目,我们使用: Microsoft Visual Studio 2005 Microsoft .NET Framework 2.0 注意:由VS2008编译的目标为.NET Framework 3.5的项目,可以加载 到AutoCAD2012运行没有问题。但VS2008不能用来调试AutoCAD 2012加载的 项目,调试项目时必须使用VS2010。 8 第二章 创建AutoCAD AutoCAD AutoCAD AutoCAD 对象 要想有效利用 AutoCAD.NET API编程,必须熟悉 AutoCAD 对象和属性。 你对对象的图形属性和非图形属性知道的越多,使用 AutoCAD .NETAPI 对他们进行操作就越容易。 2.1 理解AutoCAD 对象模型 AutoCAD 对象包含 AutoCAD 所有的图形对象和决大部分非图形对象, 其中包括实体(图元)、符号表、命名字典等。例如: · 直线、圆弧、文字和标注等实体图元都是对象, · 文字与标注样式等样式设置都是对象, · 图层、组合和块等组织结构都是对象, · 视图和视口等图形显示都是对象, · 甚至AutoCAD 应用程序本身也是对象。 在AutoCAD 中,属性(Properties)是一个比较广泛的概念,即包括 颜色、图层、线型等通用属性,也包括各种几何信息,还包括与具体对象 相关的附加信息,如文字的内容、样式等。 但在本书中,“属性”是指具体对象的属性,它的定义见 C#书籍(从 编程角度看,属性是对象字段的封装)。 对象是 AutoCAD.NET API 的主要构造块。每一个公开的对象均精确代 表一个 AutoCAD 组件,它们之间又组成了不同的程序集和命名空间。 所有对象以 AutoCAD 的Application 对象为根对象,按层次结构方式 组织,通常称层次结构为对象模型。下图所示表示了 Application 对象与 BlockTableRecord 模型空间内实体的基本关系。这里只列出了 AutoCAD .NET API 中的部分对象。 9 图2-1 AutoCAD.NET 对象模型 2.1.1 Application 对象 Application 对象是 AutoCAD .NETAPI的根对象,从 Application 对 象,可以访问 AutoCAD 主窗口,以及任何打开的图形,并进而访问图形里 的各个对象。 Application 对象有一个用于管理文档集合的 DocumentManager 属性, 它返回的是 DocumentCollection 对象,该对象提供了访问当前打开的 AutoCAD 图形的功能,并允许你创建、保存、打开图形文件。 Application 对象的其他属性提供了访问应用程序特有数据的功能, 像信息中心 InfoCenter、主窗口、状态栏等。MainWindow 属性允许访问应 用程序的名称、主窗口大小、位置及可见性等。见下图。 300 电子书介绍: 对加密的电子书,不同用户电脑需要不同的阅读密码。 请登录“我成长”网站(www.wochengzhang.com), 查看付费信息(5--9元)。 如果您已经付费,请把您的信息: 1 付费信息(要购买的电子书名,付费金额,汇款办理的单号) 2 您的电脑的机器码(运行电子书,系统会显示机器码) 3 您的联系信息(姓名,email2018香港马会开奖现场等) 发到 gblijun@qq.com 我们收到后,会尽快给您发该电子书的阅读密码。
还剩15页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享pdf获得金币 ] 3 人已下载

下载pdf

pdf贡献者

ne8c

贡献于2013-10-12

下载需要 8 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf