Code sample Home

Retrieve all attributes of all block's references
void DemoBlockAtt2 (HANDLE hLcWnd)
{
  HANDLE hBlock, hBlock2, hEnt, hAtt;
  int    EntType, NumAtts;
  BOOL   bHasAtt;
  WCHAR  szBlkName[128], szTag[64], szValue[512];

  // clear text buffers
  memset( szBlkName, 0, sizeof(szBlkName) );
  memset( szTag, 0, sizeof(szTag) );
  memset( szValue, 0, sizeof(szValue) );
  // get a block, linked with CAD window
  hBlock = lcPropGetHandle( hLcWnd, LC_PROP_WND_VIEWBLOCK );
  // enumerate block's entities
  hEnt = lcBlockGetFirstEnt( hBlock );
  while( hEnt ){
    EntType = lcPropGetInt( hEnt, LC_PROP_ENT_TYPE );
    if (EntType == LC_ENT_BLOCKREF){
      bHasAtt = lcPropGetBool( hEnt, LC_PROP_BLKREF_ATTRIBS );
      if (bHasAtt){
        // get block name
        hBlock2 = lcPropGetHandle( hEnt, LC_PROP_BLKREF_BLOCK );
        wcsncpy( szBlkName, lcPropGetStr( hBlock2, LC_PROP_BLOCK_NAME ), 127 );
        // get block attributes for current BlockRef
        NumAtts = 0;  // counter of attributes
        hAtt = lcBlkRefGetFirstAtt( hEnt );
        while( hAtt != 0){
          ++NumAtts;
          wcsncpy( szTag, lcPropGetStr( hAtt, LC_PROP_ATT_TAG ), 63 );
          wcsncpy( szValue, lcPropGetStr( hAtt, LC_PROP_ATT_VALUE ), 511 );
          // get next attribute
          hAtt = lcBlkRefGetNextAtt( hEnt, hAtt );
        }
      }
    }
    hEnt = lcBlockGetNextEnt( hBlock, hEnt );
  }
}
See Also:

Code sample 1,   Code sample 3