AutoCAD 2000ObjectARX二次开发技术

上传人:z**** 文档编号:260192963 上传时间:2022-02-27 格式:PPT 页数:49 大小:250.50KB
返回 下载 相关 举报
AutoCAD 2000ObjectARX二次开发技术_第1页
第1页 / 共49页
AutoCAD 2000ObjectARX二次开发技术_第2页
第2页 / 共49页
AutoCAD 2000ObjectARX二次开发技术_第3页
第3页 / 共49页
AutoCAD 2000ObjectARX二次开发技术_第4页
第4页 / 共49页
AutoCAD 2000ObjectARX二次开发技术_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《AutoCAD 2000ObjectARX二次开发技术》由会员分享,可在线阅读,更多相关《AutoCAD 2000ObjectARX二次开发技术(49页珍藏版)》请在金锄头文库上搜索。

1、AutoCAD 2000ObjectARX二次开发技术lAutoCAD二次开发技术综述lObjectARX开发的一般步骤l菜单设计l综合实例:参数化齿轮设计1.AutoCAD二次开发技术综述 AutoCAD为目前在微机上应用最广泛的CAD软件,但它为通用软件,即支撑系统,只提供了一个初步设计和绘图的环境。利用它完成具体项目开发时还要查阅手册、标准等,较为繁琐。 Autodesk采用了开放的软件设计风格,留有了包括C/C+在内的多种二次开发接口,允许用户定制、开发本软件,使之更适应某一设计领域,可大大减少设计人员的工作量。各种开发方法的比较第一代:利用AutoLisp语言开发: AutoLisp

2、为解释型语言,可完成参数化程序设计及重复性工作、客户化开发、编制AutoCAD菜单及命令注册。当开发的程序被加载后,它作为一个单独的进程,通过进程间通讯与AutoCAD交互。它的特点就是简单但速度较慢,难以开发大型程序。第二代:以ADS、ARX、ADSRX为代表的C环境下的开发语言 ADS(AutoCAD Development System)应用C开发环境,与ADS库、标准C库连接即可生成可执行文件(EXE文件)。89年,在AutoCAD R11中,提供了c语言的编程接口。它增加了专门用于对AutoCAD操作的函数。但它仍然用AutoLisp解释器加载,而且采用进程间通讯,当软件规模较大时,

3、速度较慢。但因使用c编译器,所以在源程序安全性、内存操作的效率、文件大小及运行速度上要好于AutoLisp。第二代:以ADS、ARX、ADSRX为代表的C环境下的开发语言 ARX:在95年的AutoCAD R13中,autodesk向开发用户提供了一种能够直接存取的面向对象的内核,即ARX(AutoCAD Runtime eXtension)。ARX为一用C+开发的动态连接库,用其开发的应用程序能在AutoCAD运行时存取其内核及内存地址,从而共享AutoCAD的地址空间。因此,其应用程序就不需要再通过进程间通讯与AutoCAD通讯了,这样速度就加快了。第二代:以ADS、ARX、ADSRX为代

4、表的C环境下的开发语言 ADSRX:在出现ObjectARX后,原ADS库就变成为ADSRX,它像ObjectARX一样,要VC+编译器生成动态连接库文件(DLL)。在执行等方面都与ObjectARX兼容。第三代:Visual LISP、 ObjectARX、 VBA等新型开发方法 Visual LISP是一种新型LISP编程工具,它提供了完整的集成开发环境,是AutoLISP的扩展和延伸,与AutoLISP完全兼容,是一种编译型的应用程序接口。 基于ActiveX Automation技术的VBA是在96年产生ActiveX Automation技术后,Autodesk公司增加了Active

