diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index aa8ab0e..12e591b 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/Milling.cpp b/Milling.cpp index c031456..ec4d1ab 100644 --- a/Milling.cpp +++ b/Milling.cpp @@ -1635,11 +1635,11 @@ Milling::ProcessPath( int nPathId, int nPvId, int nClId) double dMaxDepth = m_TParams.m_dLen - ( m_TParams.m_dDiam > m_dTHoldDiam ? 0 : m_dTHoldLen) - MAX_DEPTH_SAFE ; if ( dElev > dMaxDepth + EPS_SMALL) { // se affondamento riducibile : segnalo, riduco e continuo - if ( dDepth + max( dThick, 0.0) > dMaxDepth) { + if ( dDepth + max( dThick, 0.0) > dElev - dMaxDepth) { string sInfo = "Warning in Milling : machining depth (" + ToString( dElev, 1) + ") bigger than MaxDepth (" + ToString( dMaxDepth, 1) + ")" ; m_pMchMgr->SetWarning( 2358, sInfo) ; - dDepth = dMaxDepth - max( dThick, 0.0) ; + dDepth -= ( dElev - dMaxDepth) ; dElev = dMaxDepth ; } // altrimenti errore @@ -2019,7 +2019,7 @@ Milling::AddStandardMilling( const ICurveComposite* pCompo, const Vector3d& vtTo if ( ! CalcLeadInStart( ptStart, vtStart, vtTool, dStElev, false, pCompo, ptP1)) return false ; // determino se l'inizio dell'attacco è fuori dal grezzo - bool bOutStart = GetPointOutOfRaw( ptP1, vtTool) ; + bool bOutStart = GetPointOutOfRaw( ptP1, vtTool, dElev) ; // determino se l'inizio dell'attacco è sopra il grezzo bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1) ; // imposto versore correzione e ausiliario sul punto di partenza @@ -2174,7 +2174,7 @@ Milling::AddZigZagMilling( const ICurveComposite* pCompo, const Vector3d& vtTool if ( ! CalcLeadInStart( ptStart, vtStart, vtTool, dStElev, bInvert, pCompo, ptP1)) return false ; // determino se l'inizio dell'attacco è fuori dal grezzo - bool bOutStart = GetPointOutOfRaw( ptP1, vtTool) ; + bool bOutStart = GetPointOutOfRaw( ptP1, vtTool, dElev) ; // determino se l'inizio dell'attacco è sopra il grezzo bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1) ; // imposto versore correzione e ausiliario sul punto di partenza @@ -2375,7 +2375,7 @@ Milling::AddOneWayMilling( const ICurveComposite* pCompo, const Vector3d& vtTool if ( ! CalcLeadInStart( ptStart, vtStart, vtTool, dStElev, false, pCompo, ptP1)) return false ; // determino se l'inizio dell'attacco è fuori dal grezzo - bool bOutStart = GetPointOutOfRaw( ptP1, vtTool) ; + bool bOutStart = GetPointOutOfRaw( ptP1, vtTool, dElev) ; // aggiungo approccio per frese normali if ( ( m_TParams.m_nType & TF_SAWBLADE) == 0) { // correggo elevazione iniziale per punto inizio attacco (se testa da sopra senza aggregato approccio mai Z-) @@ -2542,7 +2542,7 @@ Milling::AddSpiralMilling( const ICurveComposite* pCompo, const Vector3d& vtTool if ( ! CalcLeadInStart( ptStart, vtStart, vtTool, dStElev, false, pCompo, ptP1)) return false ; // determino se l'inizio dell'attacco è fuori dal grezzo - bool bOutStart = GetPointOutOfRaw( ptP1, vtTool) ; + bool bOutStart = GetPointOutOfRaw( ptP1, vtTool, dElev) ; // determino se l'inizio dell'attacco è sopra il grezzo bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1) ; // imposto versore correzione e ausiliario sul punto di partenza @@ -2692,7 +2692,7 @@ Milling::AddSpiralMilling( const ICurveComposite* pCompo, const Vector3d& vtTool else dStElev -= ( ptP1 - ptStart) * vtTool ; // determino se l'inizio dell'attacco è fuori dal grezzo - bool bOutStart = GetPointOutOfRaw( ptP1, vtTool) ; + bool bOutStart = GetPointOutOfRaw( ptP1, vtTool, dElev) ; // determino se l'inizio dell'attacco è sopra il grezzo bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1) ; // approccio al punto iniziale @@ -2874,7 +2874,7 @@ Milling::AddSawZigZagMilling( const ICurveComposite* pCompo, const Vector3d& vtT if ( ! CalcLeadInStart( ptStart, vtStart, vtTool, dStElev, bInvert, pCompo, ptP1)) return false ; // determino se l'inizio dell'attacco è fuori dal grezzo - bool bOutStart = GetPointOutOfRaw( ptP1, vtTool) ; + bool bOutStart = GetPointOutOfRaw( ptP1, vtTool, dElev) ; // determino se l'inizio dell'attacco è sopra il grezzo bool bAboveStart = m_bAboveHead && GetPointAboveRaw( ptP1) ; // imposto versore correzione e ausiliario sul punto di partenza @@ -3527,7 +3527,7 @@ Milling::GetRadiusForStartEndElevation( void) const //---------------------------------------------------------------------------- bool -Milling::GetPointOutOfRaw( const Point3d& ptP, const Vector3d& vtTool) const +Milling::GetPointOutOfRaw( const Point3d& ptP, const Vector3d& vtTool, double dElev) const { // per frese normali if ( ( m_TParams.m_nType & TF_SAWBLADE) == 0) { @@ -3535,7 +3535,7 @@ Milling::GetPointOutOfRaw( const Point3d& ptP, const Vector3d& vtTool) const double dTemp ; if ( ! GetElevation( m_nPhase, ptP, vtTool, 0.5 * m_TParams.m_dDiam, vtTool, dTemp)) return false ; - return ( dTemp < 10 * EPS_SMALL) ; + return ( dTemp < 10 * EPS_SMALL || dTemp > dElev + 10 * EPS_SMALL) ; } // per lame else { diff --git a/Milling.h b/Milling.h index c5a9f11..26fec87 100644 --- a/Milling.h +++ b/Milling.h @@ -98,7 +98,7 @@ class Milling : public Machining bool AddLeadOut( const Point3d& ptEnd, const Vector3d& vtEnd, const Vector3d& vtN, double dEndElev, bool bInvert, const ICurveComposite* pCompo, bool bSplitArcs, Point3d& ptP1) ; double GetRadiusForStartEndElevation( void) const ; - bool GetPointOutOfRaw( const Point3d& ptP, const Vector3d& vtTool) const ; + bool GetPointOutOfRaw( const Point3d& ptP, const Vector3d& vtTool, double dElev) const ; bool GetPointAboveRaw( const Point3d& ptP) const ; bool CalcAndSetCorrAuxDir( const ICurveComposite* pCompo, double dU) ; Vector3d CalcCorrDir( const ICurveComposite* pCompo, double dU) ; diff --git a/Pocketing.cpp b/Pocketing.cpp index f34d04b..bb65b03 100644 --- a/Pocketing.cpp +++ b/Pocketing.cpp @@ -1506,11 +1506,11 @@ Pocketing::ProcessPath( int nPathId, int nPvId, int nClId) double dMaxDepth = m_TParams.m_dLen - ( m_TParams.m_dDiam > m_dTHoldDiam ? 0 : m_dTHoldLen) - MAX_DEPTH_SAFE ; if ( dElev > dMaxDepth + EPS_SMALL) { // se affondamento riducibile : segnalo, riduco e continuo - if ( dDepth + max( dThick, 0.0) > dMaxDepth) { + if ( dDepth + max( dThick, 0.0) > dElev - dMaxDepth) { string sInfo = "Warning in Pocketing : machining depth (" + ToString( dElev, 1) + ") bigger than MaxDepth (" + ToString( dMaxDepth, 1) + ")" ; m_pMchMgr->SetWarning( 2458, sInfo) ; - dDepth = dMaxDepth - max( dThick, 0.0) ; + dDepth -= ( dElev - dMaxDepth) ; dElev = dMaxDepth ; } // altrimenti errore