From 20b56583c3a0f164f6330482ee9577efd3ec8694 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Wed, 15 Apr 2026 19:03:44 +0200 Subject: [PATCH] EgtMachKernel 3.1d4 : - in fresatura con lama a ZigZag con SideStep correzione per attacco/uscita sbagliati con numero pari di step. --- EgtMachKernel.rc | Bin 11774 -> 11774 bytes Milling.cpp | 14 ++++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index f55ad18357ca7c94b37f40afd559873a62aeee4c..fb07e835c3ea66b029570e9e8547ad2e637cc97b 100644 GIT binary patch delta 97 zcmewt{V#gMFE&P#&A-`fnHfzcKa|wnoW?bQ1uSxrY4Qod0+^@}R1`^_2jk{d(jGv4 NK<#LXK~l;gTmUI`BbWdH delta 97 zcmewt{V#gMFE&Qw&A-`fnHh~IKa|wnoW?bQ1uSxrY4Qod0+^@}R1`^_2jk{d(jGv4 NK<#LXK~l;gTmUD-Bai?9 diff --git a/Milling.cpp b/Milling.cpp index 3429cb0..2b5d7b1 100644 --- a/Milling.cpp +++ b/Milling.cpp @@ -4034,8 +4034,9 @@ Milling::AddSawZigZagMilling( const ICurveComposite* pCompo, const Vector3d& vtT } bool bAdjustLoPerp = ( m_Params.m_dLoPerp > 10 * EPS_SMALL) ; if ( bAdjustLoPerp) { - m_Params.m_dLoTang = 0 ; - m_Params.m_dLoPerp = 0. ; + double dNewLoPerp = max( 0., m_Params.m_dLoPerp - ( nStep - 1) * dStep) ; + m_Params.m_dLoTang *= dNewLoPerp / m_Params.m_dLoPerp ; + m_Params.m_dLoPerp = dNewLoPerp ; } // ciclo sugli step @@ -4059,11 +4060,16 @@ Milling::AddSawZigZagMilling( const ICurveComposite* pCompo, const Vector3d& vtT if ( ! TrimExtendCurveToClosedStm( pMyCompo, nTriExtCstm, bInvert)) pMyCompo.Set( pMyCopy) ; } - // dopo primo step annullo parametri di attacco - if ( j > 1 && bAdjustLiPerp) { + // se necessario e invertito oppure step successivo annullo parametri di attacco + if ( bAdjustLiPerp && ( bInvert || j == 2)) { m_Params.m_dLiPerp = 0. ; m_Params.m_dLiTang = 0. ; } + // se necessario e non invertito oppure step successivo annullo parametri di uscita + if ( bAdjustLoPerp && ( ! bInvert || j == 2)) { + m_Params.m_dLoPerp = 0. ; + m_Params.m_dLoTang = 0. ; + } // ciclo sulle curve elementari int nMaxInd = pMyCompo->GetCurveCount() - 1 ; for ( int i = 0 ; i <= nMaxInd ; ++ i) {