博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AutoCAD_ ID 、指针、句柄和 ads_name的区别
阅读量:5925 次
发布时间:2019-06-19

本文共 1309 字,大约阅读时间需要 4 分钟。

hot3.png

访问实体的特性必须通过对象指针,但是一旦你获得了实体的ID、句柄或者ads_name,都能通过ID作中介而获得对象的指针。其中ID是一个桥梁。句柄是Windows编程一个常用的概念,在ObjectARX编程中一般指AcDbHandle类(也可指Windows编程的界面元素),该类封装了一个64位整形标识符,随DWG文件一同保存。ads_name则是在ADS编程中出现的一个概念,其实际上是一个二维数组,数组元素类型为长整型,在与用户交互的函数中经常用到。

ID、句柄和 ads_name 具有各自的特点

(1)  AcDbObjectId:当dwg图形被打开后,数据库中的实体对象都会在内存中对应一个唯一的id(AcDbObjectId),AcDbObjectId也是与对象相关联的唯一标识符.AcDbObjectId仅存在于其所存在的数据库从内存中产生到数据库被删除之间.如果操作多个dwg,AcDbObjectId在多个数据库之间都是唯一的.
(2) AcDbHandle:dwg文件中每一个实体都有一个唯一的标识符,用AcDbHandle表示,在一个AutoCAD中,不能保证每个实体的句柄都唯一。在autoCAD的两个Dwg中同一实体的句柄是相同的。实体的AcDbHandle可以随dwg文件被保存,所以即使dwg未被cad打开,也可以根据句柄搜索dwg文件获取对象信息.

  (3) AcDbObject对象指针:当一个对象被打开后,AutoCAD会返回指向AcDbObject或其派生类型的应该c++指针,然后就可以采用标准c++类对象的方式对实体进行操作.

(4)ads_name:AutoCAd定义的一个数据类型.一般用来保存用户交互过程中成功选择实体的节点,ads_name是不稳定的,仅当你在一旦退出 AutoCAD 或者切换到另一个图形,ads_name 就会丢失.

ID、指针、句柄和 ads_name 之间具有下面的转换关系

(1)从 AcDbObjectId 到AcDbObject对象:acdbOpenAcDbObject() 或者 acdbOpenObject() 。
(2)从AcDbObject对象到 AcDbObjectId :所有的数据库常驻对象都继承自 AcDbObjectId 函数能获得所指向对象的 ID。
(3)从AcDbHandle到 AcDbObjectId : AcDbDatabase::getAcDbObjectId();
(4)从 AcDbObjectId 到AcDbHandle:AcDbObjectId::handle() 。
(5)从AcDbObject到AcDbHandle:AcDbObject::getAcDbHandle().
(6) 从 ads_name 到 AcDbObjectId :使用全局函数 acdbGetObjectId()。
(7)从 AcDbObjectId到 ads_name:使用全局函数 acdbGetAdsName()。

 

转载于:https://my.oschina.net/u/2930533/blog/759617

你可能感兴趣的文章
laravel吐槽系列之一
查看>>
FTP的主动和被动模式详解
查看>>
CSS之旅——第三站 强大的伪选择器
查看>>
恶补web之七:html DOM知识
查看>>
dubbo源码分析系列(4)dubbo通信设计
查看>>
linux工具之curl与wget高级使用
查看>>
jdk-logging、log4j、logback日志介绍及原理
查看>>
玩聚的Blog&Tweet墙 VI
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
GCD之信号量机制一
查看>>
关于CAShapeLayer
查看>>
WebLog Expert
查看>>
WSO2 ESB(2)
查看>>
8天学通MongoDB——第八天 驱动实践
查看>>
CareerCup-5.1
查看>>
(NO.00005)iOS实现炸弹人游戏(四):游戏数据的初始化(一)
查看>>
【spring框架】Spring简单类型注入
查看>>
如何在Android Studio上使用Github
查看>>
PostgreSQL 聚合函数讲解 - 4 总体协方差, 样本协方差
查看>>
【HTML5】H5的新标签简介
查看>>