找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2014|回复: 4

[求助] 请教各位一个问题【如何删除图块对应的属性】

[复制链接]
发表于 2015-2-9 17:23:27 | 显示全部楼层 |阅读模式

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

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

×
请教各位一个问题:
删除图块对应的属性,下面的程序是否正确

AcDbObjectPointer<AcDbBlockReference> spBlkRef(objId,McDb::kForWrite);
if(spBlkRef.openStatus() != Mcad::eOk)  return;
AcDbObjectIterator* pAttribIter = spBlkRef->attributeIterator();
if(pAttribIter != NULL)
{
        for(;!pAttribIter->done();pAttribIter->step() )
        {
                AcDbObjectPointer<AcDbAttribute> spAttribute(pAttribIter->objectId(),AcDb::kForWrite);
                if (spAttribute.openStatus() != Mcad::eOk)
                {
                        continue;
                }
                spAttribute->erase(true);
                spAttribute->close();
        }
        delete pAttribIter;
}
spBlkRef->close();

按照上面的程序删除后,再用鼠标选择上面的实体会报错,而且再遍历此图块的属性时,它的属性并没有被删除掉,只是spAttribute.openStatus() != Mcad::eOk了


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

已领礼包: 264个

财富等级: 日进斗金

发表于 2015-2-9 17:41:00 来自手机 | 显示全部楼层
Attrib是一个特殊对象,它的父实体是BlockReference,如果在BlockDef定义了attdef 那么blockref的attrib好像不能删除,如果是非属性块追加的attrib可以删除

点评

是用第二种方式添加的属性,类似下面的情况: AcDbAttribute* pAttrib2 = new AcDbAttribute; AcGePoint3d start1 = spBlkRef->position(); AcGePoint3d start3(start1.x  详情 回复 发表于 2015-2-10 08:14
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2015-2-9 21:07:13 | 显示全部楼层
你这是在什么平台下? ACAD? 应该是AcDb::啊

点评

应该是 AcDb,写错了。  详情 回复 发表于 2015-2-10 08:15
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-10 08:14:30 | 显示全部楼层
iLisp 发表于 2015-2-9 17:41
Attrib是一个特殊对象,它的父实体是BlockReference,如果在BlockDef定义了attdef 那么blockref的attrib好 ...

是用第二种方式添加的属性,类似下面的情况:
                                AcDbAttribute* pAttrib2 = new AcDbAttribute;
                                AcGePoint3d start1 = spBlkRef->position();
                                AcGePoint3d start3(start1.x,start1.y-13,0);
                                pAttrib2->setTag(_T("attrBH"));
                                pAttrib2->setAlignmentPoint(start3);
                                pAttrib2->setHorizontalMode(McDb::kTextCenter);
                                pAttrib2->setTextString(tmpBh);
                                pAttrib2->setHeight(5);
                                pAttrib2->setWidthFactor(1);
                                pAttrib2->setTextStyle(wordsId);
                                pAttrib2->setInvisible(FALSE);
                                spBlkRef->appendAttribute(pAttrib2);
                                pAttrib2->close();

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

使用道具 举报

 楼主| 发表于 2015-2-10 08:15:37 | 显示全部楼层
newer 发表于 2015-2-9 21:07
你这是在什么平台下? ACAD? 应该是AcDb::啊

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 12:11 , Processed in 0.372817 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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