Code sample Home

Break selected circle entity on 4 arcs
void DemoBreak2 (HANDLE hLcWnd)
{
  HANDLE hBlock, hEnt, hEnt2, hPtBuf;
  double X, Y, Delta, R, Xc, Yc, dx, dy;

  // get a block, linked with CAD window
  hBlock = lcPropGetHandle( hLcWnd, LC_PROP_WND_VIEWBLOCK );
  // get selected entity
  hEnt = lcBlockGetFirstSel( hBlock );
  if (hEnt != 0){
    if (lcEntType( hEnt, LC_ENT_CIRCLE ) == LC_TRUE){
      // center point
      Xc = lcPropGetFloat( hEnt, LC_PROP_CIRCLE_X );
      Yc = lcPropGetFloat( hEnt, LC_PROP_CIRCLE_Y );
      // radius
      R = lcPropGetFloat( hEnt, LC_PROP_CIRCLE_R );
      // define breakpoints
      hPtBuf = lcPaint_CreatePtbuf();
      lcPaint_PtbufAddPoint2( hPtBuf, Xc-R, Yc );
      lcPaint_PtbufAddPoint2( hPtBuf, Xc, Yc+R );
      lcPaint_PtbufAddPoint2( hPtBuf, Xc+R, Yc );
      lcPaint_PtbufAddPoint2( hPtBuf, Xc, Yc-R );
      // break the circle into 4 arcs
      Delta = lcPropGetFloat( hLcWnd, LC_PROP_WND_PICKBOXSIZE );
      hEnt2 = lcEntBreak2( hEnt, hPtBuf, Delta, false, true );
      if (hEnt2 != 0){
        // move the arcs
        while( hEnt2 != 0 ){
          X = lcPropGetFloat( hEnt2, LC_PROP_ARC_XMID );
          Y = lcPropGetFloat( hEnt2, LC_PROP_ARC_YMID );
          dx = (X - Xc) * 0.25;
          dy = (Y - Yc) * 0.25;
          lcEntMove( hEnt2, dx, dy );
          hEnt2 = lcBlockGetNextEnt( hBlock, hEnt2 );
        }
        lcBlockUpdate( hBlock, true, 0 );
        lcWndRedraw( hLcWnd ); 
      }
      // free points buffer
      lcPaint_DeletePtbuf( hPtBuf );
    }
  }
}
See Also:

Break entity on 2 parts
Break 2 intersected circles