diff --git a/API_Nesting.cpp b/API_Nesting.cpp index a719274..296b3b1 100644 --- a/API_Nesting.cpp +++ b/API_Nesting.cpp @@ -28,7 +28,68 @@ __stdcall EgtCreateFlatParts( int nType) //----------------------------------------------------------------------------- BOOL -__stdcall EgtPackPart( int nId, double dXmin, double dYmin, double dXmax, double dOffs) +__stdcall EgtPackPart( int nId, double dXmin, double dYmin, + double dXmax, double dYmax, double dOffs, BOOL bBottomUp) { - return ( ExePackPart( nId, dXmin, dYmin, dXmax, dOffs) ? TRUE : FALSE) ; + return ( ExePackPart( nId, dXmin, dYmin, dXmax, dYmax, dOffs, bBottomUp != FALSE) ? TRUE : FALSE) ; +} + +//----------------------------------------------------------------------------- +BOOL +__stdcall EgtPackCluster( int nId[], int nCount, double dXmin, double dYmin, + double dXmax, double dYmax, double dOffs, BOOL bBottomUp) +{ + // verifico + if ( nId == nullptr || nCount <= 0) + return false ; + // riempio il vettore + INTVECTOR vIds ; + vIds.reserve( nCount) ; + for ( int i = 0 ; i < nCount ; ++ i) + vIds.push_back( nId[i]) ; + // eseguo + return ( ExePackCluster( vIds, dXmin, dYmin, dXmax, dYmax, dOffs, bBottomUp != FALSE) ? TRUE : FALSE) ; +} + +//----------------------------------------------------------------------------- +BOOL +__stdcall EgtGetClusterBBoxGlob( int nId[], int nCount, double ptMin[3], double ptMax[3]) +{ + // verifico + if ( nId == nullptr || nCount <= 0) + return false ; + // riempio il vettore + INTVECTOR vIds ; + vIds.reserve( nCount) ; + for ( int i = 0 ; i < nCount ; ++ i) + vIds.push_back( nId[i]) ; + // recupero il bounding box dell'oggetto in globale + BBox3d b3Box ; + if ( ! ExeGetClusterBBoxGlob( vIds, b3Box)) + return FALSE ; + // converto il risultato + ptMin[0] = b3Box.GetMin().x ; + ptMin[1] = b3Box.GetMin().y ; + ptMin[2] = b3Box.GetMin().z ; + ptMax[0] = b3Box.GetMax().x ; + ptMax[1] = b3Box.GetMax().y ; + ptMax[2] = b3Box.GetMax().z ; + return TRUE ; +} + +//----------------------------------------------------------------------------- +BOOL +__stdcall EgtMoveCluster( int nId[], int nCount, const double vtMove[3], + double dXmin, double dYmin, double dXmax, double dYmax, double dOffs) +{ + // verifico + if ( nId == nullptr || nCount <= 0) + return false ; + // riempio il vettore + INTVECTOR vIds ; + vIds.reserve( nCount) ; + for ( int i = 0 ; i < nCount ; ++ i) + vIds.push_back( nId[i]) ; + // eseguo + return ( ExeMoveCluster( vIds, vtMove, dXmin, dYmin, dXmax, dYmax, dOffs) ? TRUE : FALSE) ; } diff --git a/EgtInterface.rc b/EgtInterface.rc index 58c7f0d..5e795bf 100644 Binary files a/EgtInterface.rc and b/EgtInterface.rc differ