diff --git a/SurfFinishing.cpp b/SurfFinishing.cpp index a22a4ae..e0e785e 100644 --- a/SurfFinishing.cpp +++ b/SurfFinishing.cpp @@ -1408,7 +1408,7 @@ SurfFinishing::AddZigZag( ICAvToolSurfTm* pCAvTlStm, const Frame3d& frSurf, cons double dPockRadOffs = m_TParams.m_dDiam / 2 - m_Params.m_dSideStep - m_Params.m_dOverlap ; ICRVCOMPOPOVECTOR vpCrvs ; if ( ! CalcPocketing( pSfrPock, dPockRad, dPockRadOffs, m_Params.m_dSideStep, m_Params.m_dSideAngle, - POCKET_ZIGZAG, false, false, true, false, nullptr, vpCrvs)) { + POCKET_ZIGZAG, false, false, true, false, P_INVALID, nullptr, vpCrvs)) { m_pMchMgr->SetLastError( 3125, "Error in SurfFinishing : CalcPocketing failed") ; return false ; } @@ -1609,7 +1609,7 @@ SurfFinishing::AddOneWay( ICAvToolSurfTm* pCAvTlStm, const Frame3d& frSurf, cons double dPockRadOffs = m_TParams.m_dDiam / 2 - m_Params.m_dSideStep - m_Params.m_dOverlap ; ICRVCOMPOPOVECTOR vpCrvs ; if ( ! CalcPocketing( pSfrPock, dPockRad, dPockRadOffs, m_Params.m_dSideStep, m_Params.m_dSideAngle, - POCKET_ONEWAY, false, false, true, false, nullptr, vpCrvs)) { + POCKET_ONEWAY, false, false, true, false, P_INVALID, nullptr, vpCrvs)) { m_pMchMgr->SetLastError( 3125, "Error in SurfFinishing : CalcPocketing failed") ; return false ; } @@ -1811,7 +1811,7 @@ SurfFinishing::AddSpiral( ICAvToolSurfTm* pCAvTlStm, const Frame3d& frSurf, cons int nType = ( bInVsOut ? POCKET_SPIRALIN : POCKET_SPIRALOUT) ; ICRVCOMPOPOVECTOR vpCrvs ; if ( ! CalcPocketing( pSfrPock, dPockRad, dPockRadOffs, m_Params.m_dSideStep, m_Params.m_dSideAngle, - nType, false, false, true, false, nullptr, vpCrvs)) { + nType, false, false, true, false, P_INVALID, nullptr, vpCrvs)) { m_pMchMgr->SetLastError( 3125, "Error in SurfFinishing : CalcPocketing failed") ; return false ; } diff --git a/SurfRoughing.cpp b/SurfRoughing.cpp index 260c61f..f3503d4 100644 --- a/SurfRoughing.cpp +++ b/SurfRoughing.cpp @@ -1757,6 +1757,9 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co bool bInvert = m_Params.m_bInvert ; // numero di Step corrente int nCurrStep = 0 ; + /* punto finale di riferimento per il percorso attuale ( serve per trovare il punto iniziale + del percorso successivo) */ + Point3d ptEndLastPath = P_INVALID ; // ciclo sulle regioni bool bStart = true ; @@ -1773,7 +1776,7 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co const ISurfFlatRegion* pSfrL = GetSurfFlatRegion( m_pGeomDB->GetGeoObj( vId.second)) ; if ( pSfrL == nullptr) return false ; - pSfrLimit.Set( pSfrL->Clone()) ; + pSfrLimit.Set( CloneSurfFlatRegion( pSfrL)) ; } // se il tipo è SPIRAL_OUT e sto gestendo uno step intermedio, lo lavoro come SPIRAL_IN if ( nSubType == SURFROU_SUB_SPIRALOUT && bIsSubStep) { @@ -1790,7 +1793,7 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co ICRVCOMPOPOVECTOR vpCrvs ; // percorso di svuotatura // calcolo i percorsi di Pocketing if ( ! CalcPocketing( pSfrPock, m_TParams.m_dDiam / 2, 0., m_Params.m_dSideStep, m_Params.m_dSideAngle, - nSubType, true, bInvert, false, true, pSfrLimit, vpCrvs)) { + nSubType, true, bInvert, false, true, ptEndLastPath, pSfrLimit, vpCrvs)) { if ( bIsSubStep) { string sWarn = "Warning in SurfRoughing : CalcPocketing failed with substep (" + ToString( pSfrPock->GetTempParam( 0), 1) + ")" ; m_pMchMgr->SetWarning( 3055, sWarn) ; @@ -1980,8 +1983,7 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co // se ultima entità if ( i == nMaxInd) { // dati fine entità - Point3d ptEnd ; - pCurve->GetEndPoint( ptEnd) ; + pCurve->GetEndPoint( ptEndLastPath) ; Vector3d vtEnd ; pCurve->GetEndDir( vtEnd) ; // determino elevazione su uscita @@ -1989,7 +1991,7 @@ SurfRoughing::AddPocket( const INTINTVECTOR& vPocket, const Vector3d& vtTool, co // aggiungo uscita Point3d ptP1 ; SetFeed( GetEndFeed()) ; - if ( ! AddLeadOut( ptEnd, vtEnd, vtTool, + if ( ! AddLeadOut( ptEndLastPath, vtEnd, vtTool, ( ( nSubType == SURFROU_SUB_SPIRALIN || nSubType == SURFROU_SUB_SPIRALOUT)) ? Get( pRCrv) : nullptr, bSplitArcs, false, ptP1, dEndElev)) { m_pMchMgr->SetLastError( 3014, "Error in SurfRoughing : LeadOut not computable") ;