Code sample Home

Create a shape entity
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 );
}
This will create a drawing as shown on the picture below:



See Also:

Code sample 1
Code sample 2
Create a shape entity with hatch filling