//---------------------------------------------------------------------------- // EgalTech 2015-2015 //---------------------------------------------------------------------------- // File : API_Nesting.cpp Data : 31.07.15 Versione : 1.6g9 // Contenuto : Funzioni nesting per API. // // // // Modifiche : 31.07.15 DS Creazione modulo. // // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "API.h" #include "/EgtDev/Include/EInAPI.h" #include "/EgtDev/Include/EXeExecutor.h" using namespace std ; //----------------------------------------------------------------------------- BOOL __stdcall EgtCreateFlatParts( int nType) { return ( ExeCreateFlatParts( nType) ? TRUE : FALSE) ; } //----------------------------------------------------------------------------- BOOL __stdcall EgtPackBox( int nId, double dXmin, double dYmin, double dXmax, double dYmax, double dOffs, BOOL bBottomUp) { return ( ExePackBox( nId, dXmin, dYmin, dXmax, dYmax, dOffs, bBottomUp != FALSE) ? TRUE : FALSE) ; } //----------------------------------------------------------------------------- BOOL __stdcall EgtPackBoxCluster( 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 ( ExePackBoxCluster( 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 VEC_FROM_3D( ptMin, b3Box.GetMin()) VEC_FROM_3D( ptMax, b3Box.GetMax()) return TRUE ; } //----------------------------------------------------------------------------- BOOL __stdcall EgtMoveBoxCluster( int nId[], int nCount, 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 Vector3d vtM = vtMove ; bool bOk = ExeMoveBoxCluster( vIds, vtM, dXmin, dYmin, dXmax, dYmax, dOffs) ; VEC_FROM_3D( vtMove, vtM) return ( bOk ? TRUE : FALSE) ; } //----------------------------------------------------------------------------- BOOL __stdcall EgtMovePartCluster( int nId[], int nCount, double vtMove[3], double dXmin, double dYmin, double dXmax, double dYmax) { // 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 Vector3d vtM = vtMove ; bool bOk = ExeMovePartCluster( vIds, vtM, dXmin, dYmin, dXmax, dYmax) ; VEC_FROM_3D( vtMove, vtM) return ( bOk ? TRUE : FALSE) ; } //----------------------------------------------------------------------------- BOOL __stdcall EgtRotatePartCluster( int nId[], int nCount, const double ptCen[3], double* pdRotAngDeg, double dXmin, double dYmin, double dXmax, double dYmax) { // verifico if ( nId == nullptr || nCount <= 0 || pdRotAngDeg == nullptr) return false ; // riempio il vettore INTVECTOR vIds ; vIds.reserve( nCount) ; for ( int i = 0 ; i < nCount ; ++ i) vIds.push_back( nId[i]) ; // eseguo bool bOk = ExeRotatePartCluster( vIds, ptCen, *pdRotAngDeg, dXmin, dYmin, dXmax, dYmax) ; return ( bOk ? TRUE : FALSE) ; } //----------------------------------------------------------------------------- BOOL __stdcall EgtGetPartClusterCenterGlob( int nId[], int nCount, double ptCen[3]) { // verifico if ( nId == nullptr || nCount <= 0 || ptCen == nullptr) return false ; // riempio il vettore INTVECTOR vIds ; vIds.reserve( nCount) ; for ( int i = 0 ; i < nCount ; ++ i) vIds.push_back( nId[i]) ; // eseguo Point3d ptC ; if ( ! ExeGetPartClusterCenterGlob( vIds, ptC)) return FALSE ; VEC_FROM_3D( ptCen, ptC) return TRUE ; }