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 );
}
}