第二章 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
页:
[1]