EgtMachKernel 1.6u3 :
- correzione calcolo lunghezza tagli di lama inclinati portati al bordo lastra.
This commit is contained in:
Binary file not shown.
+42
-22
@@ -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
|
||||
|
||||
@@ -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) ;
|
||||
|
||||
Reference in New Issue
Block a user