diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index b8c0b43..f6e423b 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/Milling.cpp b/Milling.cpp index 719d55f..332fee6 100644 --- a/Milling.cpp +++ b/Milling.cpp @@ -2747,14 +2747,19 @@ Milling::AddOneWayMilling( const ICurveComposite* pCompo, const Vector3d& vtTool // 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-) + Point3d ptP1m = ptP1 - 10 * EPS_SMALL * vtTool ; Vector3d vtEscape = vtTool ; if ( m_bAboveHead && ! m_bAggrBottom && vtTool.z < - EPS_SMALL) { vtEscape.z = 0 ; vtEscape.Normalize() ; } double dNewStElev ; - if ( GetElevation( m_nPhase, ptP1 - 10 * EPS_SMALL * vtTool, vtTool, GetRadiusForStartEndElevation(), vtEscape, dNewStElev) && dNewStElev > EPS_SMALL) - dStElev = min( dStElev, dNewStElev) ; + if ( GetElevation( m_nPhase, ptP1m, vtTool, GetRadiusForStartEndElevation(), vtEscape, dNewStElev) && dNewStElev > EPS_SMALL) { + if ( bAboveStartEnd) + dStElev = min( dStElev, dNewStElev) ; + else + dStElev = max( dStElev, dNewStElev) ; + } // determino se l'inizio dell'attacco è esattamente sotto il grezzo, nel qual caso ricalcolo l'elevazione bool bUnderStart = m_bAboveHead && GetPointUnderRaw( ptP1, vtTool, 0, GetRadiusForStartEndElevation(), m_TParams.m_dLen, false, dSafeZ, dStElev) ; @@ -2864,14 +2869,19 @@ Milling::AddOneWayMilling( const ICurveComposite* pCompo, const Vector3d& vtTool // aggiungo retrazione per frese normali (esclusi step intermedi senza retrazione) if ( ( m_TParams.m_nType & TF_SAWBLADE) == 0 && ( j == nStep || bMidRetract)) { // correggo elevazione finale per punto fine uscita (se testa da sopra senza aggregato approccio mai Z-) + Point3d ptP1m = ptP1 - 10 * EPS_SMALL * vtTool ; Vector3d vtEscape = vtTool ; if ( m_bAboveHead && ! m_bAggrBottom && vtTool.z < - EPS_SMALL) { vtEscape.z = 0 ; vtEscape.Normalize() ; } double dNewEndElev ; - if ( GetElevation( m_nPhase, ptP1 - 10 * EPS_SMALL * vtTool, vtTool, GetRadiusForStartEndElevation(), vtEscape, dNewEndElev) && dNewEndElev > EPS_SMALL) - dEndElev = min( dEndElev, dNewEndElev) ; + if ( GetElevation( m_nPhase, ptP1m, vtTool, GetRadiusForStartEndElevation(), vtEscape, dNewEndElev) && dNewEndElev > EPS_SMALL) { + if ( bAboveStartEnd) + dEndElev = min( dEndElev, dNewEndElev) ; + else + dEndElev = max( dEndElev, dNewEndElev) ; + } // determino se l'inizio dell'uscita è esattamente sotto il grezzo, nel qual caso ricalcolo l'elevazione bool bUnderEnd = m_bAboveHead && GetPointUnderRaw( ptP1, vtTool, 0, GetRadiusForStartEndElevation(), m_TParams.m_dLen, false, dSafeZ, dEndElev) ; diff --git a/ToolData.cpp b/ToolData.cpp index f69acfa..40b62a7 100644 --- a/ToolData.cpp +++ b/ToolData.cpp @@ -354,19 +354,19 @@ ToolData::SetParam( int nType, double dVal) m_dMinFeed = dVal ; return true ; case TPA_DIST : - if ( abs( dVal) > 0) + if ( abs( dVal) > EPS_SMALL) SetValInNotes( TSI_DIST, dVal, m_sSysNotes) ; else RemoveValInNotes( TSI_DIST, m_sSysNotes) ; return true ; case TPA_STEMDIAM : - if ( abs( dVal) > 0) + if ( abs( dVal) > EPS_SMALL) SetValInNotes( TSI_STEM_DIAM, dVal, m_sSysNotes) ; else RemoveValInNotes( TSI_STEM_DIAM, m_sSysNotes) ; return true ; case TPA_CORE : - if ( abs( dVal) > 0) + if ( abs( dVal) > EPS_SMALL) SetValInNotes( TSI_CORE, dVal, m_sSysNotes) ; else RemoveValInNotes( TSI_CORE, m_sSysNotes) ;