5、X Automation服务器的功能,使许多语言和应用程序可通过ActiveX 与AutoCAD通讯,操纵AutoCAD功能。AutoCAD将其各功能封装在AutoCAD ActiveX对象中,供编程时各语言或应用程序调用。各应用程序通过Automation对象的属性、方法和事件来实现对AutoCAD的操作,其过程如下页图所示: ObjectARX开发:为面向对象的AutoCAD运行时扩展,在vc+环境下开发,是在ADS基础上发展起来的,它包含一组动态连接库,可直接访问AutoCAD核心数据结构、图形系统、CAD几何造型,在运行时可扩展新命令。在编译时,它不生成EXE文件,而是生成DLL(动态

6、连接库)文件。各种开发方法的比较综述: 速度方面:直接与AutoCAD通讯比进程间通讯快,编译型比解释型快。因此,ObjectARX程序运行速度比AutoLisp快。 稳定性:当因严重错误而导致应用程序进程崩溃时,Autolisp因进程的独立性强,不会影响AutoCAD的进程。但因ObjectARX的应用程序与AutoCAD本身的核心进程共享内存空间,所以当应用程序崩溃时,容易影响到AutoCAD自身的进程,但若应用程序经过严格测试,则不会发生问题。 性能:ObjectARX实时扩展AutoCAD,共享其内存地址,可随意调用其核心数据库,功能强大。而其他方法仅限于使用AutoCAD命令或系统定

7、义的函数,功能有限。 技术难度:VBA、AutoLisp等方法较容易,学习周期短;而ObjectARX依赖于C+,需经严格的编译、连接,学习的周期长。2. ObjectARX开发的一般步骤与应用程序加载ObjectARX开发概述开发的基本过程及应用程序加载开发Win32 Dynamic-Link Library型工程 开发MFC Appwizard(dll)型工程 ObjectARX开发概述 应用ObjectARX所开发的应用程序称为ObjectARX应用程序,为Windows DLL程序。而AutoCAD本身为Windows程序。Windows程序与DLL之间采用Windows消息传递机制通

8、讯,如下图所示: ObjectARX开发概述 在ObjectARX应用程序加载时,AutoCAD传递消息AcRx:kInitAppMsg给应用程序,这时通过acedRegCmds宏的addCommand命令注册一个命令,同时指定命令所要调用的函数,然后定义此函数。卸载时,传递AcRx:kUnloadAppMsg,同样调用acedRegCmd宏的removeGroup函数,完成应用程序的卸载。 开发的基本过程及应用程序加载定制开发环境编辑应用程序编译、连接、生成arx文件及应用程序加载 定制开发环境 分两部分:每个工程都需要的部分和单独为某一工程单独定制的。 每个工程都需要的部分:进行Objec

9、tARX开发时,需要使用ObjectARX开发工具包资源,并且每个工程项目中都要使用,因此可将其资源的目录设置于开发环境配置中。方法:单击Tools|Options菜单,在弹出的对话框中单击Directories(目录)属性页,点击 show directories for下拉列表框的分别选择和添加OBJECTARX 2000目录下的INC和LIB两个路径,这样便包含了以后所要使用的头文件和库文件。 定制开发环境 为某一工程单独定制的部分:每个项目在建立后,还应设置ARX程序的编译开关,使程序能够按预定的编译方案进行编译。步骤:单击菜单project|settings,在弹出的对话框proje

10、ct settings中1. 选择c/c+属性页,选择category为Code Generation,使Use run-time library为Debug Mutilthreaded DLL。 定制开发环境2. 选择Link属性页,选择Category为General。在Output file name文本框中,将文件扩展名改为arx,在Object/Library modules列表中添加输入库,需要加入哪些库由项目中用到的函数来确定。然后选择Category为Input,在Ignore libraries文本框中输入msvcrtd.lib。最后,选择Category为Output,在B

