Code sample Home

Create new block from all entities of "Model Space" block
void DemoDrwToBlock (HANDLE hLcWnd)
{
  HANDLE hDrw, hBlock, hNewBlock, hEnt;
  double Xmin, Ymin, Xmax, Ymax, X, Y;
  WCHAR* szFileName = L"c:/tmp/1F2P.dxf";

  // get drawing object, linked with CAD window
  hDrw = lcPropGetHandle( hLcWnd, LC_PROP_WND_DRW );
  // load a file
  lcDrwLoad( hDrw, szFileName, hLcWnd );
  // get Model Space block
  hBlock = lcPropGetHandle( hDrw, LC_PROP_DRW_BLOCK_MODEL );
  // calculate center
  Xmin = lcPropGetFloat( hBlock, LC_PROP_BLOCK_XMIN );
  Ymin = lcPropGetFloat( hBlock, LC_PROP_BLOCK_YMIN );
  Xmax = lcPropGetFloat( hBlock, LC_PROP_BLOCK_XMAX );
  Ymax = lcPropGetFloat( hBlock, LC_PROP_BLOCK_YMAX );
  X = (Xmin + Xmax) / 2.0;
  Y = (Ymin + Ymax) / 2.0;
  // create new block with basepoint X,Y
  hNewBlock = lcDrwAddBlock( hDrw, L"New Block", X, Y );
  if (hNewBlock){
    // move all entities from Model block into hNewBlock
    hEnt = lcBlockGetFirstEnt( hBlock );
    while( hEnt ){
      // add the entity's copy into destination block
      lcBlockAddClone( hNewBlock, hEnt );
      // remove the entity from source block
      lcEntErase( hEnt, true );
      // get next entity of the destination block
      hEnt = lcBlockGetNextEnt( hBlock, hEnt );
    }
    lcBlockUpdate( hNewBlock, true, 0 );
    // add the reference of new block
    lcBlockAddBlockRef( hBlock, hNewBlock, X, Y, 1.0, 0.0 );
    // update and display
    lcBlockUpdate( hBlock, true, 0 );
    lcWndExeCommand( hLcWnd, LC_CMD_ZOOM_EXT, 0 );
  }
}
Method 2
void DemoDrwToBlock2 (HANDLE hLcWnd)
{
  HANDLE hDrw, hBlock;
  double X, Y;
  WCHAR* szFileName = L"c:/!OK/Projects/_drawings/_Litecad3/1/1F2P.dxf";
  WCHAR* szName = L"New Block";

  // get drawing object, linked with CAD window
  hDrw = lcPropGetHandle( hLcWnd, LC_PROP_WND_DRW );
  // load a file
  lcDrwLoad( hDrw, szFileName, hLcWnd );
  // get current block
  hBlock = lcPropGetHandle( hLcWnd, LC_PROP_WND_BLOCK );
  // select all entities on current block
  lcBlockSelectEnt( hBlock, 0, true );
  // get center point of selected entities
  X = lcPropGetFloat( hBlock, LC_PROP_BLOCK_SELXCEN );
  Y = lcPropGetFloat( hBlock, LC_PROP_BLOCK_SELYCEN );
  // create new block and insert it into the current block (hBlock)
  lcBlockSelBlock( hBlock, szName, X, Y, LC_BLK_ENT_CONVERT, true );
  lcWndRedraw( hLcWnd );
}
See Also:

Create a block and insert it into a drawing
Create new block from selected entities of current block