diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index a93b572..966ab62 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/MachineCalc.cpp b/MachineCalc.cpp index bead7ee..30660d1 100644 --- a/MachineCalc.cpp +++ b/MachineCalc.cpp @@ -1305,7 +1305,7 @@ Machine::GetAuxDirFromAngles( const DBLVECTOR& vAng, Vector3d& vtDir) const bool Machine::GetPartDirFromAngles( const Vector3d& vtPart, const DBLVECTOR& vAng, Vector3d& vtDir) const { - // è espressa nel riferimento di macchina (tiene conto delle sole rotazioni di tavola) + // è espressa nel riferimento di macchina (tiene conto delle sole rotazioni di tavola e asse rotante speciale di testa) // verifico dimensione vettore angoli rispetto al numero di assi rotanti if ( vAng.size() < m_vCalcRotAx.size()) @@ -1321,6 +1321,14 @@ Machine::GetPartDirFromAngles( const Vector3d& vtPart, const DBLVECTOR& vAng, Ve vtDir.Rotate( m_vCalcRotAx[i-1].vtDir, vAng[i-1]) ; } + // eseguo rotazione inversa eventuale asse rotante speciale di testa + if ( m_nHeadSpecRotAxis != -1) { + if ( m_nHeadSpecRotAxis < 0 || m_nHeadSpecRotAxis >= int( m_vCalcRotAx.size())) + return false ; + int i = m_nHeadSpecRotAxis ; + vtDir.Rotate( m_vCalcRotAx[i].vtDir, -vAng[i]) ; + } + return true ; }