EgtMachKernel :

- correzione errore in RemoveChunksUnderTolerance.
This commit is contained in:
Riccardo Elitropi
2024-07-11 12:48:59 +02:00
parent c0f84c1909
commit 6cfe0a2178
+10 -17
View File
@@ -1344,9 +1344,9 @@ SurfRoughing::ProcessPath( int nPathId, int nTempId, int nPvId, int nClId)
ISurfFlatRegion* pSfrRemoved ; // regione PROGRESSIVA rimossa attuale
} ;
/* - nNumStep -
Nel caso di Step base indica il numero di tale step ( da 0 a nStep)
Nel caso di Step base indica il numero di tale step ( da 0 a nStep - 1)
Nel caso di SubStep indica il numero di tale SubStep relativo ai due Step Base che lo racchiudono
( da 0 a nSubStep per ogni coppia di Step base successivi)
( da 0 a nSubStep - 1 per ogni coppia di Step base successivi)
*/
vector< myStepInfo> vStepInfo ;
@@ -2458,13 +2458,9 @@ SurfRoughing::RemoveChunksUnderTolerance( ISurfFlatRegion* pSfr) const
// scorro tutti i chunk della superficie
bool bSameSurf = true ;
for ( int c = 0 ; c < pSfr->GetChunkCount() ; ++ c) {
// recupero il loop esterno
PtrOwner<ICurve> pCrvExtLoop( pSfr->GetLoop( c, 0)) ;
if ( IsNull( pCrvExtLoop) || ! pCrvExtLoop->IsValid())
return false ;
// verifico se l'Offset massimo della curva è più piccolo del parametro di tolleranza
double dMaxOffs ;
CalcCurveLimitOffset( *pCrvExtLoop, dMaxOffs) ;
// verifico se l'Offset massimo del chunk è sopra alla tolleranza
double dMaxOffs = EPS_SMALL ;
pSfr->GetChunkMaxOffset( c, dMaxOffs) ;
/*
// rimuovo il Chunk c-esimo se l'Offset massimo è minore della tolleranza
if ( dMaxOffs < m_dSubStepToler) {
@@ -2473,16 +2469,13 @@ SurfRoughing::RemoveChunksUnderTolerance( ISurfFlatRegion* pSfr) const
}
*/
if ( dMaxOffs > m_dSubStepToler) {
if ( ! pSfrBeauty->AddExtLoop( Release( pCrvExtLoop)))
return false ;
// recupero il loop esterno
if ( ! pSfrBeauty->AddExtLoop( pSfr->GetLoop( c, 0)))
return false ;
// inserisco le isole del Chunk corrente
for ( int l = 1 ; l < pSfr->GetLoopCount( c) ; ++ l) {
PtrOwner<ICurve> pCrvIsl( pSfr->GetLoop( c, l)) ;
if ( IsNull( pCrvIsl) ||
! pCrvIsl->IsValid() ||
! pSfrBeauty->AddIntLoop( *pCrvIsl))
for ( int l = 1 ; l < pSfr->GetLoopCount( c) ; ++ l)
if ( ! pSfrBeauty->AddIntLoop( pSfr->GetLoop( c, l)))
return false ;
}
}
else
bSameSurf = false ;