diff --git a/SurfRoughing.cpp b/SurfRoughing.cpp index 8e58f69..ed9a947 100644 --- a/SurfRoughing.cpp +++ b/SurfRoughing.cpp @@ -1767,6 +1767,8 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co double dAppr = m_Params.m_dStartPos ; // recupero il tipo di svuotatura int nSubType = m_Params.m_nSubType ; + // paramtro di inversione + bool bInvert = m_Params.m_bInvert ; // numero di Step corrente int nCurrStep = 0 ; @@ -1788,8 +1790,10 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co pSfrLimit.Set( pSfrL->Clone()) ; } // se il tipo รจ SPIRAL_OUT e sto gestendo uno step intermedio, lo lavoro come SPIRAL_IN - if ( nSubType == SURFROU_SUB_SPIRALOUT && bIsSubStep) + if ( nSubType == SURFROU_SUB_SPIRALOUT && bIsSubStep) { nSubType = SURFROU_SUB_SPIRALIN ; + bInvert = ! bInvert ; // per lasciare invariato il senso di percorrenza + } if ( ! bIsSubStep) ++ nBasicStep ; @@ -1800,7 +1804,7 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co ICRVCOMPOPOVECTOR vpCrvs ; // percorso di svuotatura // se si tratta di uno step base, allora lavoro l'intera superficie if ( ! CalcPocketing( pSfrPock, m_TParams.m_dDiam / 2, 0., m_Params.m_dSideStep, m_Params.m_dSideAngle, - nSubType, true, pSfrLimit, vpCrvs)) { + nSubType, true, bInvert, pSfrLimit, vpCrvs)) { m_pMchMgr->SetLastError( 3028, "Error in SurfRoughing : Error in CalcPocketing") ; return false ; } @@ -1892,7 +1896,9 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co return false ; } // se attacco elica od equivalente di step pieno, devo fare elica o similari solo sulla parte con materiale - if ( ! bIsSubStep && + if ( nSubType != SURFROU_SUB_ONEWAY && + nSubType != SURFROU_SUB_ZIGZAG && + ! bIsSubStep && ( GetLeadInType() == POCKET_LI_ZIGZAG || GetLeadInType() == POCKET_LI_HELIX || GetLeadInType() == POCKET_LI_GLIDE)) {