您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > AUTODESK系列产品开发培训教程
1第一篇AutoCADObjectARX开发教程n本篇提要AutoCAD是采用开放架构体系的通用CAD平台,它提供一个可扩展的编程框架,用户可以使用API进行定制开发。ObjectARX是以C++语言为基础的面向对象的开发环境和应用程序接口,也是AutoCAD最为强大的定制开发工具,本篇我们介绍ObjectARX的程序架构和使用方法,通过本章的学习可以使用ObjectARX开发快速、高效、简洁的应用程序。第1章:AuotCAD开发概览ØAuotCAD开发概述。ØAutoCAD开发接口。ØObjectARX开发环境的配置。ØObjectARX的程序结构。ØObjectARX程序的开发过程。本章简介8PDF文件使用pdfFactoryPro试用版本创建系统,它采用的开放的架构体系,在这种架构体系下可以根据各行业用户的专业特点,进一步开发各种专业的应用软件,提供更加全面而细致的解决方案,以满足各不同行业用户的设计需求。AutoCAD作为通用的图形平台提供一些CAD系统的基本功能,如造型、编辑、注释等,但它不针对具体行业提供一些专业设计的功能,比如要绘制一个齿轮,就需要根据齿轮的参数计算出绘制数据,然后调用AutoCAD的绘图命令绘出图形。如果在绘制完成后要更改齿轮的参数,则需要重新计算和绘制,这对用户来说是费时费力的,我们完全可以将上述计算和绘图过程通过相应的程序来实现,通过定制的命令自动完成计算和绘图过程。显而易见,通过AutoCAD提供的开发接口可以定制出某些专业化模块或者解决方案,这就是使得针对某个行业对AutoCAD进行定制开发十分必要。通过AutoCAD定制开发可以实现以下功能:n访问AutoCAD的内部图形数据库n与AutoCAD进行交互操作n定制命令或者用户UIn扩充AutoCAD的内部协议和数据库对象(仅限ObjectARX)n开发面向工程实际的专业的解决方案1.1.2AutoCAD的开发接口目前AutoCAD提供的开发接口有ObjectARX、.NET、VisualLisp、VBA等,用户可以根据自己的实际情况和需求来决定采用哪种API进行开发,下面对AutoCAD提供的各个开发接口进行简单的介绍。学习要点了解AutoCAD的开发概况。了解AutoCAD开发接口。了解ObjectARX程序的结构。掌握ObjectARX开发环境的配置。掌握使用ObjectARX向导和创建开发工程。PDF文件使用pdfFactoryPro试用版本创建®RuntimeExtension,是以C++语言为基础的面向对象的开发环境和应用程序接口,ObjectARX程序本质上为Windows动态链接库(DLL)程序,这些库与AutoCAD在同一地址空间运行并能直接利用AutoCAD核心数据结构和代码,使得二次开发者可以充分利用AutoCAD的开放结构,直接访问AutoCAD数据库结构、图形系统以及CAD几何造型核心,能够在运行期间实时扩展AutoCAD的功能,同时它也是一个可扩展的编程框架,可以扩展AutoCAD的对象和协议,AutoCAD自身的许多模块均是用ObjectARX开发的,ObjectARX是AutoCAD最为强大的定制开发工具。使用ObjectARX可以开发快速、高效、简洁的应用程序,用户可以通过其强大的功能开发专业的CAD软件系统,如加拿大船舶建造软件ShipConstructor。要使用ObjectARXAPI进行开发需要安装专门的ObjectARXSDK开发包,该开发包可以从Autodesk公司网站免费下载(),AutoCAD通常每三个版本采用相同的数据格式和相同的API以及编译器(如图1-2),不同的AutoCAD版本对应相应的ObjectARXSDK的版本,开发时候需要根据AutoCAD的版本选用对应版本的ObjectARXSDK,例如要开发运行在AutoCAD2008下的应用程序,需要采用ObjectARX2008SDK开发包。PDF文件使用pdfFactoryPro试用版本创建开始,AutoCAD增加了.NETAPI。它提供了一系列托管的外包类(ManagedWrapperClass),使开发人员可在.NET框架下,使用任何支持.NET的语言,如VB.NET、C#和ManagedC++等对AutoCAD进行二次开发。该开发接口是完全面向对象的,在拥有与C++相匹配的强大功能的同时,具有方便易用的特点,是较理想的AutoCAD二次开发工具。使用.NETAPI对AutoCAD进行开发需要MicrosoftVisualStudio2005集成开发环境作为开发平台,也可以使用MicrosoftVisualC#2005ExpressEdition集成开发环境(IDE)进行C#语言进行编程,测试版的MicrosoftVisualC#2005ExpressEdition已经通过Web下载()免费提供。nCOM(VBA)AutoCAD提供了ActiveXAutomation编程接口,用户可以使用ActiveX客户编程语言如VisualBasic等来定制AutoCAD功能。AutoCAD本身集成了VBA开发环境(VBAIDE),开发者可以通过VBA开发AutoCAD的进程内程序,另外也可以通过COM机制使用支持COM开发的语言,如VisualBasic开发AutoCAD的进程外程序,总体来说VBA语言简单易用,比较容易掌握。nVisualLISP(AutoLISP)AutoLISP是AutoCAD提供的最早的一种解释型的API,主要用来自动完成重复性的任务,从AutoCADR14开始提供的VisualLISP是AutoLISP的扩展和延伸,是一种半编译型API,与AutoLISP完全兼容,同时它能访问AutoCAD的多文档设计环境、COM/ActiveX用户界面和事件响应器等。AutoCAD自身提供VisualLISP的集成开发环境,用户可以通过“vlide”命令启动该集成开发环境。图1-3AutoCAD各种API的性能比较PDF文件使用pdfFactoryPro试用版本创建和VisualBASIC方便易学,开发周期短,适合开发一些小型的实用工具,但是,对开发速度和性能要求都很高的解决方案或者大型CAD应用软件,建议使用ObjectARX作为开发工具,有时候也可以考虑各个API的优缺点,在开发的系统中使用多种API集成开发。从工程的实际需求来看,AutoCAD有很好的开放性,而目前针对专业定制的开发的需求又是非常之大的,所以基于AutoCAD平台定制专业的CAD系统或者行业解决方案具有十分广阔的发展前景。1.1.3ObjectARX开发环境要运用ObjectARX进行二次开发,必须首先设置好ObjectARX的开发环境,以AutoCAD2008为例来说明,首先要从Autodesk公司网站免费下载ObjectARX2008(2007)SDK,下载后的安装包是个自解压文件,将其释放到指定的目录,如C:\CADSDK\ObjectARX2008,ObjectARX2008SDK开发环境是MicrosoftVisualStudio2005(VC++8.0)。安装好ObjectARXSDK后,就可以开始设置开发环境了,环境设置的主要任务就是设置头文件(*.h)和库文件(*.lib)的查找路径,头文件(*.h)和库文件(*.lib)的查找路径为VC++的环境参数,设置一次即可,对以后的所有项目均有效。在MicrosoftVisualStudio2005中选择【工具】菜单下的【选项】,启动【选项】对话框,选择【项目和解决方案】下的【VC++目录】,在【包含文件】条目中添加ObjectARX的包含文件(*.h)目录C:\CADSDK\ObjectARX2008\inc,如图1-4。图1-4添加ObjectARX的包含文件目录在【库文件】条目中添加ObjectARX的库文件(*.lib)目录C:\CADSDK\ObjectARX2008\lib,如图1-5。PDF文件使用pdfFactoryPro试用版本创建的库文件目录注意:ObjectARX2004/2005/2006的开发平台为MicrosoftVisualStudio2002(VC++7.0),支持路径的设置类似在VisualStudio2005中设置的过程。1.1.4ObjectARX程序结构ObjectARX程序是一种可以共享AutoCAD地址空间并对AutoCAD进行直接调用的动态链接库,所有的ObjectAEX应用程序都需要有一个处理消息的主接入点:acrxEntryPoint()函数,AutoCAD调用ObjectARX的模块acrxEntryPoint()函数来向应用程序传递消息,在acrxEntryPoint()函数中可以用switch语句处理AutoCAD的各种返回信息,根据不同信息执行不同的函数,并返回状态码,最后,必须用AcRx::kRetOk作为函数acrxEntryPoint()的最终返回值,以下是acrxEntryPoint()函数的基本结构:externCAcRx::AppRetCodeacrxEntryPoint(AcRx::AppMsgCodemsg,void*pkt){switch(msg){caseAcRx::kInitAppMsg://是否允许程序被卸载。acrxDynamicLinker-unlockApplication(pkt);//决定该程序是否支持多文档。acrxRegisterAppMDIAware(pkt);initApp();break;caseAcRx::kUnloadAppMsg:unloadApp();break;default:break;}returnAcRx::kRetOK;PDF文件使用pdfFactoryPro试用版本创建}在上面代码中,如果没有acrxDynamicLinker-unlockApplication(pkt)语句,ObjectARX程序不允许被卸载,除非AutoCAD退出。如果没有acrxRegisterAppMDIAware(pkt)语句,当程序被加载时,AutoCAD将切换为单文档模式。要完成ObjectARX程序的初始化必须在acrxEntryPoint()函数的AcRx::kInitAppMsg事件中或者该事件调用的函数中对程序中自定义的所有类进行初始化,调用acedRegCmds-addCommand()函数在AutoCAD命令堆栈中注册新命令,例如在initApp()函数中可注册一个新的命令:voidinitApp(){//注册新的命令acedRegCmds-addCommand(_T(Cmd_Group),_T(HelloARX),_T(HelloARX),ACRX_CMD_TRANSPARENT,HelloARX);}以上代码通过addCommand()函数向命令栈中增加一个命令组Cmd_Group,其中有一个全局命
本文标题:AUTODESK系列产品开发培训教程
链接地址:https://www.777doc.com/doc-456121 .html