EgtMachKernel :
- nel calcolo angoli dopo il primo punto di un percorso richiedo la continuità limitando il DeltaR2 a 30gradi.
This commit is contained in:
+10
-1
@@ -1172,7 +1172,7 @@ Operation::CalculateAxesValues( const string& sHint, bool bSolChExact)
|
||||
// recupero peso primo asse rotante di testa
|
||||
double dRot1W = m_pMchMgr->GetCalcRot1W() ;
|
||||
|
||||
// recupero la minima differenza angolare da posizione precedente per stare vivino a posizione home
|
||||
// recupero la minima differenza angolare da posizione precedente per stare vicino a posizione home
|
||||
double dAngDeltaMinForHome = m_pMchMgr->GetAngDeltaMinForHome() ;
|
||||
|
||||
// applico eventuali blocchi di assi rotanti
|
||||
@@ -1222,6 +1222,8 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
|
||||
{
|
||||
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
|
||||
return false ;
|
||||
// massima variazione secondo asse rotante per continuità
|
||||
double dDeltaR2Max = 30 ;
|
||||
// recupero il numero degli assi lineari e rotanti
|
||||
// predispongo variabile per valori assi
|
||||
DBLVECTOR vAxVal ;
|
||||
@@ -1369,6 +1371,13 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
|
||||
}
|
||||
if ( bAng2 && ( dDelta2 < dDelta1 - EPS_ANG_SMALL || ! bAng1))
|
||||
vAng1 = vAng2 ;
|
||||
// se imposto limite su variazione di secondo asse rotante
|
||||
if ( dDeltaR2Max > EPS_ANG_SMALL && vAng1.size() >= 2) {
|
||||
double dR2Diff1 = vAng1[1] - vAxRotPrec[1] ;
|
||||
double dR2Diff2 = vAng2[1] - vAxRotPrec[1] ;
|
||||
if ( abs( dR2Diff1) > abs( dR2Diff2) && abs( dR2Diff1) > dDeltaR2Max)
|
||||
vAng1 = vAng2 ;
|
||||
}
|
||||
}
|
||||
// ricavo posizione con eventuali modifiche dipendenti dalla lavorazione
|
||||
Point3d ptP = pCamData->GetEndPoint() ;
|
||||
|
||||
Reference in New Issue
Block a user