ObjectARX类库简介

来源:互联网 发布:mysql查询结果临时表 编辑:程序博客网 时间:2024/06/08 10:52

转载自:http://www.cnblogs.com/jianglei-tz/archive/2012/11/05/2755124.html

ObjectARX简介

ObjectARX应用程序是一个动态链接库(DLL),它共享AutoCAD的地址空间并直接调用AutoCAD的函数。我们可以利用ObjectARX直接访问AutoCAD的数据库结构、图形系统以及AutoCAD几何构造核心。我们可以向ObjectARX编程环境添加新类,并将其输出以供其他程序调用。我们创建的自定义实体与AutoCAD内部实体没有任何区别。我们也可以在运行时通过向既有的AutoCAD类添加函数来扩充ObjectARX协议。由ObjectARX定义的外部命令与AutoCAD内部命令的执行机制是一样的。

ObjectARX应用程序的本质是Windows的DLL程序,而AutoCAD本身则是一个典型的Windows程序,ObjectARX应用程序与AutoCAD、Windows之间均采用Windows消息传递机制直接进行通信。

ObjectARX应用程序与AutoCAD在同一地址空间内运行并能直接利用AutoCAD核心数据库结构和代码。由ObjectARX应用程序定义的外部命令通过acedRegCmds()宏注册。这些外部命令与AutoCAD本身固有命令一样由AutoCAD本身执行。

ObjectARX应用程序以VisualC++语言为开发基础,具有面向对象编程方式的数据可封装性、可继承性及多态性等特点。由它开发的工程CAD软件具有模块性好、独立性强、连接简单、使用方便、内部功能高效实用以及代码可重用性强等优点,而且支持微软的MFC类库,能简洁高效的实现很多复杂的功能。

ObjectARX类库

ObjectARX环境包含下列几组类和函数:

AcRx 用于绑定应用程序及运行时类的注册和标识的类。AutoCAD Registration Extension;

AcEd 注册本地AutoCAD命令和AutoACD事件通知的类。AutoCAD Envent Directory;

AcDb AutoCAD数据库类。AutoCAD DataBase ;

AcGi 显示AutoACD实体的图形类。 AutoCAD Graph Interface;

AcGe 公用线性数学和几何学对象应用类。 AutoCAD Geometry Entity;

AcRx库提供了一些系统级类,用于DLL的初始化和链接及运行时类的注册和标识。该库的基类是AcRxObject,它提供如下功能:对象运行时 类标识和继承分析、运行时向既有类添加新协议、对象比较测试、对象复制。运行时类型标识是AcRxObject的每个子类都有一个相关的类描述者对象 (AcRxClass类型),用于运行时类型的标识。最常用函数:
AcRxObject::isA(); 用于类识别,被识别的类必须能够测试其类型。
AcRxObject::isKindOf(); 也是用于类识别,但这里的类能够被测试其类型,或者测试其派生类的类型。
AcRxObject::desc(); 返回类名。
AcRxObject::cast(); 试图将一个基类转换成更高级的类。如果转换成功,基类对象的指针将是转换后类型的指针。

该库也可以对应用程序进行加锁或解锁。使用函数::acrxUnlockApplication()可以使应用程序不可卸载。

AcEd库提供定义和注册新的AutoCAD命令的类,新命令的操作性能与AutoCAD内部命令是完全一样的。我们定义的新命令被当作本地命令是 因为它们与AutoACD内部命令具有相同的内部结构(AcEdCommandStack)。AcEd库还提供编辑器反应器和一套与AutoCAD通信的全局函数。注:该库中一个重要的类是 AcEditorReactor,它监视AutoCAD编辑器的状态,并当指定事件发生时(如形开始、终止和删除命令)通知应用程序。

AcDb库提供了组成AutoCAD数据库的类。AutoCAD数据库用于存储所有的图形对象和非对象;图形对象称为实体,组成AutoCAD图; 非图形对象(如层、线型和字型)也是图形的一部分。同时我们可以使用AcDb库查询和管理AutoCAD实体的实体对象,也可以创建新的数据库对象实例。 AutoCAD数据库包含如下主要元素:九个符号表,每个表都拥有唯一的命令符号表条目对象,这些对象表示各种常用的AcDbDatabase对象和数据 成员;命名的对象词典(类AcDbDictionary),提供AutoCAD图的目录表。对于新图来说,该目录表包含四个AutoCAD使用的其他词典 ID,同时我们的应用程序可以任意向该词典添加其他的对象;一套固定的环境变量,大约200个环境变量,其值上由AutoCAD设置的。

AcGi库提供了用于绘制AutoCAD实体的图形界面,AcDbEntity成员函数worldDraw()、viewportDraw()和saveAs(),及所有标准实体协议部件都使用AcGi库。

AcGe库提供了应用类,如向量和矩阵,用来完成二维和三维几何操作,它还提供基本的几何对象,如点、曲线和表面。AcGe还包含两个主要子集:二维和三维几何类,主要抽象基类分别为AcGeEntity2d和AcGeEntity3d。它提供了几何计算和数学计算函数,如矢量、点、矩阵的的运算等。在cad中每一个实体都有一个相对应的等价几何形状,他有助于在创建对应的真实感实体时进行数学计算。该库提供用于2D和3D计算的几何函数。例如,如果一条直线通过一个圆的附近,且需要求出直线到圆上的最近点,那么用库中的几何函数就可以求出所需要的点。

ObjectARX目录结构

├─arxlabs 目录存放AutoCAD ARX使用指南。

├─classmap 目录存放AutoCAD图形形式的ObjectARX类层次结构图。

├─docs 目录存放ObjectARX开发者的在线帮助文件,

├─inc ObjectARX头文件。

├─lib ObjectARX库文件。

├─redistrib ObjectARX应用程序运行所需要的DLL文件。

├─samples ObjectARX例子目录。

└─utils ObjectARX的扩展和开发小工具。如用于边界表达的brep和ObjectARX向导ObjARXWiz。

AcRx: acad.lib, rxapi.lib, acdb16.lib
AcEd: acad.lib, rxapi.lib, acedapi.lib, acdb16.lib
AcDb: acad.lib, rxapi.lib, acdb16.lib
AcGi: acad.lib, rxapi.lib, acdb16.lib
AcGe: acad.lib, rxapi.lib, acgeapi.lib, acdb16.lib

原创粉丝点击