EgtMachKernel 2.1c2 :
- aggiunta gestione tre assi rotanti su testa.
This commit is contained in:
+13
-5
@@ -446,15 +446,23 @@ Machine::CalculateKinematicChain( void)
|
||||
}
|
||||
// se 3 va bene ( uno dovrà poi avere valore assegnato)
|
||||
if ( m_vCalcRotAx.size() == 3) {
|
||||
// se ultimi due di testa, devo invertirne l'ordine
|
||||
if ( m_vCalcRotAx[1].bHead && m_vCalcRotAx[2].bHead)
|
||||
int n2ndHeadRotAx = - 1 ;
|
||||
// se tutti e tre di testa, devo invertire il primo con il terzo
|
||||
if ( m_vCalcRotAx[0].bHead && m_vCalcRotAx[1].bHead && m_vCalcRotAx[2].bHead) {
|
||||
swap( m_vCalcRotAx[0], m_vCalcRotAx[2]) ;
|
||||
n2ndHeadRotAx = 1 ;
|
||||
}
|
||||
// se altrimenti ultimi due di testa, devo invertirne l'ordine
|
||||
else if ( m_vCalcRotAx[1].bHead && m_vCalcRotAx[2].bHead) {
|
||||
swap( m_vCalcRotAx[1], m_vCalcRotAx[2]) ;
|
||||
n2ndHeadRotAx = 2 ;
|
||||
}
|
||||
// impongo limiti di corsa sul secondo asse rotante di testa
|
||||
if ( m_vCalcRotAx[2].bHead) {
|
||||
if ( n2ndHeadRotAx > 0) {
|
||||
Head* pHead = GetHead( m_nCalcHeadId) ;
|
||||
if ( pHead != nullptr) {
|
||||
m_vCalcRotAx[2].stroke.Min = max( m_vCalcRotAx[2].stroke.Min, pHead->GetRot2Stroke().Min) ;
|
||||
m_vCalcRotAx[2].stroke.Max = min( m_vCalcRotAx[2].stroke.Max, pHead->GetRot2Stroke().Max) ;
|
||||
m_vCalcRotAx[n2ndHeadRotAx].stroke.Min = max( m_vCalcRotAx[n2ndHeadRotAx].stroke.Min, pHead->GetRot2Stroke().Min) ;
|
||||
m_vCalcRotAx[n2ndHeadRotAx].stroke.Max = min( m_vCalcRotAx[n2ndHeadRotAx].stroke.Max, pHead->GetRot2Stroke().Max) ;
|
||||
}
|
||||
}
|
||||
return true ;
|
||||
|
||||
Reference in New Issue
Block a user