明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4593|回复: 6

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

[复制链接]
发表于 2013-9-25 08:54 | 显示全部楼层 |阅读模式
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类的一般用途.


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
VBALISPER + 1 赞一个!

查看全部评分

发表于 2013-9-25 18:44 | 显示全部楼层
好久不见了.老徐
发表于 2014-4-23 18:06 | 显示全部楼层
徐老师,我要跟你好好学。
发表于 2014-12-3 15:46 | 显示全部楼层
不错,值得一看。
发表于 2017-4-7 15:06 | 显示全部楼层
不错的资料,谢谢分享啊。
发表于 2022-9-17 08:46 | 显示全部楼层
徐老师,连接打不开
发表于 2023-3-19 14:19 | 显示全部楼层
会讲课的不一定会开发, 大骗子一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-23 21:54 , Processed in 0.254601 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表