ObjectARX类库信息
ObjectARX环境包括下面的类:
AcRx:用于绑定一个应用程序以及运行类的注册和识别。
AcEd:用于注册自定义命令和AutoCAD事件通告。
AcDb:AutoCAD数据库类。
AcGi:用于AutoCAD的图形类。
AcGe:用于通用的线型和集合对象的应用类。
下表列出了在链接ObjectARX应用程序时所需要的库:
前缀 |
所需库 |
AcRx |
acad.lib,rxapi.lib,acrx15.lib |
AcEd |
acad.lib,rxapi.lib,acedapi.lib,acrx15.lib |
AcDb |
acad.lib,rxapi.lib,acdb15.lib,acrx15.lib |
AcGi |
acad.lib,rxapi.lib,acgiapi.lib,acrx15.lib |
AcGe |
acad.lib,rxapi.lib,acge15.lib,acrx15.lib |
AcRx库
AcRx库中提供了DLL初始化和链接以及运行类注册和识别时系统级别的类。这个库的基类是AcRxObject,它提供了下面的功能:
l 对象运行类识别和继承分析
l 在运行时向一个已经存在的类添加新协议
l 对象相等和组成测试
l 对象拷贝
AcRx库也提供了一些C++宏,帮助用户创建从AcRxObject派生的新类。AcRxDictionary类是这个库中的另外一个重要的类。
字典是指从一个字符串到另一个对象的映射。
AcRx库将其对象、类和服务字典放在一个全局对象字典中,而这个字典是一个AcRxDictionary类的实例。用户的应用程序可以将对象添加到这个字典中,这样这些对象就可以被别的应用程序访问了。
每一个AcRxObject的子类都有一个相关的类描述对象(类型为AcRxClass),用于运行时的类型识别。ObjectARX提供了函数来识别一个对象是否是一个特定类或其派生类对象、确定两个对象是否是同一个类以及返回一个给定类的类描述对象。
AcEd库
AcEd库提供了类来定义和注册新的AutoCAD命令,这些命令和AutoCAD内部命令执行起来完全一样。用户定义的新命令被作为本地命令,因为这些命令和AutoCAD内部命令都放在同一个内部结构(AcEdCommandStack)中。AcEd库也提供了一个编辑器反应器和一组全局函数来与AutoCAD交互。
这个库中一个重要的类是AcEditorReactor类,它监视AutoCAD编辑器,当指定事件发生(例如开始、结束和取消一条命令)时通知应用程序。
AcDb库
AcDb库提供了组成AutoCAD数据库的类。数据库中存储了所有图形对象的信息,这些图形对象叫实体,它们和那些非图形实体(例如层、线型和文本样式)组成了AutoCAD图形。用户可以查询和控制AcDb库中的实体和对象的实例,同样用户也可以创建数据库对象的新实例。
AutoCAD数据库包含以下一些元素:
- 一组9个属于唯一命名符号表对象的符号表。这些对象代表了不同的共同使用AcDbDatabase对象和数据成员的对象。
- 一个命名对象字典(属于AcDbDictionary类),它提供了AutoCAD图形的“目录”。初始时,这个“目录”中包含了4个AutoCAD使用的其他字典的ID,用户开发的应用程序可以自由地向字典中添加对象。
- 一组固定数目的头变量,大约为200个,它们的值是由AutoCAD设定的。
AcGi库
AcGi库提供了用来绘制AutoCAD实体的图形接口。这个库用于AcDbEntity类的成员函数worldDraw()、viewportDraw()和saveAs()的所有标准实体协议中。在所有自定义实体类中都必须重载worldDraw()函数,而AcGiWorldDraw对象提供了API函数,使AcDbEntity::worldDraw()函数在所有视口中能够生成图形表示。同样,AcGiViewportDraw对象提供了API函数,使AcDbEntity::viewportDraw()函数能够为每一个视口生成不同的图形表示。
AcGe库
AcGe库是由AcDb库来使用的,它提供了一些应用类(例如矢量和矩阵)来执行二维和三维几何操作,它也提供了基本的几何对象,例如点、曲线和曲面。
AcGe库由两部分组成:二维几何库和三维几何库,对于这两个库,主要的抽象基类分别是AcGeEntity2d和AcGeEntity3d。也有几个基类不是从其他类派生出来的,包括AcGePoint2d、AcGeVector2d、AcGeMatrix2d。这些基类可以用来执行各种通用操作,例如给点添加一个矢量、计算两个矢量的点积或叉积以及计算两个矩阵的乘积。