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:
+32
-2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user