EgtMachKernel 2.1c2 :

- aggiunta gestione tre assi rotanti su testa.
This commit is contained in:
Dario Sassi
2019-03-07 12:31:41 +00:00
parent c0906ef63c
commit 0330513980
2 changed files with 13 additions and 5 deletions
+13 -5
View File
@@ -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 ;