查看原文
其他

C#程序对AutoCAD二次开发(一)

王双炎 GIS前沿 2022-03-16


AutoCAD(Autodesk Computer Aided Design)是Autodesk(欧特克)公司首次于1982年开发的自动计算机辅助设计软件,用于二维绘图、详细绘制、设计文档和基本三维设计,现已经成为国际上广为流行的绘图工具。AutoCAD具有良好的用户界面,通过交互菜单或命令行方式便可以进行各种操作。它的多文档设计环境,让非计算机专业人员也能很快地学会使用。在不断实践的过程中更好地掌握它的各种应用和开发技巧,从而不断提高工作效率。


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应用程序。


首先软件准备:


  • Visual Studio 2013:可在MSDN开发者中心下载。

  • AutoCAD2012:可在autodesk官网上进行下载。

  • ObjectARX_SDK:可在 AutoCAD开发者中心下载,这其中包含了AutoCAD.net API的相关文档和众多的示例工程。其中ObjectARX2012下载地址如下:

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类,以获取命令行输入以及点选、窗选、交选等不同的选择方式。让我们下期再见。


- END -


CAD完美转ArcGIS的干货技巧.pdf(文档可下载)
让你精通CASS软件的教程免费下载
CAD放样、点放样、控制点测量、面积测量、直线放样
CASS地形图绘制
提高效率 | 教你批量提取CAD坐标的小技巧Python学的好,数据处理快又好!ArcPy入门到精通(手册可下载)

戳原文,更有料!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存