【求助】如何获取一个属性块的指定值
我定义了一个属性块,块名为“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。
但上面红色部分代码出问题了,找了一晚上没搞出个什么名堂,各位兄弟麻烦支支招,跪谢~~~
本帖最后由 springwillow 于 2016-7-5 17:32 编辑
给你个参考AcDbEntity *pBent;
TCHAR *pName;
ads_name ssResult;
ads_point ssptres;
AcDbObjectId objId;
acedEntSel(_T("选择一个块:"), ssResult, ssptres);
acdbGetObjectId(objId, ssResult);
Acad::ErrorStatus es = acdbOpenAcDbEntity(pBent, objId, AcDb::kForRead);
if(es != Acad::eOk)
continue;
AcDbBlockReference *pBlkRef = AcDbBlockReference::cast(pBent);
AcDbObjectIterator *pIter = pBlkRef->attributeIterator();
for (pIter->start(); !pIter->done(); pIter->step())
{
AcDbObjectId idAtt = pIter->objectId();
AcDbAttribute *pEntity = NULL;
es = acdbOpenObject(pEntity,idAtt,AcDb::kForRead);
if (es != Acad::eOk)
continue;
pEntity->textString();//属性值
pEntity->close();
}
delete pIter;
pBent->close();
页:
[1]