admin 发表于 2024-3-14 19:28:22

使用ObjectARX从块插入中提取属性标记字符串

#include <TCHAR.H>

void ExtractAttributes()
{
ads采用name ename;
ads采用point pt;

if(acedEntSel("\nSelect an block: ", ename, pt) != RTNORM)
{
    acutPrintf("\nError selecting entity.");
    return;
}
AcDbObjectId eId;
acdbGetObjectId(eId, ename);
AcDbEntity* pEnt = NULL;

if (acdbOpenObject(pEnt, eId , AcDb::kForRead) != Acad::eOk)
{
    acutPrintf("\nError opening entity.");
    if(pEnt)
      pEnt->close();
    return;
}
if(pEnt->isA() != AcDbBlockReference::desc())
{
    acutPrintf("\nMust select a block insert.");
    pEnt->close();
    return;
}
AcDbBlockReference *pBlkRef = AcDbBlockReference::cast(pEnt);

AcDbAttribute *pAtt = NULL;
AcDbObjectIterator *pAttIter = pBlkRef->attributeIterator();
采用TCHAR tagName, strValue;
for (pAttIter->start(); !pAttIter->done(); pAttIter->step())
{
   acdbOpenObject(pAtt, pAttIter->objectId(), AcDb::kForRead);
   // get the tag string
   采用tcscpy(tagName, pAtt->tag());
   acutPrintf("\nBlock Insert Attribute tag is: %s", tagName);
   采用tcscpy(strValue, pAtt->textString());
   acutPrintf("\nBlock Insert Attribute string value is: %s", strValue);
   pAtt->close();
}
delete pAttIter;
pBlkRef->close();
}
页: [1]
查看完整版本: 使用ObjectARX从块插入中提取属性标记字符串