Hello World:访问 ObjectARX .NET 封装类
在这一章中,我们将使用Visual Studio .NET 来创建一个新的类库工程。通过这个工程,你可以创建一个能被AutoCAD 装载的 .NET dll文件。这个dll文件会向AutoCAD 加入一个名为“HelloWorld”的新命令。当用户运行这个命令后,在AutoCAD命令行上将显示“Hello World”文本。
1) 启动 Visual Studio .NET,选择“文件>新建>工程”(File> New> Project)。在新建工程对话框中选择工程类型为“Visual C#工程”,然后选择“类库”模板,在工程名字框中输入“Lab1”,然后选择工程存放的位置。点击确定按钮来创建工程。
2) 在工程的 Class1.cs 文件中,一个公有类“Class1”已经被系统自动创建了。接下来向这个类加入命令。要加入命令,你必须使用 AutoCAD .NET 托管封装类。这些托管封装类包含在两个托管模块中。要加入对这两个托管模块的引用,请用鼠标右键单击”引用”然后选择“添加引用”。在弹出的“添加引用”对话框中选择“浏览”。在”选择组件”对话框中,选择AutoCAD 2006的安装目录(这里假定为 C:Program FilesAutoCAD 2006)在这个目录下找到“acdbmgd.dll”然后选择并打开它。再一次选择“浏览”,在 AutoCAD 2006 的安装目录下找到“acmgd.dll”并打开它。当这两个组件被加入后,请单击“添加引用”对话框中的“确定”按钮。正如它们的名字所表示的,acdbmgd.dll 包含ObjectDBX 托管类,而acmgd.dll 包含AutoCAD托管类。
3) 使用对象浏览器(Visual http://Studio.NET 的”查看>其它窗口>对象浏览器”菜单项)来浏览加入的两个托管模块所提供的类。请展开“AutoCAD .NET Managed Wrapper”对象(在对象浏览器中显示为 acmgd),在整个教程中我们将使用这个对象中的类。在本章中,我们将使用“Autodesk.AutoCAD.EditorInput.Editor”类的一个实例来在 AutoCAD 命令行中显示文本。请再展开“ObjectDBX .NET Managed Wrapper”对象(在对象浏览器中显示为acdbmgd),这个对象中的类将被用来访问和编辑AutoCAD图形中的实体(这部分内容将在以后的章节中介绍)。
4)引用了ObjectARX .NET 封装类后,我们就可以导入它们。在 Class1类的声明语句(位于Class1.cs 文件的顶部的)之前,导入 Application Services,EditorInput和Runtime命名空间。
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
5)接下来在类 Class1 中加入命令。要加入能在 AutoCAD 中调用的命令,你必须使用“Command Method”属性。这个属性由 Runtime 命名空间提供。在类Class1 中加入下列属性和函数。
[CommandMethod("HelloWorld")]
public void HelloWorld()
{ }
6)当“HelloWorld”命令在 AutoCAD 中运行的时候,上面定义的 HelloWorld 函数就会被调用。在这个函数中,一个 Editor 类的实例将被创建。Editor 类拥有访问 AutoCAD 命令行的相关方法,它还包括选择对象和其它一些重要的功能。AutoCAD 当前活动文档的 Editor 对象可以使用 Application 类来访问。当 Editor 对象被创建后,你可以使用它的 WriteMessage 方法在命令行中显示“Hello World” 文本。在HelloWorld 函数中加入以下代码:
Editored=Application.DocumentManager.MdiActiveDocument.Editor;
ed.WriteMessage("Hello World");
7)要在AutoCAD中调试这个程序,你可以让 Visual http://Studio.NET 启动一个 AutoCAD 进程。在解决方案管理器中右键单击“Lab1”,然后选择“属性”。在 Lab1 的属性页对话框中,选择“ 配置属性>调试”。在“启动”项中,选择“调试模式”为“程序”,在“启动程序”的右边单击省略号按钮然后选择 AutoCAD 2006 安装目录下的 acad.exe。设置好以后,按 F5 来启动一个 AutoCAD 进程。这样就会编译你的程序然后自动启动 AutoCAD,而当编译后有错误的时候就会停止。请修正你可能碰到的任何错误。
8)“NETLOAD”命令被用来装载托管程序。在 AutoCAD 命令行中输入 NETLOAD,会出现“选择 .NET 组件”的对话框。选择上面生成的“lab1.dll”然后打开它。
9)在命令行中输入“HellowWorld”。如果一切顺利的话,命令行中将显示“Hello World”文本。切换到Visual Studio .NET,在ed.WriteMessage (“Hello World”);语句处加入一个断点。在 AutoCAD 中再次运行 Hello World 命令,你会注意到你可以跟踪代码的运行。 Visul http://Studio.NET 的“调试”菜单有好几项可以用来跟踪程序的运行。
如果有时间的话,请浏览一下
CommandMethod 属性。你会发现它有七种不同的形式。在上面的例子中,我们使用了最简单的形式,它只有一个输入参数(命令的名字)。 你可以使用其它的形式来控制命令的工作方式,例如你可以确定命令组的名字、全局和局部名字、命令标识(命令如何来运行)等。