diff --git a/SurfRoughing.cpp b/SurfRoughing.cpp index ed9a947..002ba42 100644 --- a/SurfRoughing.cpp +++ b/SurfRoughing.cpp @@ -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 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 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 ;