void DemoShape3 (HANDLE hLcWnd)
{
HANDLE hBlock, hEnt;
double X, Y, X1, X2, Xc, Y1, Y2, Yc, H, R1, R2, R3, dd;
// get a block, linked with CAD window
hBlock = lcPropGetHandle( hLcWnd, LC_PROP_WND_BLOCK );
// begin Shape entity
lcBlockBeginShape( hBlock );
// create entities that will be parts of Shape entity
X1 = 90;
X2 = 260;
Y1 = 0;
Y2 = 180;
Yc = (Y2 + Y1) / 2.0;
H = Y2 - Y1;
R1 = H / 2.0;
R2 = H / 4.0;
R3 = (R1 - R2) / 5.0;
// Fig 1 outside
lcBlockAddArc( hBlock, X1, Yc, R1, LC_DEG90, LC_DEG180 );
lcBlockAddLine( hBlock, X1, Y1, X2, Y1 );
lcBlockAddArc( hBlock, X2, Yc, R1, LC_DEG270, LC_DEG180 );
lcBlockAddLine( hBlock, X2, Y2, X1, Y2 );
// Fig 2 inside 1
lcBlockAddArc(hBlock, X1, Yc, R2, LC_DEG90, LC_DEG180 );
lcBlockAddLine(hBlock, X1, Yc-R2, X2, Yc-R2 );
lcBlockAddArc(hBlock, X2, Yc, R2, LC_DEG270, LC_DEG180);
lcBlockAddLine(hBlock, X2, Yc+R2, X1, Yc+R2);
// circles inside of 1-2
dd = (R1 + R2) / 2.0;
Xc = (X1 + X2) / 2.0;
X = X1 - dd;
lcBlockAddCircle( hBlock, X, Yc, R3, false );
X = X2 + dd;
lcBlockAddCircle( hBlock, X, Yc, R3, false );
Y = Yc - dd;
lcBlockAddCircle( hBlock, X1, Y, R3, false );
lcBlockAddCircle( hBlock, Xc, Y, R3, false );
lcBlockAddCircle( hBlock, X2, Y, R3, false );
Y = Yc + dd;
lcBlockAddCircle( hBlock, X1, Y, R3, false );
lcBlockAddCircle( hBlock, Xc, Y, R3, false );
lcBlockAddCircle( hBlock, X2, Y, R3, false );
// add Shape entity
hEnt = lcBlockAddShape( hBlock );
// set solid filling
lcPropPutBool( hEnt, LC_PROP_ENT_SOLIDFILL, true );
lcPropPutStr( hEnt, LC_PROP_ENT_FCOLOR, L"0,255,0" );
// disable border line
lcPropPutInt( hEnt, LC_PROP_ENT_LWIDTH, 0 );
// undate view
lcBlockUpdate( hBlock, true, 0 );
lcWndZoomRect( hLcWnd, 0, 0, 0, 0 );
}