EgtMachKernel 1.8c3 :
- prima versione funzionante di lavorazione generica con script lua - corretta funzione per Lua EmtAddArcMove - aggiunta VerifyAngleOutstroke - corretta assegnazione valore precedente ad asse indeterminato - corretta assegnazione angoli tenendo conto dei precedenti durante lavorazione.
This commit is contained in:
+17
-5
@@ -783,7 +783,7 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
|
||||
// ignoro gli assi bloccati
|
||||
if ( m_pMchMgr->IsKinematicRotAxisBlocked( i))
|
||||
continue ;
|
||||
// assegno il precedente
|
||||
// assegno il precedente ed esco
|
||||
vAng1[i] = vAxRotPrec[i] ;
|
||||
m_pMchMgr->LimitAngleToStroke( i, vAng1[i]) ;
|
||||
break ;
|
||||
@@ -801,13 +801,16 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
|
||||
// ignoro gli assi bloccati
|
||||
if ( m_pMchMgr->IsKinematicRotAxisBlocked( i))
|
||||
continue ;
|
||||
// assegno il precedente
|
||||
// assegno il precedente ed esco
|
||||
vAng1[i] = vAxRotPrec[i] ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( abs( nRStat) == 2) {
|
||||
bool bAng1 = true ;
|
||||
bool bAng2 = true ;
|
||||
// se primo movimento
|
||||
if ( bFirst) {
|
||||
// porto gli angoli ai valori più vicini ai precedenti con offset di uno o più giri
|
||||
@@ -821,10 +824,11 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
|
||||
// ignoro gli assi bloccati
|
||||
if ( m_pMchMgr->IsKinematicRotAxisBlocked( i))
|
||||
continue ;
|
||||
// assegno il precedente
|
||||
// assegno il precedente ed esco
|
||||
vAng1[i] = vAxRotPrec[i] ;
|
||||
m_pMchMgr->LimitAngleToStroke( i, vAng1[i]) ;
|
||||
vAng2[i] = vAng1[i] ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -839,12 +843,20 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
|
||||
// ignoro gli assi bloccati
|
||||
if ( m_pMchMgr->IsKinematicRotAxisBlocked( i))
|
||||
continue ;
|
||||
// assegno il precedente
|
||||
// assegno il precedente ed esco
|
||||
vAng1[i] = vAxRotPrec[i] ;
|
||||
vAng2[i] = vAng1[i] ;
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
// verifico che le soluzioni siano nelle corse
|
||||
for ( int i = 0 ; i < int( vAng1.size()) ; ++ i) {
|
||||
if ( ! m_pMchMgr->VerifyAngleOutstroke( i, vAng1[i]))
|
||||
bAng1 = false ;
|
||||
if ( ! m_pMchMgr->VerifyAngleOutstroke( i, vAng2[i]))
|
||||
bAng2 = false ;
|
||||
}
|
||||
}
|
||||
// scelgo la soluzione più vicina alla precedente
|
||||
double dDelta1 = 0 ;
|
||||
@@ -858,7 +870,7 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes,
|
||||
dDelta1 += fabs( vAng1[i] - vAxRotPrec[i]) * ( bFirst ? dRot1W : 1) ;
|
||||
dDelta2 += fabs( vAng2[i] - vAxRotPrec[i]) * ( bFirst ? dRot1W : 1) ;
|
||||
}
|
||||
if ( dDelta2 < dDelta1 - EPS_ANG_SMALL)
|
||||
if ( bAng2 && ( dDelta2 < dDelta1 - EPS_ANG_SMALL || ! bAng1))
|
||||
vAng1 = vAng2 ;
|
||||
}
|
||||
// ricavo posizione con eventuali modifiche dipendenti dalla lavorazione
|
||||
|
||||
Reference in New Issue
Block a user