From aed3ebe4d171b176bbee4426ecfc0b85e1b3a255 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sat, 14 Nov 2020 08:07:52 +0000 Subject: [PATCH] EgtMachKernel 2.2k3 : - in interfaccia aggiunta funzione GetCalcTipFromPositions con vettore angoli - in interfaccia corretta funzione GetCalcPositions con vettore angoli - migliorato controllo angoli dati rispetto ad assi rotanti. --- EgtMachKernel.rc | Bin 11782 -> 11782 bytes MachMgr.h | 6 +++--- MachMgrMachines.cpp | 5 +++-- Machine.h | 2 -- MachineCalc.cpp | 17 ++++++++--------- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 24aa3eea09f32b0a4e75402e2798ff67e76ef556..1ebc4139b14809b93d92a2a8469ddbdacb120828 100644 GIT binary patch delta 97 zcmZpRX^YwLhmFyA^ItYwW=7-5j>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHPhB8F delta 97 zcmZpRX^YwLhmFx_^ItYwW=5mQj>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHP01iS 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 ;