Code sample Home

Add many blocks from one external file
void DemoLoadBlocks (HANDLE hLcWnd)
{
  HANDLE hDrw, hBlock, hExtDrw, hBlkRef;
  WCHAR* szFileName = L"d:/drawings/edit26a.dxf";
  WCHAR* szBlockName[5] = {L"Aura", L"IMP", L"LED-Par", L"MAC700-P", L"TP_SEL"};
  HANDLE hNewBlock[5];
  BOOL   bLoad;
  int    i;
  double X, Y, Scale, Angle;

  // get drawing and block, linked with CAD window
  hDrw = lcPropGetHandle( hLcWnd, LC_PROP_WND_DRW );
  hBlock = lcPropGetHandle( hLcWnd, LC_PROP_WND_BLOCK );
  // load blocks from external file (szFileName)
  hExtDrw = lcCreateDrawing();
  bLoad = lcDrwLoad( hExtDrw, szFileName, 0 );
  if (bLoad == TRUE){
    for (i=0; i<5; ++i){
      hNewBlock[i] = lcDrwAddBlockFromDrw( hDrw, szBlockName[i], hExtDrw, LC_BLOCK_OVERWRITEYES, 0 );
    }
  }
  lcDeleteDrawing( hExtDrw );
  // insert loaded blocks
  X = 0.0;
  Y = 0.0;
  Scale = 1.0;
  Angle = 0.0;
  for (i=0; i<5; ++i){
    hBlkRef = lcBlockAddBlockRef( hBlock, hNewBlock[i], X, Y, Scale, Angle );
    X = X + 500.0;
  }
  // update and display
  lcBlockUpdate( hBlock, true, 0 );
  lcWndExeCommand( hLcWnd, LC_CMD_ZOOM_EXT, 0 );
}
This will create a drawing as shown on the picture below :



Added blocks are listed in the "Blocks" dialog :



Used functions:

lcPropGetHandle
lcCreateDrawing
lcDrwLoad
lcDrwAddBlockFromDrw
lcDeleteDrawing
lcBlockAddBlockRef
lcBlockUpdate
lcWndExeCommand