EgtExecutor 1.6i6 :

- corretta gestione riferimenti nelle operazione booleane delle regioni
- migliorata gestione abilitazione segnalazione modifiche.
This commit is contained in:
Dario Sassi
2015-09-13 17:40:55 +00:00
parent cb081bbcf6
commit b2469b944d
6 changed files with 41 additions and 27 deletions
+12 -2
View File
@@ -598,7 +598,10 @@ ExePackPart( int nId, double dXmin, double dYmin, double dXmax, double dYmax, do
else if ( ! bBottomUp && b3Part.GetMin().y - ptPart.y + dYok < dYmin - dOffs - EPS_SMALL)
return false ;
// Porto il pezzo nella giusta posizione
return pGeomDB->TranslateGlob( nId, Point3d( dXok, dYok, 0) - ptPart) ;
if ( ! pGeomDB->TranslateGlob( nId, Point3d( dXok, dYok, 0) - ptPart))
return false ;
ExeSetModified() ;
return true ;
}
//----------------------------------------------------------------------------
@@ -623,6 +626,9 @@ ExePackCluster( const INTVECTOR& vIds, double dXmin, double dYmin, double dXmax,
nTrueId = (( nId != GDB_ID_SEL) ? GDB_ID_NULL : pGeomDB->GetNextSelectedObj()) ;
}
}
// Se non sono rimasti oggetti, esco con successo
if ( vTrueIds.empty())
return true ;
// Flag per calcolo box
const int BBF_MY_FLAG = BBF_ONLY_VISIBLE | BBF_IGNORE_TEXT | BBF_IGNORE_DIM ;
// Determino il box del cluster (insieme di pezzi)
@@ -698,6 +704,7 @@ ExePackCluster( const INTVECTOR& vIds, double dXmin, double dYmin, double dXmax,
for ( auto nTrueId : vTrueIds) {
pGeomDB->TranslateGlob( nTrueId, Point3d( dXok, dYok, 0) - ptCluster) ;
}
ExeSetModified() ;
return true ;
}
@@ -825,7 +832,7 @@ VerifyBoxMoveOutBox( const BBox3d& b3Other, const BBox3d& b3Box, Vector3d& vtMov
//----------------------------------------------------------------------------
bool
ExeMoveCluster( const INTVECTOR& vIds, const Vector3d& vtMove,
ExeMoveCluster( const INTVECTOR& vIds, Vector3d& vtMove,
double dXmin, double dYmin, double dXmax, double dYmax, double dOffs)
{
IGeomDB* pGeomDB = GetCurrGeomDB() ;
@@ -838,6 +845,7 @@ ExeMoveCluster( const INTVECTOR& vIds, const Vector3d& vtMove,
// Vettore movimento nel solo piano XY
Vector3d vtMoveXY( vtMove.x, vtMove.y, 0) ;
vtMove = V_NULL ;
if ( vtMoveXY.IsSmall())
return true ;
@@ -926,6 +934,8 @@ ExeMoveCluster( const INTVECTOR& vIds, const Vector3d& vtMove,
// Eseguo movimento dei pezzi del cluster
for ( auto nTrueId : vTrueIds)
pGeomDB->TranslateGlob( nTrueId, vtMoveXY) ;
ExeSetModified() ;
vtMove = vtMoveXY ;
return true ;
}