
Autodesk官方最新.net开发教程(C#).pdf
57页AutodeskAutodeskAutodesk Autodesk 官方最新的官方最新的.NET.NET.NET .NET 教程教程(C#)(C#)(C#) (C#) 1 AutodeskAutodeskAutodesk Autodesk 官方最新的官方最新的.NET.NET.NET .NET 教程教程(C#)(C#)(C#) (C#) 第 1 章Hello World: 访问 ObjectARX .NET 封装类1 第 2 章 .NET AutoCAD 向导及 Editor 类.2 第 3 章数据库基础: 创建我们自己的 Employee 对象.4 第 4 章数据库基础 2: 添加自定义数据.9 第 5 章用户互操作:提示和选择 17 第 6 章更多的用户界面:添加自定义数据24 第 7 章事件.33 第第 1 1 章章 HelloHello World:World: 访问访问 ObjectARXObjectARX .NET.NET 封装类封装类 在这一章中, 我们将使用 Visual Studio .NET 来创建一个新的类库工程 通过这个 工程,你可以创建一个能被 AutoCAD 装载的.NETdll 文件。
这个 dll 文件会向 AutoCAD 加 入一个名为“HelloWorld”的新命令当用户运行这个命令后,在 AutoCAD 命令行上将显 示“Hello World”文本 1)1)启动 Visual Studio.NET,选择”文件新建工程”(File New Project)在新 建工程对话框中选择工程类型为”Visual C#工程”,然后选择”类库”模板,在工程名字 框中输入”Lab1”,然后选择工程存放的位置点击确定按钮来创建工程 2)2)在工程的 Class1.cs 文件中,一个公有类“Class1”已经被系统自动创建了 接下来 向这个类加入命令要加入命令,你必须使用 AutoCAD .NET 托管封装类这些托管封装类 包含在两个托管模块中 要加入对这两个托管模块的引用, 请用鼠标右键单击”引用”然后 选择”添加引用” 在弹出的”添加引用”对话框中选择”浏览”在”选择组件”对话框 中,选择 AutoCAD 2006 的安装目录(这里假定为 C:\Program Files\AutoCAD 2006\),在 这个目录下找到“acdbmgd.dll”然后选择并打开它再一次选择”浏览”,在 AutoCAD 2006 的安装目录下找到“acmgd.dll”并打开它。
当这两个组件被加入后,请单击”添加引 用” 对话框中的”确定”按钮正如它们的名字所表示的,acdbmgd.dll 包含 ObjectDBX 托管类,而 acmgd.dll 包含 AutoCAD 托管类 AutodeskAutodeskAutodesk Autodesk 官方最新的官方最新的.NET.NET.NET .NET 教程教程(C#)(C#)(C#) (C#) 2 3)3)使用对象浏览器(Visual Studio.NET 的”查看其它窗口对象浏览器”菜单项)来 浏览加入的两个托管模块所提供的类 请展开“AutoCAD .NET Managed Wrapper”对象(在 对象浏览器中显示为 acmgd),在整个教程中我们将使用这个对象中的类在本章中,我们 将使用 “Autodesk.AutoCAD.EditorInput.Editor”类的一个实例来在 AutoCAD 命令行中 显示文本请再展开“ObjectDBX .NET Managed Wrapper” 对象(在对象浏览器中显示为 acdbmgd),这个对象中的类将被用来访问和编辑 AutoCAD 图形中的实体(这部分内容将在 以后的章节中介绍)。
4)4) 引用了 ObjectARX .NET 封装类后, 我们就可以导入它们在Class1 类的声明语句 (位 于 Class1.cs 文件的顶部的)之前,导入 ApplicationServices, EditorInput 和 Runtime 命名空间 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Runtime; 5)5)接下来在类 Class1 中加入命令要加入能在 AutoCAD 中调用的命令,你必须使用 “CommandMethod”属性 这个属性由 Runtime 命名空间提供 在类 Class1 中加入下列属性 和函数 [CommandMethod(“HelloWorld“)] public void HelloWorld() { } 6)6) 当“HelloWorld”命令在 AutoCAD 中运行的时候,上面定义的 HelloWorld 函数就会被 调用在这个函数中,一个 Editor 类的实例将被创建Editor 类拥有访问 AutoCAD 命令行 的相关方法,它还包括选择对象和其它一些重要的功能。
AutoCAD 当前活动文档的 Editor 对象可以使用 Application 类来访问当 Editor 对象被创建后,你可以使用它的 WriteMessage 方法在命令行中显示“Hello World”文本在 HelloWorld 函数中加入以下 代码: Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; ed.WriteMessage(“Hello World“); 7)7)要在AutoCAD中调试这个程序, 你可以让Visual Studio.NET 启动一个AutoCAD进程 在解决方案管理器中右键单击“Lab1”,然后选择”属性”在 Lab1的属性页对话框中, 选择” 配置属性调试” 在”启动”项中, 选择”调试模式”为”程序”, 在”启动程序” AutodeskAutodeskAutodesk Autodesk 官方最新的官方最新的.NET.NET.NET .NET 教程教程(C#)(C#)(C#) (C#) 3 的右边单击省略号按钮然后选择 AutoCAD 2006 安装目录下的 acad.exe。
设置好以后,按 F5 来启动一个 AutoCAD 进程这样就会编译你的程序然后自动启动 AutoCAD,而当编译后有错 误的时候就会停止请修正你可能碰到的任何错误 8)8) “NETLOAD”命令被用来装载托管程序在AutoCAD 命令行中输入 NETLOAD,会出现” 选择.NET 组件”的对话框选择上面生成的“lab1.dll”然后打开它 9)9)在命令行中输入“HellowWorld”如果一切顺利的话,命令行中将显示“Hello World”文本 切换到 Visual Studio.NET,在 ed.WriteMessage(“Hello World”);语句处 加入一个断点在 AutoCAD 中再次运行 HelloWorld 命令,你会注意到你可以跟踪代码的运 行Visul Studio.NET 的”调试”菜单有好几项可以用来跟踪程序的运行 如果有时间的话, 请浏览一下 CommandMethod 属性 你会发现它有七种不同的形式 在上面的例子中,我们使用了最简单的形式,它只有一个输入参数(命令的名字)你可以 使用其它的形式来控制命令的工作方式,例如你可以确定命令组的名字、全局和局部名字、 命令标识(命令如何来运行)等。
第第第 第 2 2 2 2 章章章 章 .NET.NET.NET .NET AutoCADAutoCADAutoCAD AutoCAD 向导及向导及向导及 向导及 EditorEditorEditor Editor 类类类 类 在第一章中,我们使用的是类库模板,这样就不得不手工加入 acdbmdg. dll 和 acmgd.dll 这两个引用 在这一章中, 我们将使用 AutoCAD 托管 C#应用程序向导来创建.NET 工程,它会自动加入以上两个引用在开始本章之前,你首先得安装 ObjectARX 向导 (ObjectARX2006 开发包的\utils\ObjARXWiz\ArxWizards.msi) 1)启动 Visual Studio .NET,选择”文件新建工程”(File New Project)在新建 工程对话框中选择工程类型为”Visual C#工程”,然后选择“AutoCAD Managed CS Project Application”模板在工程名字框中输入”Lab2”,然后选择工程存放的位置 点击确定按钮,“AutoCAD Managed CSharp Application Wizard”对话框将会出现。
因为 我们不需要使用非托管代码,所以不要选择“Enable Unmanaged Debugging”项 “Registered Developer Symbol”将会使用你在安装 ObjectARX 向导时输入的值单 击”finish”按钮来创建工程 2)下面来看一下向导生成的工程在解决方案浏览器中,你会看到 acdbmgd 和 acmgd 已 经被引用了在 Class.cs 文件中,“Autodesk.AutoCAD.Runtime”命名空间已被导入,工 AutodeskAutodeskAutodesk Autodesk 官方最新的官方最新的.NET.NET.NET .NET 教程教程(C#)(C#)(C#) (C#) 4 程使用“Registered Developer Symbol”的名字来命名缺省的公有类向导还为类加入了 一个 CommandMethod 属性和一个函数,它们用于 AutoCAD 命令 3)在前一章中,我们使用一个“Autodesk.AutoCAD.EditorInput.Editor”类的实例对象 在 AutoCAD 命令行上输出文本 在这一章中, 我们将使用这个类来提示用户在 AutoCAD 图形 中选择一个点,然后将用户选择的点的 x,y,z 值显示出来。
和前一章一样,请导入 Autodesk.AutoCAD.ApplicationServices 和 Autodesk.AutoCAD.EditorInput 命名空间 4)把向导生成的 CommandMethod 属性的值改为有意义一些的名字如“selectPoint”(函 数的名字可以不用修改)PromptPointOptions 类用来设置提示字符串和其它的一些控制 提示的选项这个类的一个实例作为参数被传入到 Editor.GetPoint方法在函数的开始, 实例化这个类,设置字符串参数为“Select a point”因为 Editor.GetPoint 方法会返 回一个 PromptPointResult 类的实例对象,所以我们也要把它实例化 PromptPointOptions prPointOptions = new PromptPointOptions(“Select a point“); PromptPointResult prPointRes; 5) 接下来实例化一个 Editor 类的对象并使用参数为 PromptPointOptions 对象的 GetPoint 方法。
用 GetPoint 方法的返回值来给上面声明的 PromptPointResult对象赋值 赋值好以后,我们可以测试 PromptPointResult 对象的状态,如果不是 OK 就返回 prPointRes = ed.GetPoint(prPointOptions); if (prPointRes.Status != PromptStatus.OK) { ed.WriteMessage(“Error“)。
