EgtMachKernel 2.2j5 :

- tramite Info di testa ZEXTRA possibilità di assegnare una extra risalita in Z per evitare collisioni nel collegamento di due lavorazioni.
This commit is contained in:
Dario Sassi
2020-10-24 14:48:56 +00:00
parent 2ee6613759
commit 5dc854adb3
6 changed files with 84 additions and 3 deletions
+32 -2
View File
@@ -1642,8 +1642,18 @@ Operation::AdjustStartEndMovements( bool bVerifyPreviousLink)
if ( m_pMchMgr->GetCurrAxisHomePos( 2, dSafeZ)) {
DBLVECTOR vAxVal2 = vAxVal ; vAxVal2[2] = dSafeZ ;
DBLVECTOR vAxIni2 = vAxIni ; vAxIni2[2] = dSafeZ ;
if ( ! TestCollisionAvoid( vAxVal2, vAxIni2))
return false ;
if ( ! TestCollisionAvoid( vAxVal2, vAxIni2)) {
double dExtraZ = GetExtraZ( dSafeZ) ;
if ( dExtraZ > EPS_SMALL) {
dSafeZ += dExtraZ ;
vAxVal2[2] = dSafeZ ;
vAxIni2[2] = dSafeZ ;
if ( ! TestCollisionAvoid( vAxVal2, vAxIni2))
return false ;
}
else
return false ;
}
}
else
return false ;
@@ -2280,6 +2290,26 @@ Operation::CalcDeltaZForHeadRotation( const DBLVECTOR& vAxStart, const DBLVECTOR
return true ;
}
//----------------------------------------------------------------------------
double
Operation::GetExtraZ( double dSafeZ) const
{
double dExtraZ = 0 ;
// Recupero macchina corrente
Machine* pMch = ( m_pMchMgr != nullptr ? m_pMchMgr->GetCurrMachine() : nullptr) ;
if ( pMch == nullptr)
return 0 ;
// Se testa con Info ZEXTRA la recupero e la limito alla corsa dell'asse
int nHeadId = pMch->GetCurrHead() ;
double dVal ;
if ( m_pGeomDB->GetInfo( nHeadId, MCH_ZEXTRA, dVal) && dVal > EPS_SMALL) {
double dZmax ;
pMch->GetCurrAxisMax( 2, dZmax) ;
dExtraZ = min( dVal, dZmax - dSafeZ) ;
}
return dExtraZ ;
}
//----------------------------------------------------------------------------
bool
Operation::ForcedZmax( const DBLVECTOR& vAxStart, const DBLVECTOR& vAxEnd) const