11、ase address文本框中输入0 x1c000000。这样,便完成了应用程序的设置。 编辑应用程序 一般的ObjectARX应用程序包含头文件、源文件和模块定义文件,这也是动态连接库文件所包含的文件。 模块定义文件:指定了库文件名和输出函数名。LIBRARY节输出的文件名,必须和工程最后生成的动态库(即ARX应用程序)同名;所有的ObjectARX程序必须输出两个函数:acrxEntryPoint和acrsGetApiVersion。 编辑应用程序 一般的ObjectARX应用程序源文件及头文件应包含以下函数:入口点函数:acrxEntryPoint()。为接收AutoCAD消息的函数,在

12、函数体中有一switch语句,可分别处理从AutoCAD程序接收到的消息,执行相应的操作。添加命令函数:应用acedRegCmds宏的addCommand函数可给应用程序添加一条外部命令,并指定此命令所要调用的函数。上步中外部命令所要调用的函数:此函数中操作的为我们所要完成的任务。 编辑应用程序 所要包含的头文件:在程序中引用了许多函数,其说明在头文件中,而其定义在库文件中。在工程的设置中已经包含了库文件,需要在头文件或源文件开头将其头文件包含进去。如函数acedCommand用于在应用程序中执行一条或多条AutoCAD命令,它在头文件acedads.h中说明。所以,当程序中用到它时,必须包含

13、此头文件。 编译、连接、生成arx文件及应用程序加载 将各文件编辑好后,编译、连接便可生成以arx为扩展名的动态连接库文件。 应用程序的加载:菜单命令Tools|Load Application。命令:ARX。自动加载。在启动目录下建立acad.rx文件,包含要执行的命令名,系统在启动时便可自动加载该程序。 开发Win32 Dynamic-Link Library型工程 动态连接库文件分为两类: Win32 Dynamic-Link Library型和MFC Application (dll)型。第一种较简单,而第二种则有MFC的支持。 Win32 Dynamic-Link Library型工

14、程项目的创建过程:单击File|New,选择Projects属性页,在对话框中选中Win32 Dynamic-Link Library。确定适当的路径和名称,确认。在下一页中,选择An empty DLL project。按照前面所述,设定程序的编译开关,在link属性页的库模块列表中,添加acad.lib, rxapi.lib, acrx15.lib, acutil15.lib及acedapi.lib一般可满足需要。 开发Win32 Dynamic-Link Library型工程添加文件:至少应添加一个源文件和一个模块定义文件。在源文件中,至少应包含一个入口点函数,用它来接收从AutoCAD

15、发送来的消息。一般还应包含一个命令注册函数和注册函数所要调用的函数。模块文件中,指定库名并添加输出函数名。编译、连接及运行程序:如“开发的基本过程及应用程序加载”所述。 开发MFC Appwizard(dll)型工程 MFC Application (dll)型工程项目的特点:ObjectARX提供了一组类,使得开发者能够创建基于MFC的界面。而这组类是继承于vc的CDialog类,所以要使用这些类,必须使工程基于MFC,然后再对里面的文件作适当的设置。 MFC Application (dll)型工程项目的创建过程:建立项目文件:单击File|New,选择Projects属性页,在对话框中选

16、中MFC Application (dll)。确定适当的路径和名称(假设为Mymfc),确认。在下一页中,选择MFC Extension DLL (Using shared MFC DLL)。这时,程序自动建立Mymfc.cpp, Mymfc.def, StdAfx.h, Resource.h, StdAfx.cpp等六个文件。按照前面所述,设定项目:在link属性页的库模块列表中,添加acge15.lib, acad.lib, acedapi.lib, acrx15.lib, acdb15.lib, acutil15.lib, rxapi.lib, acui15.lib, adui15.lib一般可满足需要。创建对话框:应用基于MFC的工程的主要目的是处理对话框,所以要创建对话框。其创建方法与一般的VC程序相似。创建类和控件:创建操作此对话框的类和控件,以完成对对话框的操作,此步骤与一般的VC程序相似。编辑对话框头文件:将对话框的父类由CDialog改为由ObjectARX定义的类,以继承由ObjectARX定义的特征。创建处理程序并向其添加代码:添加处理对话框及其中控件的函数,并添

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号