那位能说一下指针和ID号句柄保存时的有效效性以及唯一性
ID号和指针在AutoCAD多文档中,如何区别不同文档中的ID号,以及指针还有句柄等他们的相互关系如何? ID号在一个打开的进程中是唯一的,指针只能指向一个特定的对象,句柄则对于某一个图形数据库是唯一的。也就是说如果在一个AutoCAD进程中打开了三个图形,则每个对象的ID号都是唯一的,但是下一次再打开这三个图形时同一对象的ID号与上次工作就不同了,因为ID号并不保存;句柄则在两次工作前后是一致的,但是两个图形中可能会有重复的句柄。
三者之间可以相互转换。
acdbGetObjectId adsname 到ID
acdbGetAdsName ID到adsname
acdbOpenObject ID到指针
AcDbObjectId::handle ID到handle
只记得这么多了,请大家补充一下,然后我再整理。 谢谢,我问这个问题是因为想保存AutocAD中的图形,利用数据库和AutoCAD文件结合起来,保存。否则如果单纯用程序保存一条多义线的话,通过保存顶点的方法,太过于麻烦,而且失去了多义线的功能, 现在通过保存ID好的方法好像不可以,但是不知道通过句柄是否可以。也就是每次打开都一样?? 没错,用句柄和文件名称可以单独确定一个实体。 AcDbObject::database()可以得到该实体的AcDbDatabase指针,接下来可以得到对应的DWG文件名... 谢谢各位:还有一个问题就是。文件名和句柄结合来辨别一个实体。在程序中往往是利用扩展数据的办法,来实现区别不同实体,如果能把句柄和扩展数据相互之间实现映射的话,就好多了, ID号不保存,同一个图形每次打开ID号一般都不相同,但是不同对象的ID均是唯一的;
句柄关闭时会保存,同一个图形对象再次打开时句柄不变,但是同一图形对象在不同数据库中可能不唯一,因为句柄仅在针对在当前图形数据库中的图形对象是唯一的;
页:
[1]