From c5c0503018a54cd132f575a4493d372b9f3d96e4 Mon Sep 17 00:00:00 2001 From: DarioS Date: Mon, 8 Aug 2022 18:16:00 +0200 Subject: [PATCH] EgtMachKernel : - correzioni in mortasatura quando inclinata per calcolo massimo affondamento. --- Mortising.cpp | 48 +++++++++++++++++------------------------------- 1 file changed, 17 insertions(+), 31 deletions(-) diff --git a/Mortising.cpp b/Mortising.cpp index b43bfd2..d2d78f9 100644 --- a/Mortising.cpp +++ b/Mortising.cpp @@ -1267,11 +1267,6 @@ Mortising::ProcessPath( int nPathId, int nPvId, int nClId) dDepth -= dThick ; // sottraggo eventuale offset longitudinale dDepth -= GetOffsL() ; - // sottraggo eventuale ingombro di larghezza se inclinato rispetto al movimento - Vector3d vtTg ; pCompo->GetMidDir( vtTg) ; - double dSinAng = max( ( vtTg ^ vtExtr).Len(), sin( 30 * DEGTORAD)) ; - double dCosAng = min( ( vtTg * vtExtr), cos( 30 * DEGTORAD)) ; - dDepth -= m_TParams.m_dDiam / 2 * dCosAng / dSinAng ; // recupero nome del path string sPathName ; @@ -1296,6 +1291,12 @@ Mortising::ProcessPath( int nPathId, int nPvId, int nClId) if ( FromString( ExtractInfo( m_Params.m_sUserNotes, "MaxElev="), dMaxElev) && dElev > dMaxElev) dElev = dMaxElev ; + // ingombro aggiuntivo da larghezza sega a catena quando inclinata rispetto al movimento + Vector3d vtTg ; pCompo->GetMidDir( vtTg) ; + double dSinAng = max( ( vtTg ^ vtExtr).Len(), sin( 30 * DEGTORAD)) ; + double dCosAng = min( abs( vtTg * vtExtr), cos( 30 * DEGTORAD)) ; + double dAddEnc = m_TParams.m_dDiam / 2 * dCosAng / dSinAng ; + // affondamento speciale da note utente (!!! da trasformare in parametro come gli altri !!!) int nPlunge = 0 ; FromString( ExtractInfo( m_Params.m_sUserNotes, "Plunge="), nPlunge) ; @@ -1326,32 +1327,17 @@ Mortising::ProcessPath( int nPathId, int nPvId, int nClId) ") bigger than MaxMaterial (" + ToString( m_TParams.m_dMaxMat, 1) + ")" ; m_pMchMgr->SetWarning( 2557, sInfo) ; } - // se lavorazione singola - if ( dOkStep < EPS_SMALL || dOkStep > dElev) { - // se l'elevazione supera la capacità dell'utensile - if ( dElev > m_TParams.m_dMaxMat + EPS_SMALL) { - // segnalo, riduco e continuo - string sInfo = "Warning in Mortising : machining depth (" + ToString(dElev, 1) + - ") bigger than MaxMaterial (" + ToString(m_TParams.m_dMaxMat, 1) + ")" ; - m_pMchMgr->SetWarning(2558, sInfo) ; - dDepth -= dElev - m_TParams.m_dMaxMat ; - dElev = m_TParams.m_dMaxMat ; - } - } - // altrimenti lavorazione a step - else { - // massimo affondamento dell'utensile - double dMaxDepth = m_TParams.m_dMaxMat ; - // se l'elevazione supera il massimo affondamento dell'utensile - if ( dElev > dMaxDepth + EPS_SMALL) { - // segnalo, riduco e continuo - string sInfo = "Warning in Mortising : machining depth (" + ToString( dElev, 1) + - ") bigger than MaxDepth (" + ToString( dMaxDepth, 1) + ")" ; - m_pMchMgr->SetWarning( 2558, sInfo) ; - dDepth -= dElev - dMaxDepth ; - dElev = dMaxDepth ; - } - } + // massimo affondamento dell'utensile + double dMaxDepth = m_TParams.m_dMaxMat - dAddEnc ; + // se l'elevazione supera il massimo affondamento dell'utensile + if ( dElev > dMaxDepth + EPS_SMALL) { + // segnalo, riduco e continuo + string sInfo = "Warning in Mortising : machining depth (" + ToString( dElev, 1) + + ") bigger than MaxDepth (" + ToString( dMaxDepth, 1) + ")" ; + m_pMchMgr->SetWarning( 2558, sInfo) ; + dDepth -= dElev - dMaxDepth ; + dElev = dMaxDepth ; + } // se richiesta anteprima if ( nPvId != GDB_ID_NULL) {