From b188caeba36aa4f3f9d713d0302d4e37d163bc72 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 27 Sep 2016 08:57:21 +0000 Subject: [PATCH] EgtMachKernel 1.6u3 : - correzione calcolo lunghezza tagli di lama inclinati portati al bordo lastra. --- EgtMachKernel.rc | Bin 11782 -> 11782 bytes Sawing.cpp | 64 +++++++++++++++++++++++++++++++---------------- Sawing.h | 2 +- 3 files changed, 43 insertions(+), 23 deletions(-) diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 6501df735e87ab04d4dc749e1aa4436b87769a9c..9a4785168e4242aedcbfda2d7d713b57738e62a3 100644 GIT binary patch delta 97 zcmZpRX^YwLhmFyA^ItYwW=7-5j>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHPhB8F delta 97 zcmZpRX^YwLhmFx_^ItYwW=5mQj>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHP01iS diff --git a/Sawing.cpp b/Sawing.cpp index 8c23059..545c473 100644 --- a/Sawing.cpp +++ b/Sawing.cpp @@ -1223,7 +1223,7 @@ Sawing::ProcessLine( const ICurve* pCrvP, const ICurveLine* pLineC, const ICurve } // aggiusto per tipo estremi bool bToSkip = false ; - if ( ! AdjustLineForEdges( pLine, dElev, vtThick, bIsFirst, bIsLast, bExtAngPC, bExtAngCN, bToSkip)) { + if ( ! AdjustLineForEdges( pLine, dElev, vtCorr, vtThick, bIsFirst, bIsLast, bExtAngPC, bExtAngCN, bToSkip)) { LOG_INFO( GetEMkLogger(), "Error in Sawing : Entity AdjustForEdges") ; return false ; } @@ -2900,7 +2900,7 @@ Sawing::AdjustIntArcForSide( ICurve* pCurve, double dSideAng) //---------------------------------------------------------------------------- bool -Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtThick, +Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtCorr, const Vector3d& vtThick, bool bIsFirst, bool bIsLast, bool bExtAngPC, bool bExtAngCN, bool& bToSkip) { // distanza XY tra centro e bordo taglio @@ -2924,11 +2924,15 @@ Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtT Vector3d vtDir ; pLine->GetStartDir( vtDir) ; // determino la distanza dal bordo del grezzo - double dDist = 0, dDist2 = 0 ; - if ( ! GetDistanceFromRawSide( m_nPhase, ptP, - vtDir, dDist) || - ! GetDistanceFromRawSide( m_nPhase, ptP + vtThick, - vtDir, dDist2)) + double dDist[4] = {0, 0, 0, 0} ; + if ( ! GetDistanceFromRawSide( m_nPhase, ptP, - vtDir, dDist[0]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtThick, - vtDir, dDist[1]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtCorr * dElev, - vtDir, dDist[2]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtCorr * dElev + vtThick, - vtDir, dDist[3])) return false ; - dDeltaI = max( dDist, dDist2) ; + dDeltaI = 0 ; + for ( int i = 0 ; i < 4 ; ++i) + dDeltaI = max( dDeltaI, dDist[i]) ; } else if ( m_Params.m_nLeadInType == SAW_LI_EXT_OUT) { // estendo all'esterno del bordo del grezzo @@ -2938,11 +2942,15 @@ Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtT Vector3d vtDir ; pLine->GetStartDir( vtDir) ; // determino la distanza dal bordo del grezzo - double dDist = 0, dDist2 = 0 ; - if ( ! GetDistanceFromRawSide( m_nPhase, ptP, - vtDir, dDist) || - ! GetDistanceFromRawSide( m_nPhase, ptP + vtThick, - vtDir, dDist2)) + double dDist[4] = {0, 0, 0, 0} ; + if ( ! GetDistanceFromRawSide( m_nPhase, ptP, - vtDir, dDist[0]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtThick, - vtDir, dDist[1]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtCorr * dElev, - vtDir, dDist[2]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtCorr * dElev + vtThick, - vtDir, dDist[3])) return false ; - dDeltaI = max( dDist, dDist2) + dDeltaT ; + dDeltaI = 0 ; + for ( int i = 0 ; i < 4 ; ++i) + dDeltaI = max( dDeltaI, dDist[i]) ; } } else { @@ -2955,11 +2963,15 @@ Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtT Vector3d vtDir ; pLine->GetStartDir( vtDir) ; // determino la distanza dal bordo del grezzo - double dDist = 0, dDist2 = 0 ; - if ( ! GetDistanceFromRawSide( m_nPhase, ptP, - vtDir, dDist) || - ! GetDistanceFromRawSide( m_nPhase, ptP + vtThick, - vtDir, dDist2)) + double dDist[4] = {0, 0, 0, 0} ; + if ( ! GetDistanceFromRawSide( m_nPhase, ptP, - vtDir, dDist[0]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtThick, - vtDir, dDist[1]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtCorr * dElev, - vtDir, dDist[2]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtCorr * dElev + vtThick, - vtDir, dDist[3])) return false ; - dDeltaI = max( dDist, dDist2) ; + dDeltaI = 0 ; + for ( int i = 0 ; i < 4 ; ++i) + dDeltaI = max( dDeltaI, dDist[i]) ; // se LeadIn EXT_OUT vado all'esterno if ( m_Params.m_nLeadInType == SAW_LI_EXT_OUT) dDeltaI += dDeltaT ; @@ -2980,11 +2992,15 @@ Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtT Vector3d vtDir ; pLine->GetEndDir( vtDir) ; // determino la distanza dal bordo del grezzo - double dDist = 0, dDist2 = 0 ; - if ( ! GetDistanceFromRawSide( m_nPhase, ptP, vtDir, dDist) || - ! GetDistanceFromRawSide( m_nPhase, ptP + vtThick, vtDir, dDist2)) + double dDist[4] = {0, 0, 0, 0} ; + if ( ! GetDistanceFromRawSide( m_nPhase, ptP, vtDir, dDist[0]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtThick, vtDir, dDist[1]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtCorr * dElev, vtDir, dDist[2]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtCorr * dElev + vtThick, vtDir, dDist[3])) return false ; - dDeltaF = max( dDist, dDist2) ; + dDeltaF = 0 ; + for ( int i = 0 ; i < 4 ; ++i) + dDeltaF = max( dDeltaF, dDist[i]) ; } } else { @@ -2997,11 +3013,15 @@ Sawing::AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtT Vector3d vtDir ; pLine->GetEndDir( vtDir) ; // determino la distanza dal bordo del grezzo - double dDist = 0, dDist2 = 0 ; - if ( ! GetDistanceFromRawSide( m_nPhase, ptP, vtDir, dDist) || - ! GetDistanceFromRawSide( m_nPhase, ptP + vtThick, vtDir, dDist2)) + double dDist[4] = {0, 0, 0, 0} ; + if ( ! GetDistanceFromRawSide( m_nPhase, ptP, vtDir, dDist[0]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtThick, vtDir, dDist[1]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtCorr * dElev, vtDir, dDist[2]) || + ! GetDistanceFromRawSide( m_nPhase, ptP + vtCorr * dElev + vtThick, vtDir, dDist[3])) return false ; - dDeltaF = max( dDist, dDist2) ; + dDeltaF = 0 ; + for ( int i = 0 ; i < 4 ; ++i) + dDeltaF = max( dDeltaF, dDist[i]) ; } } // controllo se lunghezza entità accettabile diff --git a/Sawing.h b/Sawing.h index 20115c1..5718ab6 100644 --- a/Sawing.h +++ b/Sawing.h @@ -116,7 +116,7 @@ class Sawing : public Machining Vector3d& vtTool, Vector3d& vtCorr) ; bool AdjustForSide( ICurve* pCurve) ; bool AdjustIntArcForSide( ICurve* pCurve, double dSideAng) ; - bool AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtThick, + bool AdjustLineForEdges( ICurveLine* pLine, double dElev, const Vector3d& vtCorr, const Vector3d& vtThick, bool bIsFirst, bool bIsLast, bool bExtAngPC, bool bExtAngCN, bool& ToSkip) ; bool AdjustArcForEdges( ICurveArc* pArc, double dElev, const Vector3d& vtStaThick, const Vector3d& vtEndThick, bool bIsFirst, bool bIsLast, bool bExtAngPC, bool bExtAngCN, bool& ToSkip) ;