EgtMachKernel 1.6u3 :

- correzione calcolo lunghezza tagli di lama inclinati portati al bordo lastra.
This commit is contained in:
Dario Sassi
2016-09-27 08:57:21 +00:00
parent fde68bd68f
commit b188caeba3
3 changed files with 43 additions and 23 deletions
BIN
View File
Binary file not shown.
+42 -22
View File
@@ -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
+1 -1
View File
@@ -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) ;