logo资料库

AutoCAD .NET开发教程(全面详细通俗易懂入门教程).pdf

第1页 / 共77页
第2页 / 共77页
第3页 / 共77页
第4页 / 共77页
第5页 / 共77页
第6页 / 共77页
第7页 / 共77页
第8页 / 共77页
资料共77页,剩余部分请下载后查看
第二篇 AutoCAD NET 开发教程 第 1 章:AutoCAD NET API 概览 本章简介8 AutoCAD .NET API 概述。 .NET 框架简介 程序集和命名空间。 AutoCAD .NET 开发环境和工程创建。 学习要点 了解 AutoCAD .NET API。 了解.NET 框架。 了解程序集和命名空间的概念。 掌握 AutoCAD .NET 工程的创建。 1.1 AutoCAD .NET API 概述 我们在前一篇详细讲解了 AutoCAD 的开发工具-ObjectARX,毫无疑问以 VC++ 为基础的 ObjectARX 的 开发功 能是非 常强大 的,但 是掌握 VC++ 及 ObjectARX 相对来说困难也是最大的,而 AutoCAD 其他已有的开发工具如 VBA、 VisualLisp 等虽然方便易学,开发周期也比较短,但是,对执行速度和性能要求 都很高的解决方案或者复杂的程序, VBA 和 VisualLisp 就难以胜任了。 从 AutoCAD 2006 开始,AutoCAD 增加了.NET API,它提供了一系列托管的
第 1 篇 ×××××× 外包类(Managed Wrapper Class),使开发人员可在.NET 框架下,使用任何支 持.NET 的语言,如 VB.NET、C# 和 Managed C++等对 AutoCAD 进行二次开发。 随着版本的更新,在最新的 AutoCAD 2008 中, NET API 已经拥有与 C++相匹 配的强大功能,由于开发接口是完全面向对象的,又具有方便易用的特点,所以 NET API 是目前较理想的 AutoCAD 开发工具,也是今后的发展方向。 1.2 .NET 简介 .NET 是 Microsoft 面向 XML Web 服务的平台,它允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。 .NET 框架是 NET 的最为重要的组件,它是一个可以构造、发布以及运行 Web 服务的开发环境。从概念上讲,.NET 框架平台代表了一种崭新的软件开发 模式,它与 Win32 API 或 COM 一样,是把系统服务以接口形式提供给开发人员 的软件开发平台。与以往不同的是,.NET 框架能够更好地完成代码重用、资源配 置、多语言集成开发和安全管理等任务,在安全性、易用性以及开发效率等方面 远远超过了以前的开发模式。 .NET 框架平台包含两个方面的核心内容:一个是运行时引擎(Runtime Engine),另一个是基类库(Base Class Library)。对于运行时引擎,可能所有的开发 人员都不会感到陌生,因为,从使用标准 C 语言开发工具开始,我们就至少接触 过 C 运行时库(C Runtime Library)。后来,我们使用的工具越来越强大,接触过的 运行时库的种类也越来越多。像微软基本类库(MFC)、活动模板库(ATL)、VB 运 行时库(VB Runtime library)和 Java 虚拟机等。 138
第 1 章 AutoCAD 开发概览 图 1-1 .NET 框架 使用.NET 开发程序具有许多好处,概括起来有以下几点: n 统一的面向对象开发平台 n 内存自动管理 – 垃圾收集 .NET 通过垃圾收集机制来实现资源的自动回收功能,简单地说,就是将那些 程序中释放内存的代码由系统在后台自动地完成。例如在 C++中,当我们申请了 一份内存,使用完成后必须显式地将其释放,否则会导致内存泄露,如下代码所 示: char *pName=(char*)malloc(128); strcpy(pName,"Hello"); //... free(pName); 而在.NET 下,我们可以不用关心内存的使用,例如: String *pName=new String("Hello") C++ VB Dim Name As String = "Hello" C# String Name = “Hello”; 垃圾收集机制会负责内存的释放,不需要我们显示地释放 。 139
第 1 篇 ×××××× n 一致的异常处理 在 Windows 平台上进行编程,不同的开发平台或语言提示错误信息的风格不 一,错误的处理方式也不一样,如在 VB 用下面语句来完成错误处理,很难理解 而且有问题。 On Error GoTo UnexpectedError Dim x As Double=10/0 ‘…错误将抛出异常! UnexpectedError: MsgBox Str$(Err.Number) 而在.NET 下,采用统一的异常处理,所有的错误处理都通过异常来报告,异 常可以让开发人员从代码中去掉那些复杂的 、可能导致错误的判断的语句,使代 码的编写、阅读以及维护工作大大简化,如 Try Dim x As Double=10/0 ‘…错误将抛出异常 Catch ‘…发生了什么? 除以 0! Finally ‘…清理 End Try n 支持多种开发语言 .NET 框架可以让不同的语言集成在一起。例如,如果开发人员在 Visual C++ 中编写了一个托管的类,那么其他开发人员便可以可以轻松地在 Visual Basic 中 对这个类进行继承,以产生这个类的子类,在这个类的基础上,使用 Visual Basic 语言继续完善这个类, 实际上,AutoCAD 的托管部件是用托管 C++写的,但是可 以是被 VB.NET 访问。 140
第 1 章 AutoCAD 开发概览 图 1-2 .NET 开发语言 所有语言编译成被在公共语言运行库 (CLR)执行的的 IL(中间语言),在性 能上没有明显的差别。 用.Net 开发的程序都需要公共语言运行库 (CLR)才可以执行,这种程序称之 为托管程序,同样使用 NET 开发的 AutoCAD 程序必须运行在 NET 框架 2.0 环境 下,缺省情况下,如果当前电脑没有 NET 2.0 环境,在安装 AutoCAD 2007/2008 时,会完成 NET 运行环境的设置。 1.3 程序集和命名空间 程序集是 .NET 框架应用程序的主要构造块,它是作为一个单一的实现单元 (包含一个或多个文件)来创建、标识和部署的功能集合。所有的托管类型和资 源都可以被标记为仅在其实现单元内访问,或者标记为可由该单元以外的代码来 访问。。 程序集通过清单来进行自我说明,清单是每个程序集的不可或缺的组成部分。 清单通常包含以下内容: l 建立程序集标识(以文本名称的格式)、版本、类别和数字签名(如果要 在应用程序之间共享该程序集)。 l 定义组成程序集实现的文件(通过名称和文件散列)。 141
第 1 篇 ×××××× l 指定组成程序集的类型和资源,包括哪些是从程序集中导出的。 l 逐条记录编译时对其他程序集的依存。 图 1-3 程序集清单内容 AutoCAD 的托管程序集为两个文件:acdbmgd.dll 和 acmgd.dll,它们保存在 AutoCAD 的安装目录下, 如 C:\Program Files\AutoCAD 2008\,其中 acdbmgd.dll 包含 ObjectDBX 托管类,主要包含用于处理 AutoCAD 数据库和 DWG 文件的相 关操作的命名空间和类,如实体操作等,而 acmgd.dll 包含 AutoCAD 托管类,用 户处理 AutoCAD 程序级别的对象, 如程序对象、文档对象等。 在编写.NET 程序时,会用到类和其他类型,为了使应用程序更有条理性,可 以将类组合为名字空间,用到的类通常都包含在特定的命名空间中,系统缺省的 重要命名空间包括 System、System.IO、System.Drawing 等,如果要调用 AutoCAD 中的类,就需要使用 AutoCAD 的命名空间。 如果要在程序中使用名字空间,可以首先导入它,以便在以后每次使用其成 员时无需重复该名字空间的名字,C# 中需要使用关键字 using 导入命名空间, 在本篇中我们约定缺省情况下都导入以下命名空间: 访问 AutoCAD 程序对象 using Autodesk.AutoCAD.ApplicationServices; 访问 the AutoCAD 编辑器 using Autodesk.AutoCAD.EditorInput; 命令注册 using Autodesk.AutoCAD.Runtime; 142
第 1 章 AutoCAD 开发概览 本篇以 C#为例来讲解 AutoCAD .NET API,如果用户使用 VB.NET 开发,可对 代码做相应的转化,可以借助一些 C# 转换为 VB.NET 的工具。 1.4 创建工程 使用.NET API 对 AutoCAD 进行开发需要 Microsoft Visual Studio 2005 集成开 发环境作为开发平台,也可以可以使用 Microsoft Visual C# 2005 Express Edition 集成开发环境 (IDE) 进行 C# 语言进行编程,测试版的 Visual C# 2005 Express Edition 已经通过 Web 下载 (http://msdn.microsoft.com/express) 免费提供。 下面以AutoCAD 2008 运行平台为例介绍了创建一个工程的具体步骤: 注意:该过程以创建 C#工程为例加以说明,创建 VB.NET 工程稍微有些 不同。 1) 、启动 Microsoft Visual Studio .NET 2005,如图 1-2 所示。 图 1-4 Visual Studio 2005 软件界面 2) 、在【文件】菜单中,选择用 C#语言创建工程,【新建】一个类库(Class Library)项目,指定工程名称和存放位置如图 1-3 所示。 143
第 1 篇 ×××××× 图 1-5 创建项目 3)、工程建立完成后,需要添加程序集(托管模块)的引用,用鼠标右键单 击”引用”然后选择”添加引用”。在弹出的”添加引用”对话框中选择”浏览”。 在”选择组件”对话框中,选择 AutoCAD 2008 的安装目录(这里假定为 C:\Program Files\AutoCAD 2008\),在这个目录下找到 acdbmgd.dll 和 acmgd.dll,将程序集添 加到当前工程。 4)、添加完程序集(托管模块)的引用后,我们就可以导入它们,在 Class1 类 的声明语句之前,导入所需的 AutoCAD 的 ApplicationServices, EditorInput 和 Runtime 命名空间: using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; 5)、要使定制的程序能够在 AutoCAD 中被调用,需要在工程中添加定制的 命令,可以用 CommandMethod 或 CommandMethodAttribute 完成命令的注册,这 个属性由 Runtime 命名空间提供,在类 Class1 中添加下列属性和函数。例如: [CommandMethod("HelloNet ")] 144
分享到:
收藏