- 72.18 KB
- 2022-08-30 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
ObjectARX简介 ObjectARX应用程序是动态链接库(DLL),可以和AutoCAD共享地址空间,直接调用AutoCAD的内部函数。在ObjectARX应用程序中定义的命令与AutoCAD的内部命令运行方式相同,而在ObjectARX应用程序中创建的实体对象也和AutoCAD中创建的实体对象没有区别。 目前ObjectARX的版本是ObjectARXforAutoCAD2002,它是由Autodesk公司在发布AutoCAD2002时推出的。 使用ObjectARX的用户可以完成各种开发工作,例如: (1)直接访问AutoCAD的图形数据库。 (2)和AutoCAD编辑器进行交互。 (3)使用MFC创建标准的Windows用户界面。 (4)支持AutoCAD的多文档接口(MDI)。 (5)在应用程序中自定义类。 (6)与VisualLISP、ActiveX、COM等编程接口通信。38.1.2系统的软、硬件要求 使用ObjectARXforAutoCAD2002开发工具的软件配置要求为: (1)MicrosoftVisualC++6.0版本。 (2)MicrosoftWindows95或WindowsNT4.0以上版本。 使用ObjectARXforAutoCAD2002开发工具的硬件配置要求为: (1)CPU至少为InterPentium90MHz或更高。 (2)内存至少为32M。 (3)800×600SVGA显示适配器或更高。38.1.3ObjectARX目录结构 ObjectARX开发工具包括如下几个目录: (1)ARXLABS:该目录中包含有9个子目录,分别从9个方面对ObjectARX程序开发进行说明和示范。 (2)CLASSMAP:该目录中只有一个名为“classmap.dwg”的图形文件,其内容是说明ObjectARX类的层次结构。 (3)\nDOCS:该目录中包含有ObjectARX的联机帮助文件。 (4)DOCSAMPS:该目录中包含有32个子目录,分别保存着ObjectARXDeveloper'sGuide中所用到的例程。 (5)INC:该目录中包含有ObjectARX的头文件。 (6)LIB:该目录中包含有ObjectARX的库文件。 (7)REDISTRIB:该目录中包含有ObjectARX应用程序可能用到的DLL文件。 (8)SAMPLES:该目录中包含有22个子目录,分别保存着一个完整的、具有代表性的ObjectARX例程。 (9)UTILS:该目录下包含有ObjectARX扩展应用程序使用的文件。38.1.4ObjectARX的类库简介 ObjectARX开发工具中提供了如下几种类库: 1.AcRx类库 该类库提供了系统级的类和C++的宏指令集,用于约束一个应用程序以及实时类注册和识别。该类的基类为AcRxObject,提供了如下功能: (1)对象实时类的标识及继承分析 (2)对现有类的扩充定义 (3)对象的比较及检验 (4)对象的复制 2.AcEd类库 该类库用于注册本地命令和系统事件通知。 3.AcDb类库 该类库提供了可直接访问AutoCAD数据库结构的类,用于对AutoCAD实体和对象进行各种操作。 4.AcGi类库 该类库提供了图形界面工具,用于绘制和渲染AutoCAD实体。 5.AcGe类库 该类库可被AcDb类所引用,可用于线形代数和几何实体的操作。38.1.5ObjectARX的变量与常量 1.\n数据类型 为了提高程序的可读性,ObjectARX中定义了如下几种数据类型: (1)typedefdoubleads_real;//实数 (2)typedefads_realads_point;//点 (3)typedefads_realads_matrix;//转换矩阵 (4)typedeflongads_name;//实体和选择集名称 2.常量 ObjectARX中定义了如下几种常量值: (1)#defineTRUE1 (2)#defineFALSE0 (3)#defineX0 (4)#defineY1 (5)#defineZ2 (6)#defineEOS‘\0’//字符串结束符 (7)#definePAUSE“\\”//暂停符 3.结果缓冲区和数据类型码 结果缓冲区(resultbuffer)结构可以用来表示AutoCAD中所有数据类型。该结构中的数据定义为一个联合体,所以数据类型可发生变化;结果缓冲区中的数据的类型通过结构中的数据类型码(typecodes)来定义。结果缓冲区结构的定义如下: unionads_u_val{ ads_realrreal; ads_realrpoint; shortrint; char*rsting; longrlname; longrlong; structads_binaryrbinary; }; struct\nresbuf{ structresbuf*rbnext;//链表指针 shortrestype;//数据类型码或DXF组码 unionads_u_valresval;//数据 }; 其中常用的数据类型码及其意义如表38-1所示。表38-1结果缓冲区结构中的数据类型码数据类型码意义RTNONE无数据RTREAL实数RTPOINT二维点RTSHORT短整型RTANG角度RTSTR字符串RTENAME实体名称RTPICKS选择集名称RT3DPOINT三维点RTLONG长整型 通常使用链表作为结果缓冲区的数据结构,例如图38-1表示了一个具有三个结点的结果缓冲区链表。 4.函数返回的结果类型码 ObjectARX全局函数的返回值可以是其结果值,也可以是结果类型码。通常全局函数返回结果类型码以反映函数操作情况。结果类型码的种类及其意义如表38-2所示。表38-2ObjectARX函数返回的结果类型码结果类型码意义\nRTNORM函数操作成功RTERROR函数操作失败RTCAN用户按下“ESC”键取消操作RTREJ拒绝执行操作(操作不合法)RTFAIL与AutoLISP通信失败RTKWORD用户键入了关键字或其它文本