AutoCAD_ ID 、指针、句柄和 ads_name的区别以及转换

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

ID、句柄和 ads_name 具有各自的特点:
(1) ID:在一个 AutoCAD 任务中,可能会本次任务中都是独一无二的。在不同的 AutoCAD 任务中,同一个图形对象的 ID 可能不同。
(2) 句柄:在一个AutoCAD任务中,不能保证每个对象的句柄都唯一,但是在一个图形数据库中所有对象的句柄都是唯一的。句柄随 DWG 图形一起保存,在两次任务期间同一对象的句柄是相同的。
(3)ads_name:是不稳定的,仅当你在一旦退出 AutoCAD 或者切换到另一个图形,ads_name 就会丢失

ID、指针、句柄和 ads_name 之间具有下面的转换关系:
(1)从 ID 到对象acdbOpenAcDbObject 和 acdbOpenObject 中的任何一个。
(2)从对象指针到 ID:所有的数据库常驻对象都继承自 AcDbOb包含的 objectId 函数能获得所指向对象的 ID。
(3)从句柄到 ID:使用 AcDbDatabase::getAcDbObje
(4)从 ID 到句柄:使用 AcDbObjectId::handle 函数。
(5)从指针到句柄:使用 AcDbObject::getAcDbHandle
(6) 从 ads_name 到 ID:使用全局函数 acdbGetObjectId。
(7)从 ID 到 ads_name:使用全局函数 acdbGetAdsName。

猜你喜欢

转载自blog.csdn.net/tong794729500/article/details/79237293