EgtMachKernel 1.9a2 :
- migliorie a simulazione per Vmill con pezzi che si muovono.
This commit is contained in:
+11
-8
@@ -1061,18 +1061,21 @@ Machine::GetNoseFromPositions( double dX, double dY, double dZ, const DBLVECTOR&
|
||||
Point3d& ptNose) const
|
||||
{
|
||||
// la posizione deve essere espressa rispetto allo ZERO MACCHINA
|
||||
// è espressa nel riferimento di macchina (tiene conto delle sole rotazioni di testa)
|
||||
// è espressa nel riferimento di macchina (tiene conto delle sole traslazioni e rotazioni di testa)
|
||||
|
||||
// aggiorno posizione testa a riposo mediante ciclo inverso sugli assi di testa
|
||||
Point3d ptPosH = m_ptCalcPos ;
|
||||
// aggiorno posizione testa a riposo mediante ciclo inverso sugli assi rotanti di testa
|
||||
ptNose = m_ptCalcPos ;
|
||||
for ( size_t i = m_vCalcRotAx.size() ; i >= 1 ; -- i) {
|
||||
// se asse di testa
|
||||
if ( m_vCalcRotAx[i-1].bHead) {
|
||||
ptPosH.Rotate( m_vCalcRotAx[i-1].ptPos, m_vCalcRotAx[i-1].vtDir, vAng[i-1]) ;
|
||||
}
|
||||
if ( m_vCalcRotAx[i-1].bHead)
|
||||
ptNose.Rotate( m_vCalcRotAx[i-1].ptPos, m_vCalcRotAx[i-1].vtDir, vAng[i-1]) ;
|
||||
}
|
||||
// aggiorno posizione testa con assi lineari di testa
|
||||
DBLVECTOR vMov( {dX, dY, dZ}) ;
|
||||
for ( size_t i = 1 ; i <= m_vCalcLinAx.size() ; ++ i) {
|
||||
if ( m_vCalcLinAx[i-1].bHead)
|
||||
ptNose += m_vCalcLinAx[i-1].vtDir * vMov[i-1] ;
|
||||
}
|
||||
|
||||
ptNose.Set( dX + ptPosH.x, dY + ptPosH.y, dZ + ptPosH.z) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user