//-----------------------------------------------
void DemoBlockAttLED (HANDLE hLcWnd)
{
static int Addr = 0;
int StartAddr, EndAddr;
HANDLE hBlock;
// get a block, linked with CAD window
hBlock = lcPropGetHandle( hLcWnd, LC_PROP_WND_VIEWBLOCK );
StartAddr = 101;
EndAddr = 125;
// set lights by LED address
if (Addr == 0){
// all LEDs off
SetLED( hBlock, 0, false );
Addr = StartAddr;
}else{
if (Addr > EndAddr){
// all LEDs on
SetLED( hBlock, 0, true );
Addr = 0;
}else{
if (Addr == StartAddr){
SetLED( hBlock, Addr, true );
}else{
SetLED( hBlock, Addr-1, false );
SetLED( hBlock, Addr, true );
}
++Addr;
}
}
// update view
lcWndRedraw( hLcWnd );
}
//-----------------------------------------------
bool SetLED (HANDLE hBlock, int Addr, bool On)
{
HANDLE hEnt;
WCHAR szValue[32];
int Color;
if (On){
// color for Light ON
Color = lcColorRGB( 255, 50, 0 );
}else{
// color for Light OFF
Color = lcColorRGB( 70, 70, 40 );
}
if (Addr == 0){
// select all BlockRefs with Tag "DMXNo"
hEnt = lcBlockGetBlkRefByTag( hBlock, 0, L"DMXNo", L"", true );
if (hEnt > 0){
// set color for selected entities
hEnt = lcBlockGetFirstSel( hBlock );
while( hEnt != 0){
lcPropPutInt( hEnt, LC_PROP_ENT_COLOR, Color );
hEnt = lcBlockGetNextSel( hBlock );
}
// unselect all entities
lcBlockUnselect( hBlock );
return true;
}
return false;
}
swprintf( szValue, L"1.2.%d", Addr );
// find BlockRef entity by attribute
hEnt = lcBlockGetBlkRefByTag( hBlock, 0, L"DMXNo", szValue, false );
if (hEnt){
lcPropPutInt( hEnt, LC_PROP_ENT_COLOR, Color );
return true;
}
return false;
}