找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1079|回复: 4

[求助]:组的insertAt错误提示,原因?

[复制链接]
发表于 2006-6-7 15:58:21 | 显示全部楼层 |阅读模式

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

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

×
下面代码中,当把pGroup->append(newbpCID);换成sta = pGroup->insertAt(1, newbpCID);后。然后在执行CAD的“放弃(U)”命令后,就会出现eHadMultipleReaders 错误提示,这是什么原因啊,哦想了好久也不知道原因。
还请大侠指点!!


void addIDToGroup(AcDbObjectId newID, UINT IDpos, CString GroupName)
{

AcDbDictionary *pGroupDict = NULL;
AcDbObjectId groupId;
acdbCurDwg()->getGroupDictionary(pGroupDict, AcDb::kForWrite);
pGroupDict->getAt(GroupName.GetBuffer(200), groupId);//group名字
pGroupDict->close();
AcDbGroup *pGroup;
// Acad :: ErrorStatus sta;
sta = acdbOpenObject(pGroup, groupId, AcDb::kForWrite);
if (sta != Acad::eOk)
{
pGroup->close();
return;
}

//用insertAt(1, newbpCID);出问题
// sta = pGroup->insertAt(IDpos, newbpCID);

sta = pGroup->append(newbpCID);

// pGroup->setSelectable(false);

pGroup->close();
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-6-7 17:04:20 | 显示全部楼层
楼主,你那段代码我试了,没有问题,不过我加了一句,我想出问题的原因可能是加入的id无效为空或者已删除。
void addIDToGroup(AcDbObjectId newID, UINT IDpos, CString GroupName)
{
        AcDbDictionary *pGroupDict = NULL;
       
        AcDbObjectId groupId;

        CUR_DB->getGroupDictionary(pGroupDict, AcDb::kForWrite);
       
        pGroupDict->getAt(GroupName.GetBuffer(200), groupId);//group名字
       
        pGroupDict->close();
       
        AcDbGroup *pGroup;
       
        Acad :: ErrorStatus sta;
        sta = acdbOpenObject(pGroup, groupId, AcDb::kForWrite);
        if (sta != Acad::eOk)
        {
                pGroup->close();
                return;
        }
        // sta = pGroup->insertAt(1, newbpCID);

        //--------add by missyou0515-------------
        if(!newID.isValid()||newID.isNull()||newID.isErased())
        {
                return;
        }
        //-------end add by missyou0515--------

        sta = pGroup->append(newID);
        // pGroup->setSelectable(false);
       
        pGroup->close();
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-7 17:11:30 | 显示全部楼层
最初由 missyou0515 发布
[B]楼主,你那段代码我试了,没有问题,不过我加了一句,我想出问题的原因可能是加入的id无效为空或者已删除。
void addIDToGroup(AcDbObjectId newID, UINT IDpos, CString GroupName)
{
        AcDbDictionary *pGroupDi... [/B]



呵呵,多谢,不过你没理解我的意思,
我的意思是说当用append()是没问题的,就是用insertat()之后,在调用CAD的“U”后,要一直“U”到最后,就会出问题,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-8 08:18:27 | 显示全部楼层
[QUOTE][我的意思是说当用append()是没问题的,就是用insertat()之后,在调用CAD的“U”后,要一直“U”到最后,就会出问题QUOTE]

我是试了,而且不停的调用"U",一直“U”到最后,都没有出问题,我想出问的最大可能是填加到组中的ID对应的对象没有Close( )掉。建议楼主查看创建的组中的所有对象是否都已Close
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-8 09:34:39 | 显示全部楼层
最初由 missyou0515 发布
[B][QUOTE][我的意思是说当用append()是没问题的,就是用insertat()之后,在调用CAD的“U”后,要一直“U”到最后,就会出问题QUOTE]

我是试了,而且不停的调用"U",一直“U”到最后,都没有出问题,我想出问的最大可... [/B]



恩,估计是的,代码太多了,找那些没CLOSED的地方实在是个费时间的事,没养成好的编程习惯,现在吃苦头了,多谢提醒,呵呵
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 14:39 , Processed in 0.185513 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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