当前位置:主页   - 电脑 - 图形图像 - AutoCAD
ObjectARX简介
来源:网络   作者:   更新时间:2012-08-21
收藏此页】    【字号    】    【打印】    【关闭

  38.1.1 ObjectARX简介

  ObjectARX 应用程序是动态链接库(DLL),可以和AutoCAD共享地址空间,直接调用AutoCAD的内部函数。在ObjectARX应用程序中定义的命令与AutoCAD的内部命令运行方式相同,而在ObjectARX应用程序中创建的实体对象也和AutoCAD中创建的实体对象没有区别。

  目前ObjectARX的版本是ObjectARX for AutoCAD 2002,它是由Autodesk公司在发布AutoCAD 2002时推出的。

  使用ObjectARX的用户可以完成各种开发工作,例如:

  (1) 直接访问AutoCAD的图形数据库。

  (2) 和AutoCAD编辑器进行交互。

  (3) 使用MFC创建标准的Windows用户界面。

  (4) 支持AutoCAD的多文档接口(MDI)。

  (5) 在应用程序中自定义类。

  (6) 与Visual LISP、ActiveX、COM等编程接口通信。

  38.1.2 系统的软、硬件要求

  使用ObjectARX for AutoCAD 2002开发工具的软件配置要求为:

  (1) Microsoft Visual C++ 6.0版本。

  (2) Microsoft Windows 95或Windows NT4.0以上版本。

  使用ObjectARX for AutoCAD 2002开发工具的硬件配置要求为:

  (1) CPU至少为Inter Pentium 90 MHz或更高。

  (2) 内存至少为32M。

  (3) 800×600 SVGA显示适配器或更高。

  38.1.3 ObjectARX目录结构

  ObjectARX开发工具包括如下几个目录:

  (1) ARXLABS:该目录中包含有9个子目录,分别从9个方面对ObjectARX程序开发进行说明和示范。

  (2) CLASSMAP:该目录中只有一个名为“classmap.dwg”的图形文件,其内容是说明ObjectARX类的层次结构。

  (3) DOCS:该目录中包含有ObjectARX的联机帮助文件。

  (4) DOCSAMPS:该目录中包含有32个子目录,分别保存着ObjectARX Developer's Guide 中所用到的例程。

  (5) INC:该目录中包含有ObjectARX的头文件。

  (6) LIB:该目录中包含有ObjectARX的库文件。

  (7) REDISTRIB:该目录中包含有ObjectARX应用程序可能用到的DLL文件。

  (8) SAMPLES:该目录中包含有22个子目录,分别保存着一个完整的、具有代表性的ObjectARX例程。

  (9) UTILS:该目录下包含有ObjectARX扩展应用程序使用的文件。

  38.1.4 ObjectARX的类库简介

  ObjectARX开发工具中提供了如下几种类库:

  1. AcRx类库

  该类库提供了系统级的类和C++的宏指令集,用于约束一个应用程序以及实时类注册和识别。该类的基类为AcRxObject,提供了如下功能:

  (1) 对象实时类的标识及继承分析

  (2) 对现有类的扩充定义

  (3) 对象的比较及检验

  (4) 对象的复制

  2. AcEd类库

  该类库用于注册本地命令和系统事件通知。

  3. AcDb类库

  该类库提供了可直接访问AutoCAD数据库结构的类,用于对AutoCAD实体和对象进行各种操作。

  4. AcGi类库

  该类库提供了图形界面工具,用于绘制和渲染AutoCAD实体。

  5. AcGe类库

  该类库可被AcDb类所引用,可用于线形代数和几何实体的操作。

  38.1.5 ObjectARX的变量与常量

  1. 数据类型

  为了提高程序的可读性,ObjectARX中定义了如下几种数据类型:

  (1) typedef double ads_real; //实数

  (2) typedef ads_real ads_point[3]; //点

  (3) typedef ads_real ads_matrix[4][4]; //转换矩阵

  (4) typedef long ads_name[2]; //实体和选择集名称

  2. 常量

  ObjectARX中定义了如下几种常量值:

  (1) #define TRUE 1

  (2) #define FALSE 0

  (3) #define X 0

  (4) #define Y 1

  (5) #define Z 2

  (6) #define EOS ‘\0’ //字符串结束符

  (7) #define PAUSE “\\” //暂停符

  3. 结果缓冲区和数据类型码

  结果缓冲区(result buffer)结构可以用来表示AutoCAD中所有数据类型。该结构中的数据定义为一个联合体,所以数据类型可发生变化;结果缓冲区中的数据的类型通过结构中的数据类型码(type codes)来定义。结果缓冲区结构的定义如下:

  union ads_u_val{

  ads_real rreal;

  ads_real rpoint[3];

  short rint;

  char *rsting;

  long rlname[2];

  long rlong;

  struct ads_binary rbinary;

  };

  struct resbuf{

  struct resbuf *rbnext; //链表指针

  short restype; //数据类型码或DXF组码

  union ads_u_val resval; //数据

  };

  其中常用的数据类型码及其意义如表38-1所示。

  表38-1 结果缓冲区结构中的数据类型码

  数据类型码

  意义

  RTNONE

  无数据

  RTREAL

  实数

  RTPOINT

  二维点

  RTSHORT

  短整型

  RTANG

  角度

  RTSTR

  字符串

  RTENAME

  实体名称

  RTPICKS

  选择集名称

  RT3DPOINT

  三维点

  RTLONG

  长整型

  通常使用链表作为结果缓冲区的数据结构,例如图38-1表示了一个具有三个结点的结果缓冲区链表。

  4. 函数返回的结果类型码

  ObjectARX全局函数的返回值可以是其结果值,也可以是结果类型码。通常全局函数返回结果类型码以反映函数操作情况。结果类型码的种类及其意义如表38-2所示。

  表38-2 ObjectARX函数返回的结果类型码

  结果类型码

  意义

  RTNORM

  函数操作成功

  RTERROR

  函数操作失败

  RTCAN

  用户按下“ESC”键取消操作

  RTREJ

  拒绝执行操作(操作不合法)

  RTFAIL

  与AutoLISP通信失败

  RTKWORD

  用户键入了关键字或其它文本

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明