diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 24aa3ee..1ebc413 100644 Binary files a/EgtMachKernel.rc and b/EgtMachKernel.rc differ diff --git a/MachMgr.h b/MachMgr.h index 9839507..057033f 100644 --- a/MachMgr.h +++ b/MachMgr.h @@ -316,12 +316,12 @@ class MachMgr : public IMachMgr int& nStat, DBLVECTOR& vAng1, DBLVECTOR& vAng2) const ; bool GetCalcPositions( const Point3d& ptP, double dAngA, double dAngB, int& nStat, double& dX, double& dY, double& dZ) const override ; - bool GetCalcPositions( const Point3d& ptP, DBLVECTOR& vAng, - int& nStat, double& dX, double& dY, double& dZ) const ; + bool GetCalcPositions( const Point3d& ptP, const DBLVECTOR& vAng, + int& nStat, double& dX, double& dY, double& dZ) const override ; bool GetCalcTipFromPositions( double dX, double dY, double dZ, double dAngA, double dAngB, bool bOverall, bool bBottom, Point3d& ptTip) const override ; bool GetCalcTipFromPositions( double dX, double dY, double dZ, const DBLVECTOR& vAng, - bool bOverall, bool bBottom, Point3d& ptTip) const ; + bool bOverall, bool bBottom, Point3d& ptTip) const override ; bool GetCalcToolDirFromAngles( const DBLVECTOR& vAng, Vector3d& vtDir) const override ; bool GetCalcAuxDirFromAngles( const DBLVECTOR& vAng, Vector3d& vtDir) const override ; bool GetNearestAngleInStroke( int nInd, double dAngRef, double& dAng) const override ; diff --git a/MachMgrMachines.cpp b/MachMgrMachines.cpp index e2a3e37..0f17c74 100644 --- a/MachMgrMachines.cpp +++ b/MachMgrMachines.cpp @@ -599,13 +599,14 @@ bool MachMgr::GetCalcPositions( const Point3d& ptP, double dAngA, double dAngB, int& nStat, double& dX, double& dY, double& dZ) const { + DBLVECTOR vAng( 2) ; vAng[0] = dAngA ; vAng[1] = dAngB ; Machine* pMch = GetCurrMachine() ; - return ( ( pMch != nullptr) ? pMch->GetPositions( ptP, dAngA, dAngB, nStat, dX, dY, dZ) : false) ; + return ( ( pMch != nullptr) ? pMch->GetPositions( ptP, vAng, nStat, dX, dY, dZ) : false) ; } //---------------------------------------------------------------------------- bool -MachMgr::GetCalcPositions( const Point3d& ptP, DBLVECTOR& vAng, +MachMgr::GetCalcPositions( const Point3d& ptP, const DBLVECTOR& vAng, int& nStat, double& dX, double& dY, double& dZ) const { Machine* pMch = GetCurrMachine() ; diff --git a/Machine.h b/Machine.h index c595673..9f40508 100644 --- a/Machine.h +++ b/Machine.h @@ -121,8 +121,6 @@ class Machine int& nStat, double& dAngA1, double& dAngB1, double& dAngA2, double& dAngB2) const ; bool GetAngles( const Vector3d& vtDirT, const Vector3d& vtDirA, int& nStat, DBLVECTOR& vAng1, DBLVECTOR& vAng2) const ; - bool GetPositions( const Point3d& ptP, double dA, double dB, - int& nStat, double& dX, double& dY, double& dZ) const ; bool GetPositions( const Point3d& ptP, const DBLVECTOR& vAng, int& nStat, double& dX, double& dY, double& dZ) const ; bool GetHeadOffsetDelta( const DBLVECTOR& vAng, diff --git a/MachineCalc.cpp b/MachineCalc.cpp index b139aeb..3c13a17 100644 --- a/MachineCalc.cpp +++ b/MachineCalc.cpp @@ -968,15 +968,6 @@ Machine::GetMyAngles( const Vector3d& vtDirT, const Vector3d& vtDirA, return true ; } -//---------------------------------------------------------------------------- -bool -Machine::GetPositions( const Point3d& ptP, double dAngA, double dAngB, - int& nStat, double& dX, double& dY, double& dZ) const -{ - DBLVECTOR vAng( 2) ; vAng[0] = dAngA ; vAng[1] = dAngB ; - return GetPositions( ptP, vAng, nStat, dX, dY, dZ) ; -} - //---------------------------------------------------------------------------- bool Machine::GetPositions( const Point3d& ptP, const DBLVECTOR& vAng, @@ -985,6 +976,10 @@ Machine::GetPositions( const Point3d& ptP, const DBLVECTOR& vAng, // la posizione deve essere espressa rispetto allo ZERO MACCHINA // il punto è dato rispetto alla posizione home della tavola + // verifico che siano stati assegnati gli angoli necessari, altrimenti errore + if ( vAng.size() < m_vCalcRotAx.size()) + return false ; + // aggiorno punto di lavoro mediante ciclo diretto sugli assi di tavola Point3d ptW = ptP ; // annullo la posizione home degli assi lineari @@ -1037,6 +1032,10 @@ Machine::GetHeadOffsetDelta( const DBLVECTOR& vAng, { // ovviamente tutto è espresso nel riferimento ZERO MACCHINA + // verifico che siano stati assegnati gli angoli necessari, altrimenti errore + if ( vAng.size() < m_vCalcRotAx.size()) + return false ; + // aggiorno posizione e direzione fresa su testa a riposo mediante ciclo inverso sugli assi di testa Point3d ptPosH = m_ptCalcPos ; Vector3d vtDirH = m_vtCalcDir ;