AutoCAD对象模型如下图:
我们接下来讲解一下如何使用ObjectARX对AutoCAD进行二次开发,在我们做测绘和地理信息工作中经常使用的CAD二次开发产品有南方CASS、威远图、湘源修规等。
ObjectARX是AutoDesk公司针对AutoCAD平台上的二次开发而推出的一个开发软件包,它提供了以C++为基础的面向对象的开发环境及应用程序接口,能真正快速的访问AutoCAD图形数据库。与其他的AutoCAD 二次开发工具 AutoLISP 和ADS所不同的是,ObjectARX应用程序是一个DLL(动态链接库),共享AutoCAD的地址空间,对AutoCAD进行直接函数调用。所以,使用ARX编程的函数的执行速度得以大大提高。ARX 类库采用了标准的C++类库的封装形式,这也大大提高了程序员编程的可靠度和效率。ObjectARX编程环境提供了面向对象的C ++,C#和VB .NET应用程序编程接口,供开发人员使用,可以帮助开发快速、高效的CAD 应用程序,扩展AutoCAD功能。
这里我们主要讲解基于Visual Studio 2013和ObjectARX2012开发CAD2012应用程序。
首先软件准备:
http://download.autodesk.com/esd/objectarx/2012/ObjectARX_2012_Win_64_and_32Bit.exe)
下载后的ObjectARX解压后目录如下图所示。其中docs文件夹为帮助文档;classmap文件夹是程序类关系图;samples是一些示例工程,可参考其中代码;inc文件夹是程序引用的头文件。
下面我们来新建一个基于C#语言开发CAD扩展程序的解决方案。首先我们启动Visual Studio 2013并新建一个.NET Framework 4环境的Visual C#的类库项目。
添加程序引用文件,将ObjectARX 2012\inc文件夹中acdbmgd.dll和acmgd.dll添加到工程中,用并将两个文件的复制本地属性改成False。其中acdbmgd.dll用于图形文件中对对象的操作,当处理图形文件中储存的对象时进行引用;acmgd.dll用于对AutoCad应用程序进行操作,当处理AutoCad应用程序和用户接口时进行引。
准备开始写作第一个应用程序,在Class1类的定义之前导入Runtime、EditorInput、ApplicationServices命名空间。代码如下:
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
在Class1类内部加入能在CAD中调用的命令,把由Runtime命名空间提供的“CommandMethod”属性加入到Class1类中,并在Class1类中定义一个方法。完整代码如下图所示:
当“HelloCAD”命令在AutoCAD中运行时候,在Class1类中定义的HelloCAD()函数就会被调用。程序中创建一个Editor实例,它具有访问AutoCAD命令行的相关方法。我们使用WriteMessage()方法在命令行打印一行字符串。接下来我们调试一下我们做的第一个应用程序,在解决方案管理器中选中“First”项目右键进入属性对话框,选择“调试”页面,配置启动AutoCAD2012文件目录中acad.exe外部应用程序。
在Visual Studio 2013中点击【调试】-【启动调试】按钮(或者按F5)启动AutoCAD2012应用程序。在命令行中输入“netload”命令,加载我们解决方案中\bin\Debug文件夹中First.dll文件。在命令行输入 “HelloCAD”命令之后命令行将打印出“欢迎进入CAD.Net开发世界!!!”
以上是我们C#语言开发CAD的第一课,希望我们互相探讨,一起学习交流。下次有时间我们可以详细讲解一下Editor类,以获取命令行输入以及点选、窗选、交选等不同的选择方式。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删