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