From e8e8a209b193ae61a7530188a3fc8764bddff85b Mon Sep 17 00:00:00 2001 From: Riccardo Elitropi Date: Mon, 2 Mar 2026 16:20:55 +0100 Subject: [PATCH] EgtMachKernel : - in PocketingNT piccola correzione. --- PocketingNT.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/PocketingNT.cpp b/PocketingNT.cpp index 6b8b2d9..1800a6f 100644 --- a/PocketingNT.cpp +++ b/PocketingNT.cpp @@ -4554,6 +4554,7 @@ PocketingNT::AddPocket( STEPINFOPOVECTOR& vStepInfo, const Vector3d& vtTool, dou Vector3d vtEscape ; if ( bAbsFirst) CalcFirstElevation( ptStart, ptP1, vtTool, currStep, dSafeZ, dStep, dCurrElev, dEscapeElev, vtEscape) ; + bool bEscapeElev = ( dEscapeElev > 10. * EPS_SMALL && vtEscape.Len() > 10. * EPS_SMALL) ; dCurrElev -= ( ptP1 - ptStart) * vtTool ; // se attacco a zigzag o a spirale o a scivolo, l'elevazione va nell'attacco if ( GetLeadInType() != POCKET_LI_NONE) { @@ -4567,13 +4568,17 @@ PocketingNT::AddPocket( STEPINFOPOVECTOR& vStepInfo, const Vector3d& vtTool, dou else if ( ! currPath.bOutStart) ptP1 += vtTool * ( - currStep.dRelativeDepth) ; } + else if ( currPath.bOutStart && bAbsFirst && bEscapeElev) { + ptP1 += vtTool * dCurrElev ; + dCurrElev = - dSafeZ ; + } // approccio al punto iniziale ( se punti non allineati lungo vtTool) double dMySafeZ = ( bAbsFirst ? dSafeZ : 0.) ; Point3d ptMyPos ; GetCurrPos( ptMyPos) ; double dMyElev = ( bAbsFirst ? dCurrElev : ( ptMyPos - ptP1) * vtTool) ; double dMyAppr = ( bAbsFirst ? dAppr : 0.) ; if ( bAbsFirst || ! OrthoCompo( ptMyPos - ptP1, vtTool).IsSmall()) { - if ( bAbsFirst && dEscapeElev > 10 * EPS_SMALL && vtEscape.SqLen() > 100 * EPS_SMALL) { + if ( bAbsFirst && bEscapeElev) { if ( ! AddApproach( ptP1 + vtEscape * dEscapeElev, vtEscape, dMySafeZ, dSafeAggrBottZ, 0, dMyAppr, bSplitArcs, currPath.bOutStart)) { m_pMchMgr->SetLastError( 3011, "Error in PocketingNT : Approach not computable") ; return false ; @@ -4764,17 +4769,17 @@ PocketingNT::CalcFirstElevation( const Point3d& ptStart, const Point3d& ptP1, co dCurrElev = max( dCurrElev, - currStep.dDepth + 10 * EPS_SMALL) ; dEscapeElev = 0 ; vtEscape = V_NULL ; - double dMyEscapeEvel = 0 ; + double dMyEscapeElev = 0 ; Vector3d vtMyEscape = vtTool ; vtMyEscape.z = ( m_bAboveHead ? max( vtTool.z, 0.) : min( vtTool.z, 0.)) ; bool bAhUnderRaw = m_bAboveHead && ! m_bAggrBottom && ! m_bTiltingTab && GetAhPointUnderRaw( ptP1 + dCurrElev * vtTool, vtTool, 0, GetRadiusForStartEndElevation(), - m_TParams.m_dLen, false, dSafeZ, vtMyEscape, dMyEscapeEvel) ; + m_TParams.m_dLen, false, dSafeZ, vtMyEscape, dMyEscapeElev) ; bool bUhAboveRaw = ! m_bAboveHead && GetUhPointAboveRaw( ptP1 + dCurrElev * vtTool, vtTool, 0, GetRadiusForStartEndElevation(), - m_TParams.m_dLen, false, dSafeZ, vtMyEscape, dMyEscapeEvel) ; + m_TParams.m_dLen, false, dSafeZ, vtMyEscape, dMyEscapeElev) ; if ( bAhUnderRaw || bUhAboveRaw || m_bTiltingTab) { - dEscapeElev = dMyEscapeEvel ; + dEscapeElev = dMyEscapeElev ; vtEscape = vtMyEscape ; vtEscape.Normalize() ; } @@ -4791,17 +4796,17 @@ PocketingNT::CalcLastElevation( const Point3d& ptEnd, const Point3d& ptP1, const dCurrElev = - currStep.dDepth ; dEscapeElev = 0 ; vtEscape = V_NULL ; - double dMyEscapeEvel = 0 ; + double dMyEscapeElev = 0 ; Vector3d vtMyEscape = vtTool ; vtMyEscape.z = ( m_bAboveHead ? max( vtTool.z, 0.) : min( vtTool.z, 0.)) ; bool bAhUnderRaw = m_bAboveHead && ! m_bAggrBottom && ! m_bTiltingTab && GetAhPointUnderRaw( ptP1 + vtTool * dCurrElev, vtTool, 0, GetRadiusForStartEndElevation(), - m_TParams.m_dLen, false, dSafeZ, vtMyEscape, dMyEscapeEvel) ; + m_TParams.m_dLen, false, dSafeZ, vtMyEscape, dMyEscapeElev) ; bool bUhAboveRaw = ! m_bAboveHead && GetUhPointAboveRaw( ptP1 + vtTool * dCurrElev, vtTool, 0, GetRadiusForStartEndElevation(), - m_TParams.m_dLen, false, dSafeZ, vtMyEscape, dMyEscapeEvel) ; + m_TParams.m_dLen, false, dSafeZ, vtMyEscape, dMyEscapeElev) ; if ( bAhUnderRaw || bUhAboveRaw || m_bTiltingTab) { - dEscapeElev = dMyEscapeEvel ; + dEscapeElev = dMyEscapeElev ; vtEscape = vtMyEscape ; vtEscape.Normalize() ; }