diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 6501df7..9a47851 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ 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) ;