diff --git a/EXE_NstBoxNesting.cpp b/EXE_NstBoxNesting.cpp index 075f29f..8309c2b 100644 --- a/EXE_NstBoxNesting.cpp +++ b/EXE_NstBoxNesting.cpp @@ -1,13 +1,13 @@ //---------------------------------------------------------------------------- -// EgalTech 2015-2015 +// EgalTech 2015-2016 //---------------------------------------------------------------------------- -// File : EXE_NstBoxNesting.cpp Data : 20.09.15 Versione : 1.6l5 +// File : EXE_NstBoxNesting.cpp Data : 11.08.16 Versione : 1.6t2 // Contenuto : Funzioni Nesting di Box per EXE. // // // // Modifiche : 20.09.15 DS Creazione modulo. -// +// 11.08.16 DS Corretto caso con pezzo pił grande del pannello. // //---------------------------------------------------------------------------- @@ -123,15 +123,19 @@ ExePackBox( int nId, double dXmin, double dYmin, double dXmax, double dYmax, dou // Elimino i valori coincidenti vY.erase( unique( vY.begin(), vY.end(), [](double a, double b){ return fabs( a - b) < EPS_SMALL ;}), vY.end()) ; // Testo le Y in ordine opportuno + bool bFound = false ; double dXok = INFINITO, dYok = INFINITO ; for ( auto dY : vY) { double dExtraMove ; if ( VerifyBoxAndMoveOnX( b3Part, Point3d( dXmin, dY, 0) - ptPart, vBox, dXmax + dOffs, dExtraMove)) { dXok = dXmin + dExtraMove ; dYok = dY ; + bFound = true ; break ; } } + if ( ! bFound) + return false ; // Verifico che il pezzo nella nuova posizione non esca da Ymax o Y min if ( bBottomUp && b3Part.GetMax().y - ptPart.y + dYok > dYmax + dOffs + EPS_SMALL) return false ; @@ -230,15 +234,19 @@ ExePackBoxCluster( const INTVECTOR& vIds, double dXmin, double dYmin, double dXm // Elimino i valori coincidenti vY.erase( unique( vY.begin(), vY.end(), [](double a, double b){ return fabs( a - b) < EPS_SMALL ;}), vY.end()) ; // Testo le Y in ordine opportuno + bool bFound = false ; double dXok = INFINITO, dYok = INFINITO ; for ( auto dY : vY) { double dExtraMove ; if ( VerifyBoxAndMoveOnX( b3Cluster, Point3d( dXmin, dY, 0) - ptCluster, vBox, dXmax + dOffs, dExtraMove)) { dXok = dXmin + dExtraMove ; dYok = dY ; + bFound = true ; break ; } } + if ( ! bFound) + return false ; // Verifico che il cluster nella nuova posizione non esca da Ymax if ( bBottomUp && b3Cluster.GetMax().y - ptCluster.y + dYok > dYmax + dOffs + EPS_SMALL) return false ; diff --git a/EgtExecutor.rc b/EgtExecutor.rc index d71d70c..127789b 100644 Binary files a/EgtExecutor.rc and b/EgtExecutor.rc differ