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 );
}
}
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 );
}