找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 803|回复: 7

[求助]:怎么把我获得的句柄存起来

[复制链接]
发表于 2006-4-11 11:23:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我想把获得的 一些 句柄 存起来
怎么存啊(存了以后如何再次访问或者修改呢)
希望高手指点(最后有些简单的程序)
谢谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-4-11 11:56:03 | 显示全部楼层
用對象字典保存,能跟隨你圖檔保存:
        //添加到對象字典,保存數據
        AcDbDictionary *pNamedobj, *pDict;
        acdbHostApplicationServices()->workingDatabase()
                ->getNamedObjectsDictionary(pNamedobj, AcDb::kForWrite);

        if (pNamedobj->getAt("ASDK_DICT", (AcDbObject*&) pDict,
                AcDb::kForWrite) == Acad::eKeyNotFound)
        {
                pDict = new AcDbDictionary;
                AcDbObjectId DictId;
                pNamedobj->setAt("ASDK_DICT", pDict, DictId);
        }
        pNamedobj->close();

        AcDbXrecord *pXrec = new AcDbXrecord;
        AcDbObjectId xrecObjId;
        pDict->setAt("A", pXrec, xrecObjId);
        pDict->close();

        struct resbuf *pHead;
        pHead = acutBuildList(
                AcDb::kDxfXTextString,string,
                0);

        pXrec->setFromRbChain(*pHead);
        acutRelRb(pHead);
        pXrec->close();
        最主要是這個acutBuildList函數,里面可以添加很多類型的數據,也可以增加此鏈表的長度

        //讀取對象字典中的默認值
        AcDbDictionary *pNamedobj;
        acdbHostApplicationServices()->workingDatabase()
                ->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead);
        AcDbDictionary *pDict;
        Acad::ErrorStatus es = pNamedobj->getAt("ASDK_DICT", (AcDbObject*&)pDict,
                AcDb::kForRead);
        pNamedobj->close();

        if (es == Acad::eOk)
        {
                AcDbXrecord *pXrec;
                es = pDict->getAt("A", (AcDbObject*&) pXrec,
                        AcDb::kForRead);
                pDict->close();

                if (es == Acad::eOk)
                {
                        struct resbuf *pRbList;
                        pXrec->rbChain(&pRbList);
                        pXrec->close();

                        if (pRbList != NULL)
                        {
                                str = pRbList->resval.rstring;
                                pRbList = pRbList->rbnext;
                        }
                        //如果鏈表還有,繼續添加讀取鏈表信息
                        acutRelRb(pRbList);
                }
        }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-11 13:22:00 | 显示全部楼层
把句柄转换为Id后保存也可以。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-11 14:32:17 | 显示全部楼层
句柄应该就是直接存到图形数据库中的吧!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-11 14:51:51 | 显示全部楼层
如果是单文档的CAD,完全可以采用实体的Id,因为在一个文件数据库中,Id是唯一的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-11 14:58:28 | 显示全部楼层
我还是不太明白(我还刚学)
这些代码中的那部分是 我获得的一些 句柄 的存储和访问(具体的一个句柄的存储和访问)
我是做数控开发的(希望把一些切削速度之类的一些数据和图上的特定实体连起来
我的想法是把着些数据写到和他匹配的实体上去(扩展字典)
以后又要对这些个数据和实体的数据结合起来生成数控代码,数据通过对话框输入,有时候还要把切削速度修改,所以我希望下次访问的时候可以通过已有的句柄访问我所要加工的实体,这样用id可以吗?)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-16 17:44:55 | 显示全部楼层
如果存在当前图中,直接利用arx的函数就可以存储了,
如果要存到外部.Handle有两个数据,high和low直接读取和设置就行了,
不能使用ID存储,id虽然唯一,但是动态的,每次都会变化的!
因为他是临时的,全局的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-4-16 23:19:25 | 显示全部楼层
AcDbObjectId  会在每次打开图形时会变化吗?我也看到过相关的资料,但我发现在单文档模式下,在模型空间块表记录中的所有实体的ID是唯一的,并且每次打开图形ID都是不变的。比如:
现在有了一个A实体(直线),然后有创建了一个B实体(圆),B的圆心在直线的端点上,现在要求A实体要记住在他的端点上有一个圆,那么就要将B的ID号记录在自己的数据中(假如A是一个自定义实体)。下次打开图形后对A进行修改,那A就想了,在我的端点上有一个圆,我要将那个圆作同步的自动修改。那A如何知道是哪个圆呢?那它只有通过记录在他内部的ID数据才能找到那个圆啊。如果那个圆的ID号变了,A就找不到那个圆了。我也很为A担心怕它找不到他的那个圆。但我经过很多次的测试,发现A还是很能干的,每次都能找到那个圆。所以我由此推断在同一个块表记录中ID号是可以进行保存的。感谢哪个乖巧听话的A吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-23 10:27 , Processed in 0.185521 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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