AutoCAD,CAD(Computer Aided Design)计算机辅助设计,是计算机技术的一个重要的应用领域。AutoCAD是美国Autodesk公司开发的交互式绘图软件。其具有强大的功能,其功能特点如下:
l具有完善的图形绘制功能;
l具有强大的图形编辑功能;
l可以采用多种方式进行二次开发或用户定制;
l可以进行多种图形格式的转换,具有较强的数据交换功能;
l支持多种硬件设施;
l支持多种操作平台;
l具有通用性、易用性,适用于各类用户。
AutoCAD二次开发的开发方式:
1.ADS开发
ADS(AutoCAD Development System)是AutoCAD的C语言开发系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标库,直接利用流行的C语言编译器,将应用程序编译成可执行的文件并在AutoCAD环境下运行。可以在这种情况下直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理。
2.ObjectARX/ObjectDBX
ObjectARX(Object Runtime eXtension)是一种崭新的开发AutoCAD应用程序的工具,以C++为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,故此其基于C++编程语言。
ObjectDBX(DataBase eXtension)包含了一系列动态链接库,通过他们可以对DWG数据进行扩展,建立包含在AutoCAD图形文件中的自定义对象,也可以使生成的应用程序在AutoCAD环境外对DWG图形进行处理。
以上两者之间的距离最明显的差别在于ObjectARX需要AutoCAD作为宿主程序,而ObjectDBX可以基于任意的宿主程序。ObjectDBX的支持下使得AutoCAD二次开发中数据库操作、业务逻辑、用户界面的开发可以分离。
3.AutoLISP/Visual LISP
AutoLISP基于简单易学而又功能强大的LISP(List Processor,ps:管你简单还是功能强大,博主我不会)编程语言,由于AutoCAD具有内置LISP解释器,AutoCAD能够直接读取AutoLISP代码,无需编译。因而可以在命令行中输入AutoLISP代码,或从外部文件加载AutoLISP代码。AutoLISP应用程序可以通过多种方式与AutoCAD交互。能够提示用户输入、直接访问内置AutoCAD命令,以及修改或创建图形数据库中的对象。通过创建AutoLISP程序,可以向AutoCAD添加专用命令。实际上,某些标准AutoCAD命令就是AutoLISP应用程序。其特点为:
lAutoLISP语言编写出来的程序可读性非常强。
l是AutoCAD内置语言,调试非常方便,与AutoCAD无缝集成
l数据结构灵活多变,且可以调用绝大部分AutoCAD的内置命令。
VisualLISP(以下简称VLISP)是为了加速AutoLISP程序开发而设计的软件工具。AutoLISP通过VLISP进一步得到增强,VLISP提供了一个集成开发环境(IDE).其中包括编译器、调试器和其他提高生产效率的开发工具,用户在命令行下输入代码后可立即看到结果。这使得AutoLISP语言容易调试。VLISP添加了更多的功能,并对语言进行了扩展以与使用ActiveX的对象进行交互。VLISP也允许AutoLISP通过对象反应器对事件进行响应。VLISP为AutoLISP应用程序提供三种文件格式选项:
lLSP文件(.lsp):AutoLISP程序代码的ASCII文本文件。
lFAS文件(.fas):单个LSP程序文件的二进制编译版本。
lVLX文件(.vlx):一个或多个LSP文件或对话框控制语言(DCL)文件的编译集合。
4.VBA/COM:
从2012以后的新版本中AutoCAD将不再支持VBA开发所以我也就不再叙述
5.AutoCAD.NET
从AutoCAD2006开始,Autodesk为其开发增加了.NET API。.NET API提供了一些列外包类(Managed Wrapper Class),使开发人员可在.NET Framework下,使用任何支持.NET的语言。(ps:由于博主刚开始做AutoCAD二次开发,而博主之前做的室C#所以就先重.NET开发说起)。
5种基于AutoCAD开发方式对比
我觉得5种开发方式的不同点在于AutoCAD平台的特性以及依托语言不同吧。
既然决定了以.NET为二次开发的方式,那么我们先在来部署AutoCAD二次开发的环境。首先当前.NET开发的编译器使使用微软的Microsoft 的Visual Studio(以下简称VS),博主已经习惯了VS2010所以我们先安装一下VS2010,熟悉.NET开发的我相信VS2010的安装已经是轻车熟驾了,在此我就不介绍VS2010的安装了,之后我们来看一下AutoCAD2010的安装了,如下:便是其安装**的过程。
l下载解压缩,双击exe文件开始安装;
l软件将自动解压出来,解压默认目标文件夹为“C:\Autodesk\”;
l解压完成后,软件将自动弹出安装界面,选择简体中文版后,点击“安装产品”按纽;
l默认只安装autocad 2010,autodesk design review 2010可以根据自身的需要选择安装;
l选择“我接受”;
l输入cad2010的***和**;使用下列***:356-72378422,666-69696969, 667-98989898,400-45454545或653-12354321等任意一个产品***,产品**一律为001B1;
l选择要配置的产品,这一步一般按默认操作即可;
l软件自动安装vc2008、dirextx9.0等组件;
l正在安装,请稍后;
l软件成功安装;
11、打开软件,对cad2010进行初始设置,选择和你相关的工作领域,小编选“建筑”;
l优化你的默认工作空间,在这里小编全部选择;
l指定图形样板文件,按默认即可;
l弹出注册界面,选择**;
l这时打开软件包中的cad2010***,将申请号复制到“request”框中,点击“Generate”按纽得到**码;
l再点击“Mem Patch”弹出“Successfully patched”代表可以进行下一步操作;
l复制**码到注册界面,再点击下一步;
l点击完成按纽后,软件已经成功**,现在你拥有了一个完全免费的autocad2010 64位**版本啦。
l打开软件,如下图
当我们做的这里的时候,我们的二次开发环境便部署好了,那么我现在来在AutoCAD上输出一个Hello World来验证部署的效果。
1.打开VS2010,创建一个工程。
2.创建后,由于AutoCAD的.NET Framework环境为3.5,所以设置类库的目标框架为.NET Framework 3.5。
3.我们需要加载AutoCAD的外部类。
添加引用--浏览--从AutoCAD2008的安装目录下,找到引用acdbmgd.dll和acmgd.dll
4.设置调试中的外部启动程序为AutoCAD2010
5.如此我们编写HelloWorld的代码。
6.编写后F5开始运行。将会启动AutoCAD
7.打开AutoCAD后我们加载我们程序的dll文件,在命令栏输入NETLOAD弹出加载框后,选择生成的dll文件。
8.加载后,我们在命令栏输入HelloWorld,将会输出我们定义的HelloWorld CAD
至此环境部署完毕,程序编写完毕。
PS:
1.首先很多理论性的论述是参考《深入浅出AutoCAD.NET二次开发.李冠亿》
2.感谢同学PHC的帮助,以及通过资料
3.刚刚走通,AutoCAD二次开发也刚刚做到这,后续应该还有。可能有很多问题,希望大神斧正。