From 61f65bfe2a1d108c839c72ae5293827dd6acdaee Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 11 Aug 2016 17:57:44 +0000 Subject: [PATCH] =?UTF-8?q?EgtExecutor=201.6t2=20:=20-=20corretto=20nestin?= =?UTF-8?q?g=20di=20rettangoli=20(box)=20quando=20pi=C3=B9=20grandi=20dell?= =?UTF-8?q?'area=20in=20cui=20andrebbero=20inseriti.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EXE_NstBoxNesting.cpp | 14 +++++++++++--- EgtExecutor.rc | Bin 11694 -> 11694 bytes 2 files changed, 11 insertions(+), 3 deletions(-) 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 d71d70c32d8744c1814fa64eaef4084f96987fc1..127789b28f6b9272488a22cfec48e49efb5a0851 100644 GIT binary patch delta 97 zcmZ1%y)JsgA2vp#%@@V4Gflq2na5}}Ignd-a{*Tk3sCf++-0W82LxfF21;&>n->Y| cF@rU@0x76sKgP|Iq`|@mn->Y| cF@rU@0x76sKgP|Iq`|@m