diff --git a/PocketingNT.cpp b/PocketingNT.cpp index 3f11756..2f8612a 100644 --- a/PocketingNT.cpp +++ b/PocketingNT.cpp @@ -3974,11 +3974,17 @@ PocketingNT::ProcessPath( int nPathId, int nPvId, int nClId) } if ( pSfrTrim->IsValid() && pSfrTrim->GetChunkCount() > 0) { // se valida, limito la superficie di svuotatura alla proiezione del grezzo + // NB. Se la svuotatura è un foro chiuso il cui il raggio della circonferenza non è superiore a 3 volte il diamentro della + // tasca corrente, evito di fare intersezioni + const double DIAM_RATIO = 3. ; + bool bSkipIntersection = ( IsPocketingHole( pSfrPock, m_TParams.m_dDiam / 2., GetOffsR(), GetSideStep(), m_Params.m_nSubType, + GetLeadInType(), m_Params.m_dLiTang, DIAM_RATIO)) ; #if DEBUG_SFR_RAW int _nSfr = m_pGeomDB->AddGeoObj( GDB_ID_NULL, nLaySR, pSfrTrim->Clone()) ; m_pGeomDB->SetMaterial( _nSfr, Color( 0., 1., 0., .75)) ; #endif - pSfrPock->Intersect( *pSfrTrim) ; + if ( ! bSkipIntersection) + pSfrPock->Intersect( *pSfrTrim) ; } else continue ; // svuotatura fuori dalla proiezione del grezzo, passo al prossimo step