EgtExecutor 1.6t2 :
- corretto nesting di rettangoli (box) quando più grandi dell'area in cui andrebbero inseriti.
This commit is contained in:
+11
-3
@@ -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 ;
|
||||
|
||||
Reference in New Issue
Block a user