明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1188|回复: 1

【求助】如何获取一个属性块的指定值

[复制链接]
发表于 2016-6-12 03:04:30 | 显示全部楼层 |阅读模式
我定义了一个属性块,块名为“BG”,里面有一条属性,用来表示高程的,

然后图形里面这块有若干个,每个块里的属性值都不一样,

我想实现一个功能,就是输入一个命令后提示要我选择这个属性块,完了就直接显示出里面的属性。
如下图所示:

下面是我的部分代码
ads_name ssResult;
ads_point ssptres;
AcDbObjectId blkDefId;

acedEntSel(L"选择一个块:", ssResult, ssptres);
acdbGetObjectId(blkDefId, ssResult);
AcDbBlockTableRecord *pBlkDefRcd;
acdbOpenObject(pBlkDefRcd, blkDefId, AcDb::kForRead);  //返回值46,eNotThatKindOfClass),好象是说类型不对.

本想先得到块表记录->判断是否包含属性->遍历Entity->读取TextString。
但上面红色部分代码出问题了,找了一晚上没搞出个什么名堂,各位兄弟麻烦支支招,跪谢~~~


本帖子中包含更多资源

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

x
发表于 2016-7-5 17:25:35 | 显示全部楼层
本帖最后由 springwillow 于 2016-7-5 17:32 编辑

给你个参考
  1. AcDbEntity *pBent;
  2.                         TCHAR *pName;
  3.                         ads_name ssResult;
  4.                         ads_point ssptres;
  5.                         AcDbObjectId objId;
  6.                         acedEntSel(_T("选择一个块:"), ssResult, ssptres);
  7.                         acdbGetObjectId(objId, ssResult);
  8.                         Acad::ErrorStatus es = acdbOpenAcDbEntity(pBent, objId, AcDb::kForRead);
  9.                         if(es != Acad::eOk)
  10.                                 continue;
  11.                         AcDbBlockReference *pBlkRef = AcDbBlockReference::cast(pBent);
  12.                         AcDbObjectIterator *pIter = pBlkRef->attributeIterator();
  13.                         for (pIter->start(); !pIter->done(); pIter->step())
  14.                         {
  15.                                 AcDbObjectId idAtt = pIter->objectId();
  16.                                 AcDbAttribute *pEntity = NULL;
  17.                                 es = acdbOpenObject(pEntity,idAtt,AcDb::kForRead);
  18.                                 if (es != Acad::eOk)
  19.                                         continue;
  20.                                 pEntity->textString();//属性值
  21.                                 pEntity->close();

  22.                         }
  23.                         delete pIter;
  24.                         pBent->close();
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 23:41 , Processed in 0.170748 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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