EgtMachKernel 1.6s5 :

- migliorato controllo elevazione utensile in fresatura su attacco e uscita.
This commit is contained in:
Dario Sassi
2016-07-18 18:11:52 +00:00
parent 828deddc66
commit 60d97d5657
5 changed files with 61 additions and 21 deletions
+36 -7
View File
@@ -217,13 +217,42 @@ Operation::GetElevation( int nPhase, const Point3d& ptP1, const Point3d& ptP2, c
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
return false ;
// approssimo l'arco con due linee
double dElev1, dElev2 ;
if ( ! GetElevation( nPhase, ptP1, ptP2, vtDir, dElev1))
return false ;
if ( ! GetElevation( nPhase, ptP2, ptP3, vtDir, dElev2))
return false ;
dElev = max( dElev1, dElev2) ;
return true ;
double dElev1, dElev2 ;
if ( ! GetElevation( nPhase, ptP1, ptP2, vtDir, dElev1))
return false ;
if ( ! GetElevation( nPhase, ptP2, ptP3, vtDir, dElev2))
return false ;
dElev = max( dElev1, dElev2) ;
return true ;
}
//----------------------------------------------------------------------------
bool
Operation::GetElevation( int nPhase, const Point3d& ptP,
const Vector3d& vtDir, double dRad, double& dElev)
{
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
return false ;
// considero il punto
if ( ! GetElevation( nPhase, ptP, vtDir, dElev))
return false ;
// considero i 4 punti sulla circonferenza
Frame3d frLoc ;
frLoc.Set( ptP, vtDir) ;
double dElevT ;
if ( ! GetElevation( nPhase, ptP + frLoc.VersX() * dRad, vtDir, dElevT))
return false ;
dElev = max( dElev, dElevT) ;
if ( ! GetElevation( nPhase, ptP - frLoc.VersX() * dRad, vtDir, dElevT))
return false ;
dElev = max( dElev, dElevT) ;
if ( ! GetElevation( nPhase, ptP + frLoc.VersY() * dRad, vtDir, dElevT))
return false ;
dElev = max( dElev, dElevT) ;
if ( ! GetElevation( nPhase, ptP - frLoc.VersY() * dRad, vtDir, dElevT))
return false ;
dElev = max( dElev, dElevT) ;
return true ;
}
//----------------------------------------------------------------------------