diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 558da75..656af43 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/SawFinishing.cpp b/SawFinishing.cpp index d1f8f2b..91524e7 100644 --- a/SawFinishing.cpp +++ b/SawFinishing.cpp @@ -1104,7 +1104,10 @@ SawFinishing::CalculateAcrossToolPath( int nAuxId, int nClId) BBox3d b3PL ; PL.GetLocalBBox( b3PL) ; double dMaxElev = min( dDepth, b3Raw.GetMax().z - b3PL.GetMin().z) ; - dAddStart = (( dMaxElev < 0.5 * m_TParams.m_dDiam) ? sqrt( dMaxElev * m_TParams.m_dDiam - dMaxElev * dMaxElev) : 0.5 * m_TParams.m_dDiam) ; + if ( dMaxElev > 0.0 && dMaxElev < 0.5 * m_TParams.m_dDiam) + dAddStart = sqrt( dMaxElev * m_TParams.m_dDiam - dMaxElev * dMaxElev) ; + else + dAddStart = 0.5 * m_TParams.m_dDiam ; } // Imposto dati comuni @@ -1432,7 +1435,7 @@ SawFinishing::CalcAlongVerticalCuts( ICurve* pSect, int nUmin, int nUmax, const } dElev = max( dElev, dElev2) ; if ( dElev < EPS_SMALL) - dElev = max( dRawMaxZ - ptStart.z, dRawMaxZ - ptEnd.z) ; + dElev = max( max( dRawMaxZ - ptStart.z, dRawMaxZ - ptEnd.z), 0.) ; // la confronto con il massimo affondamento e con la massima lavorazione della lama double dMaxDepth = min( dDepth, m_TParams.m_dMaxMat) ; if ( dElev > dMaxDepth) { @@ -1519,7 +1522,7 @@ SawFinishing::CalcAlongStdCuts( ICurve* pSect, double dUmin, double dUmax, } dElev = max( dElev, dElev2) ; if ( dElev < EPS_SMALL) - dElev = max( dRawMaxZ - ptStart.z, dRawMaxZ - ptEnd.z) ; + dElev = max( max( dRawMaxZ - ptStart.z, dRawMaxZ - ptEnd.z), 0.) ; // la confronto con il massimo affondamento e con la massima lavorazione della lama double dMaxDepth = min( dDepth, m_TParams.m_dMaxMat) ; if ( dElev > dMaxDepth) { @@ -1575,7 +1578,9 @@ SawFinishing::CalcAlongOneWayCut( const Point3d& ptStart, const Point3d& ptEnd, } else if ( m_Params.m_nLeadLinkType == SAWFIN_LL_OUT) { // distanza XY tra centro e bordo taglio - double dDeltaT = (( dElev < 0.5 * m_TParams.m_dDiam) ? sqrt( dElev * m_TParams.m_dDiam - dElev * dElev) : 0) ; + double dDeltaT = 0 ; + if ( dElev > 0.0 && dElev < 0.5 * m_TParams.m_dDiam) + dDeltaT = sqrt( dElev * m_TParams.m_dDiam - dElev * dElev) ; // modifico inizio ptNewStart = ptStart - vtDir * ( dDeltaT + dAppr) ; } @@ -1631,7 +1636,9 @@ SawFinishing::CalcAlongZigZagCut( const Point3d& ptStart, const Point3d& ptEnd, // se attacco/uscita/collegamento esterno allungo inizio e fine a fuori grezzo else if ( m_Params.m_nLeadLinkType == SAWFIN_LL_OUT) { // distanza XY tra centro e bordo taglio - double dDeltaT = (( dElev < 0.5 * m_TParams.m_dDiam) ? sqrt( dElev * m_TParams.m_dDiam - dElev * dElev) : 0) ; + double dDeltaT = 0 ; + if ( dElev > 0.0 && dElev < 0.5 * m_TParams.m_dDiam) + dDeltaT = sqrt( dElev * m_TParams.m_dDiam - dElev * dElev) ; // modifico inizio ptNewStart = ptStart - vtDir * ( dDeltaT + dAppr) ; // modifico fine diff --git a/SawRoughing.cpp b/SawRoughing.cpp index cc549d9..b66051b 100644 --- a/SawRoughing.cpp +++ b/SawRoughing.cpp @@ -1172,7 +1172,9 @@ SawRoughing::CalculateOneWayCut( const Point3d& ptStart, const Point3d& ptEnd, c Point3d ptNewStart = ptStart ; if ( m_Params.m_nLeadLinkType == SAWROU_LL_OUT) { // distanza XY tra centro e bordo taglio - double dDeltaT = (( dElev < 0.5 * m_TParams.m_dDiam) ? sqrt( dElev * m_TParams.m_dDiam - dElev * dElev) : 0) ; + double dDeltaT = 0 ; + if ( dElev > 0.0 && dElev < 0.5 * m_TParams.m_dDiam) + dDeltaT = sqrt( dElev * m_TParams.m_dDiam - dElev * dElev) ; // modifico inizio ptNewStart = ptStart - vtDir * ( dDeltaT + dAppr) ; } @@ -1269,7 +1271,9 @@ SawRoughing::CalculateZigZagCut( const Point3d& ptStart, const Point3d& ptEnd, c // se attacco/uscita/collegamento esterno allungo inizio e fine if ( m_Params.m_nLeadLinkType == SAWROU_LL_OUT) { // distanza XY tra centro e bordo taglio - double dDeltaT = (( dElev < 0.5 * m_TParams.m_dDiam) ? sqrt( dElev * m_TParams.m_dDiam - dElev * dElev) : 0) ; + double dDeltaT = 0 ; + if ( dElev > 0.0 && dElev < 0.5 * m_TParams.m_dDiam) + dDeltaT = sqrt( dElev * m_TParams.m_dDiam - dElev * dElev) ; // modifico inizio ptNewStart = ptStart - vtDir * ( dDeltaT + dAppr) ; // modifico fine