From 6e6050ab13deb8c705f816102619f1d172992446 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Wed, 12 Mar 2025 15:29:28 +0100 Subject: [PATCH] EgtMachKernel : - in FiveAxisMilling aggiunta inizializzazione m_bRunning alla creazione dell'oggetto - nel controllo punto medio per calcolo angoli macchina accetto di non poter mediare direzioni Correzione. --- FiveAxisMilling.cpp | 1 + Operation.cpp | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/FiveAxisMilling.cpp b/FiveAxisMilling.cpp index dc03fd2..5c4efbd 100644 --- a/FiveAxisMilling.cpp +++ b/FiveAxisMilling.cpp @@ -219,6 +219,7 @@ FiveAxisMilling::FiveAxisMilling( void) m_TParams.m_sHead = "*" ; m_nStatus = MCH_ST_TO_VERIFY ; m_nMills = 0 ; + m_bRunning = false ; } //---------------------------------------------------------------------------- diff --git a/Operation.cpp b/Operation.cpp index d93a1cb..b89e409 100644 --- a/Operation.cpp +++ b/Operation.cpp @@ -1994,7 +1994,8 @@ Operation::CalculateClPathAxesValues( int nClPathId, int nLinAxes, int nRotAxes, if ( ! VerifyLineMidPoint( ptPrec, vtDirPrec, vtAuxPrec, vtCorrPrec, vAxPrec, ptP, vtDir, vtAux, vtCorr, vAxVal, 0, nEntId, dRot1W, nMoveType, bMidAdded, bAxesError)) { - LOG_ERROR( GetEMkLogger(), "Error : VerifyLineMidPoint of CalculateClPathAxesValues failed") + string sOut = "Error : VerifyLineMidPoint of CalculateClPathAxesValues failed (EntId=" + ToString( nEntId) + ")" ; + LOG_ERROR( GetEMkLogger(), sOut.c_str()) return false ; } if ( bAxesError) { @@ -2367,15 +2368,16 @@ Operation::VerifyLineMidPoint( const Point3d& ptPrec, const Vector3d& vtDirPrec, } Vector3d vtCorrMid = Media( vtCorrPrec, vtCorr) ; if ( ! vtCorrPrec.IsSmall() && ! vtCorr.IsSmall() && ! vtCorrMid.Normalize()) { - // riferimenti precedente e sul medio da direzioni fresa (Z) e ausiliaria (X) + // assegno il versore correzione precedente + vtCorrMid = vtCorrPrec ; + // se possibile, cerco di migliorarlo considerando i rif. prec. e sul medio da direzioni fresa (Z) e ausiliaria (X) Frame3d refPrec, refMid ; - if ( ! refPrec.Set( ORIG, vtDirPrec, vtAuxPrec) || - ! refMid.Set( ORIG, vtDirMid, vtAuxMid)) - return ( nMoveType == 0) ; - // versore correzione in locale al precente coincide con quello in locale al corrente - vtCorrMid = vtCorrPrec ; - vtCorrMid.ToLoc( refPrec) ; - vtCorrMid.ToGlob( refMid) ; + if ( refPrec.Set( ORIG, vtDirPrec, vtAuxPrec) && + refMid.Set( ORIG, vtDirMid, vtAuxMid)) { + // versore correzione in locale al precente coincide con quello in locale al corrente + vtCorrMid.ToLoc( refPrec) ; + vtCorrMid.ToGlob( refMid) ; + } } // inserisco nuova entità e modifico vecchia int nMidEntId = m_pGeomDB->Copy( nEntId, GDB_ID_NULL, nEntId, GDB_BEFORE) ;