ObjectARX类库简介

2024-04-10 21:48
文章标签 简介 objectarx 类库

本文主要是介绍ObjectARX类库简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载自:http://www.cnblogs.com/jianglei-tz/archive/2012/11/05/2755124.html

ObjectARX简介

ObjectARX应用程序是一个动态链接库(DLL),它共享AutoCAD的地址空间并直接调用AutoCAD的函数。我们可以利用ObjectARX直接访问AutoCAD的数据库结构、图形系统以及AutoCAD几何构造核心。我们可以向ObjectARX编程环境添加新类,并将其输出以供其他程序调用。我们创建的自定义实体与AutoCAD内部实体没有任何区别。我们也可以在运行时通过向既有的AutoCAD类添加函数来扩充ObjectARX协议。由ObjectARX定义的外部命令与AutoCAD内部命令的执行机制是一样的。

ObjectARX应用程序的本质是Windows的DLL程序,而AutoCAD本身则是一个典型的Windows程序,ObjectARX应用程序与AutoCAD、Windows之间均采用Windows消息传递机制直接进行通信。

ObjectARX应用程序与AutoCAD在同一地址空间内运行并能直接利用AutoCAD核心数据库结构和代码。由ObjectARX应用程序定义的外部命令通过acedRegCmds()宏注册。这些外部命令与AutoCAD本身固有命令一样由AutoCAD本身执行。

ObjectARX应用程序以VisualC++语言为开发基础,具有面向对象编程方式的数据可封装性、可继承性及多态性等特点。由它开发的工程CAD软件具有模块性好、独立性强、连接简单、使用方便、内部功能高效实用以及代码可重用性强等优点,而且支持微软的MFC类库,能简洁高效的实现很多复杂的功能。

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

这篇关于ObjectARX类库简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/892240

相关文章

rust 中的 EBNF简介举例

《rust中的EBNF简介举例》:本文主要介绍rust中的EBNF简介举例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 什么是 EBNF?2. 核心概念3. EBNF 语法符号详解4. 如何阅读 EBNF 规则5. 示例示例 1:简单的电子邮件地址

Python 异步编程 asyncio简介及基本用法

《Python异步编程asyncio简介及基本用法》asyncio是Python的一个库,用于编写并发代码,使用协程、任务和Futures来处理I/O密集型和高延迟操作,本文给大家介绍Python... 目录1、asyncio是什么IO密集型任务特征2、怎么用1、基本用法2、关键字 async1、async

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

【Tools】AutoML简介

摇来摇去摇碎点点的金黄 伸手牵来一片梦的霞光 南方的小巷推开多情的门窗 年轻和我们歌唱 摇来摇去摇着温柔的阳光 轻轻托起一件梦的衣裳 古老的都市每天都改变模样                      🎵 方芳《摇太阳》 AutoML(自动机器学习)是一种使用机器学习技术来自动化机器学习任务的方法。在大模型中的AutoML是指在大型数据集上使用自动化机器学习技术进行模型训练和优化。

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma