ObjectARX类库简介
ObjectARX开发环境包含下列几组类:
AcRx
用于绑定应用程序及运行时类的注册和标识的类.
AcEd
注册本地AutoCAD命令和AutoCAD事件通知的类.
AcDb
AutoCAD数据库类.
AcGi
显示AutoCAD实体的图形类.
AcGe
线性代数学和几何学对象应用类.
下表列举了需要链接到ObjectARX应用程序的库.所有ObjectARX应用程序必须链接acad.lib和rxapi.lib,是否需要链接其他的库.取决于所用的ObjectARX类和函数的前缀。
需要链接的ObjectARX类库
AcRx类
AcRx提供了一些系统级类,用于DLL的初始化和链接及运行时类的注册和标识,该库的基类是AcRxObject,它提供如下功能:
·对象运行时类标识和继承分析
·运行运行时向现有类添加新协议(参见扩展协议)
·对象的比较测试>
·对象复制
AcRx库还提供了一套C++宏,帮助我们创建派生于AcRxObject的新ObjectARX类(参见派生自定义的ObjectARX类).
AcRxObject的每一个子类都有一个相关的描述对象(AcRxClass类型),用于运行时类型的标识.ObjectARX提供了许多函数,可以测试一个对象是特殊类还是派生类,确定两个对象是否是相同的类,并返回给定类的类描述者对象.
AcAcRxDictionary是该库中另一个重要的类,词典是从一个文本字符串到另一个对象的一个映射,AcRx库将其对象、类和服务词典放在一个全局对象词典中,全局对象词典是一个AcRxDictionary类的实例.应用程序可以向全局对象词典添加对象,所以其他应用程序可以访问这些实体。
如果你想了解更为详细的AcRx类,参见ObjectARX应用程序基础,派生自定义ObjectARX类,和扩展协议.
AcEd类
AcEd类提供定义和注册新的AutoCAD命令的类,新命令的操作性能与AutoCAD内部命令是完全一样的.我们定义的新命令被当做本地命令是因为它们与AutoCAD内部命令具有相同的内部结构(AcEdCommandStack).AcEd类还提供了编辑器反应器和一套与AutoCAD通信的全局函数.该类中一个重要的类是AcEdReactor,它监视AutoCAD编辑器的状态,并指定事件发生时(如开始、终止和删除命令)通知应用程序.
有关用ObjectARX注册新AutoCAD命令的内容,参见ObjectARX应用程序基础.关于编辑器反应器的例子,参见通知的有关内容.
AcDb类
AcDb类提供了组成AutoCAD数据库的类.AutoCAD数据库用于存储所有图形对象和非图形对象;图形对象称为实体,组成AutoCAD图形;非图形对象(如图层、线型和字体样式)也属于图形的一部分.我们可以使用AcDb类查询和管理既有的AutoCAD实体的实例和对象,并且可以创建新的数据库对象实例.
AutoCAD数据库包含如下主要元素:
·一套九个符号表,每个表都拥有唯一的命名符号表条目对象,这些对象表示各种常用的AcDbDatabase对象和数据成员.
·一套命名的对象词典(AcDbDictionary类),提供AutoCAD图的目录表.对于新图来说,该目录表包含四个AutoCAD使用的其他词典ID;我们开发的应用程序可以任意的向该词典添加其他的对象
·一套固定的环境变量,大约有200个环境变量,其值是由AutoCAD设置的.
如需详细了解AcDb类,参见数据库入门,数据库操作,数据库对象,实体,和容器对象.有关从AcDbObject和AcDbEntity派生新类的内容,参见从AcDbObject类中派生新类和从AcDbEntity类中派生新类.
AcGi类
AcGi类提供了用于绘制AutoCAD实体的图形界面,AcdbEntity成员函数worldDraw()、viewportDraw()和saveAs(),及所有标准实体协议都使用AcGi库;worldDraw()函数必须由所有自定义实体类定义.AcGiWorldDraw对象提供一个API,通过该APIAcDbEntity::worldDraw()可以在所有视区同时生成其图形表示;同样AcGiViewportDraw对象也提供一个API,通过该APIAcDbEntity::viewportDraw()函数可以在每个视区生成不同的图形表示.
如需详细了解AcGi类,参见从AcDbEntity类中派生新类和图形接口库.
AcGe类
AcDb库使用了AcGe库,AcGe类库提供了应用类,如向量和矩阵,用来完成二维和三维几何操作,它还提供基本的几何对象,如点、曲线和表面.
AcGe库包含两个主要的子集:二维和三维几何类,主要抽象基类分别为AcGeEntity2d和AcGeEntity3d.包括AcGePoint2d,AcGeVector2d,和AcGeMatrix2d在内的一些基类.它们不是从任何其他类派生来的;这些基类可以用于完成多种一般性操作,如在一个点上添加一个矢量、计算两个向量的点乘或积,计算两个矩阵的积.该类库的高级类是通过这些基类来实现的.
AcGe库提供几个不同的坐标系统,如需详细了解,参见使用几何类库.我们可以从中了解AcGe类的一般用途.
欢迎大家点好看和分享马上关注!
领取专属 10元无门槛券
私享最新 技术干货