286168051 发表于 2013-9-25 08:54:09

ObjectARX类库简介------老徐课堂 001

ObjectARX 类库简介


ObjectARX 开发环境包含下列几组类:
AcRx
用于绑定应用程序及运行时类的注册和标识的类.
AcEd
注册本地AutoCAD命令和AutoCAD事件通知的类.
AcDb
AutoCAD 数据库类.
AcGi
显示AutoCAD实体的图形类.
AcGe
线性代数学和几何学对象应用类.
下表列举了需要链接到ObjectARX应用程序的库.所有ObjectARX应用程序必须链接acad.lib和rxapi.lib,是否需要链接其他的库.取决于所用的ObjectARX类和函数的前缀。
需要链接的ObjectARX类库
前缀 需要链接的库
AcRx rxapi.lib, acdb19.lib
AcEd acad.lib, rxapi.lib, acdb19.lib
AcDb rxapi.lib,acdb19.lib
AcGi acgiapi.lib,rxapi.lib, acdb19.lib
AcGe rxapi.lib,acge19.lib, acdb19.lib

AcRx 类
AAcRx提供了一些系统级类,用于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实体的实例和对象,并且可以创建新的数据库对象实例.
AAutoCAD数据库包含如下主要元素:
·      一套九个符号表,每个表都拥有唯一的命名符号表条目对象,这些对象表示各种常用的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类的一般用途.

VBALISPER 发表于 2013-9-25 18:44:53

好久不见了.老徐

flyskyym 发表于 2014-4-23 18:06:24

徐老师,我要跟你好好学。

sanqima88 发表于 2014-12-3 15:46:52

不错,值得一看。

vladimir 发表于 2017-4-7 15:06:44

不错的资料,谢谢分享啊。

yonjay 发表于 2022-9-17 08:46:13

徐老师,连接打不开

我爱lisp 发表于 2023-3-19 14:19:00

会讲课的不一定会开发, 大骗子一个
页: [1]
查看完整版本: ObjectARX类库简介------老徐课堂 001