EgtMachKernel :
- modifiche per visualizzazione utensili con lavorazioni.
This commit is contained in:
+49
-26
@@ -1012,35 +1012,46 @@ Machine::GetDirection( const Vector3d& vtDir, const DBLVECTOR& vAng, Vector3d& v
|
||||
{
|
||||
// è espressa nel riferimento di macchina (tiene conto delle sole rotazioni di testa)
|
||||
|
||||
// verifico dimensione vettore angoli rispetto al numero di assi rotanti
|
||||
if ( vAng.size() < m_vCalcRotAx.size())
|
||||
return false ;
|
||||
|
||||
// direzione a riposo
|
||||
vtNew = vtDir ;
|
||||
|
||||
// se c'è terzo asse rotante di testa
|
||||
if ( m_vCalcRotAx.size() >= 3 && m_vCalcRotAx[2].bHead) {
|
||||
// posizione e direzione secondo asse rotante
|
||||
Point3d ptAx3 = m_vCalcRotAx[2].ptPos ;
|
||||
Vector3d vtAx3 = m_vCalcRotAx[2].vtDir ;
|
||||
// ruoto dati a riposo
|
||||
vtNew.Rotate( vtAx3, vAng[2]) ;
|
||||
// ciclo sugli assi di testa dall'ultimo (prima assi di tavola, poi di testa)
|
||||
for ( size_t i = m_vCalcRotAx.size() ; i >= 1 ; -- i) {
|
||||
// se asse di testa
|
||||
if ( m_vCalcRotAx[i-1].bHead)
|
||||
vtNew.Rotate( m_vCalcRotAx[i-1].vtDir, vAng[i-1]) ;
|
||||
}
|
||||
|
||||
// se c'è secondo asse rotante di testa
|
||||
if ( m_vCalcRotAx.size() >= 2 && m_vCalcRotAx[1].bHead) {
|
||||
// posizione e direzione secondo asse rotante
|
||||
Point3d ptAx2 = m_vCalcRotAx[1].ptPos ;
|
||||
Vector3d vtAx2 = m_vCalcRotAx[1].vtDir ;
|
||||
// ruoto dati a riposo
|
||||
vtNew.Rotate( vtAx2, vAng[1]) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machine::GetBackDirection( const Vector3d& vtDir, const DBLVECTOR& vAng, Vector3d& vtNew) const
|
||||
{
|
||||
// è espressa nel riferimento del pezzo (tiene conto delle rotazioni di testa e al contrario di quelle di tavola)
|
||||
|
||||
// verifico dimensione vettore angoli rispetto al numero di assi rotanti
|
||||
if ( vAng.size() < m_vCalcRotAx.size())
|
||||
return false ;
|
||||
|
||||
// direzione a riposo
|
||||
vtNew = vtDir ;
|
||||
|
||||
// ciclo sugli assi dall'ultimo (prima assi di tavola, poi di testa)
|
||||
for ( size_t i = m_vCalcRotAx.size() ; i >= 1 ; -- i) {
|
||||
// se asse di testa
|
||||
if ( m_vCalcRotAx[i-1].bHead)
|
||||
vtNew.Rotate( m_vCalcRotAx[i-1].vtDir, vAng[i-1]) ;
|
||||
// altrimenti di tavola
|
||||
else
|
||||
vtNew.Rotate( m_vCalcRotAx[i-1].vtDir, - vAng[i-1]) ;
|
||||
}
|
||||
|
||||
// se c'è primo asse rotante di testa
|
||||
if ( m_vCalcRotAx.size() >= 1 && m_vCalcRotAx[0].bHead) {
|
||||
// posizione e direzione primo asse rotante
|
||||
Point3d ptAx1 = m_vCalcRotAx[0].ptPos ;
|
||||
Vector3d vtAx1 = m_vCalcRotAx[0].vtDir ;
|
||||
// ruoto dati a riposo
|
||||
vtNew.Rotate( vtAx1, vAng[0]) ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
@@ -1084,20 +1095,32 @@ Machine::GetTipFromPositions( double dX, double dY, double dZ, const DBLVECTOR&
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machine::GetToolDirFromAngles( double dAngA, double dAngB, Vector3d& vtDir) const
|
||||
Machine::GetToolDirFromAngles( const DBLVECTOR& vAng, Vector3d& vtDir) const
|
||||
{
|
||||
DBLVECTOR vAng( 2) ; vAng[0] = dAngA ; vAng[1] = dAngB ;
|
||||
return GetDirection( m_vtCalcDir, vAng, vtDir) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machine::GetAuxDirFromAngles( double dAngA, double dAngB, Vector3d& vtDir) const
|
||||
Machine::GetAuxDirFromAngles( const DBLVECTOR& vAng, Vector3d& vtDir) const
|
||||
{
|
||||
DBLVECTOR vAng( 2) ; vAng[0] = dAngA ; vAng[1] = dAngB ;
|
||||
return GetDirection( m_vtCalcADir, vAng, vtDir) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machine::GetBackToolDirFromAngles( const DBLVECTOR& vAng, Vector3d& vtDir) const
|
||||
{
|
||||
return GetBackDirection( m_vtCalcDir, vAng, vtDir) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machine::GetBackAuxDirFromAngles( const DBLVECTOR& vAng, Vector3d& vtDir) const
|
||||
{
|
||||
return GetBackDirection( m_vtCalcADir, vAng, vtDir) ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machine::GetSccDir( int nSolCh, const Vector3d& vtDirA, Vector3d& vtDirScc) const
|
||||
|
||||
Reference in New Issue
Block a user