From 2a687d76b7d5d886840cec4a9428a4bc1a509ebe Mon Sep 17 00:00:00 2001 From: Riccardo Elitropi Date: Wed, 17 Jun 2026 12:51:46 +0200 Subject: [PATCH] EgtMachKernel : - in PocketingNT nel caso di lavorazioni in doppio, si evita il movimento in rapido di risalita nella retroazione - in PocketingNT il flag 404 viene messo per lavorazioni in doppio. --- PocketingNT.cpp | 14 +++++++++----- PocketingNT.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/PocketingNT.cpp b/PocketingNT.cpp index 1a4278b..9e5a181 100644 --- a/PocketingNT.cpp +++ b/PocketingNT.cpp @@ -5617,9 +5617,13 @@ PocketingNT::AddPocket( STEPINFOPOVECTOR& vStepInfo, const Vector3d& vtTool, dou Vector3d vtEscape ; if ( ! CalcLastElevation( ptP1, vtTool, currStep, dSafeZ, dStep, dLastElev, dEscapeElev, vtEscape)) return false ; + // -->! se lavorazione in doppio, l'approccio diventa uguale alla SafeZ !<-- + // -->! (in questo modo si evita il movimento lineare finale) !<-- + if ( bDouble) + dAppr = dSafeZ ; if ( dEscapeElev > 10. * EPS_SMALL && vtEscape.Len() > 10. * EPS_SMALL) { AddLinearMove( ptP1 + vtTool * dLastElev, bSplitArcs) ; - if ( ! AddRetract( ptP1 + vtTool * dLastElev, vtEscape, dSafeZ, dSafeAggrBottZ, dEscapeElev, dAppr, bSplitArcs, bDoubleParallel)) { + if ( ! AddRetract( ptP1 + vtTool * dLastElev, vtEscape, dSafeZ, dSafeAggrBottZ, dEscapeElev, dAppr, bSplitArcs, bDouble)) { m_pMchMgr->SetLastError( 2417, "Error in PocketingNT : Retract not computable") ; return false ; } @@ -5628,7 +5632,7 @@ PocketingNT::AddPocket( STEPINFOPOVECTOR& vStepInfo, const Vector3d& vtTool, dou // aggiungo retroazione finale if ( currPath.bToolCompensation && dLastElev < EPS_SMALL) dLastElev = currStep.dDepth ; - if ( ! AddRetract( ptP1, vtTool, dSafeZ, dSafeAggrBottZ, dLastElev, dAppr, bSplitArcs, bDoubleParallel)) { + if ( ! AddRetract( ptP1, vtTool, dSafeZ, dSafeAggrBottZ, dLastElev, dAppr, bSplitArcs, bDouble)) { m_pMchMgr->SetLastError( 2417, "Error in PocketingNT : Retract not computable") ; return false ; } @@ -6250,7 +6254,7 @@ PocketingNT::AddLinkRetract( const Point3d& ptP, const Vector3d& vtTool, double //---------------------------------------------------------------------------- bool PocketingNT::AddRetract( const Point3d& ptP, const Vector3d& vtTool, double dSafeZ, double dSafeAggrBottZ, - double dElev, double dAppr, bool bSplitArcs, bool bDoubleParallel) + double dElev, double dAppr, bool bSplitArcs, bool bDouble) { // se con aggregato da sotto o equivalente (rinvio a 90 gradi su testa 5 assi) bool bBottomOutStart = false ; @@ -6261,7 +6265,7 @@ PocketingNT::AddRetract( const Point3d& ptP, const Vector3d& vtTool, double dSaf dDistBottom = 0 ; bBottomOutStart = ( dDistBottom < - 10 * EPS_SMALL) ; } - if ( bDoubleParallel) + if ( bDouble) SetFlag( 404) ; // se sopra uscita c'รจ spazio per sicurezza o approccio double dSafeDist = ( m_bAggrBottom ? dSafeAggrBottZ : dSafeZ) ; @@ -6312,7 +6316,7 @@ PocketingNT::AddRetract( const Point3d& ptP, const Vector3d& vtTool, double dSaf return false ; } } - if ( bDoubleParallel) + if ( bDouble) SetFlag( 0) ; return true ; } diff --git a/PocketingNT.h b/PocketingNT.h index 8bf9e38..fa3c068 100644 --- a/PocketingNT.h +++ b/PocketingNT.h @@ -156,7 +156,7 @@ class PocketingNT : public Machining bool AddLinkRetract( const Point3d& ptP, const Vector3d& vtTool, double dSafeZ, double dSafeAggrBottZ, double dElev, double dAppr, bool bSplitArcs) ; bool AddRetract( const Point3d& ptP, const Vector3d& vtTool, double dSafeZ, double dSafeAggrBottZ, - double dElev, double dAppr, bool bSplitArcs, bool bDoubleParallel) ; + double dElev, double dAppr, bool bSplitArcs, bool bDouble) ; bool CalcFirstElevation( const Point3d& ptP1, const Vector3d& vtTool, const StepInfoPO& currStep, double dSafeZ, double dStep, double& dCurrElev, double& dEscapeElev, Vector3d& vtEscape) const ;