From fcaf15cbe16f008adcc7e66c647d3cada39bcd72 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Fri, 29 Dec 2023 13:08:21 +0100 Subject: [PATCH] EgtMachKernel : - in generazione CN e stima si imposta fase a 1 prima dell'inizio e al termine - in simulazione aggiunta gestione errore in evento OnToolSelect. --- Processor.cpp | 6 ++++++ Simulator.cpp | 12 ++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Processor.cpp b/Processor.cpp index aca3ace..4e2d77d 100644 --- a/Processor.cpp +++ b/Processor.cpp @@ -84,6 +84,9 @@ Processor::Run( const string& sOutFile, const string& sInfo) if ( ! VerifySetup()) return false ; + // imposto la fase iniziale come corrente + m_pMchMgr->SetCurrPhase( 1) ; + // evento inizio esecuzione bool bOk = true ; if ( ! OnStart()) { @@ -145,6 +148,9 @@ Processor::Run( const string& sOutFile, const string& sInfo) LOG_ERROR( GetEMkLogger(), "OnEnd error") ; } + // imposto la fase iniziale come corrente + m_pMchMgr->SetCurrPhase( 1) ; + return bOk ; } diff --git a/Simulator.cpp b/Simulator.cpp index d1cb8af..ca9762d 100644 --- a/Simulator.cpp +++ b/Simulator.cpp @@ -47,10 +47,12 @@ static const double MIN_STEP = 1.0 ; static const double MAX_STEP = 100.0 ; static const double MID_STEP = 50.0 ; static const double COLL_STEP = 10. ; +static const double SQ_COEFF_ROT_MOVE = 100. ; static const double COEFF_LIM = 0.999 ; static const double SAFEDIST_STD = 5.0 ; static const int ERR_OUTSTROKE = 1 ; static const int ERR_COLLISION = 11 ; +static const int ERR_TOOL_SEL = 21 ; //---------------------------------------------------------------------------- Simulator::Simulator( void) @@ -997,7 +999,7 @@ Simulator::ManageSingleMove( int& nStatus, double& dMove) double dSqDist = 0 ; for ( size_t i = 0 ; i < m_AxesName.size() ; ++ i) { // coefficiente moltiplicativo per differenziare assi lineari (primi 3) e rotanti (altri) - double dSqCoeff = (( i < 3) ? 1 : 100) ; + double dSqCoeff = (( i < 3) ? 1 : SQ_COEFF_ROT_MOVE) ; dSqDist += dSqCoeff * ( AxesEnd[i] - m_AxesVal[i]) * ( AxesEnd[i] - m_AxesVal[i]) ; } // Calcolo distanza di movimento eventuali assi ausiliari @@ -1006,7 +1008,7 @@ Simulator::ManageSingleMove( int& nStatus, double& dMove) if ( m_AuxAxesLink[i] != 0) continue ; // coefficiente moltiplicativo per differenziare assi lineari e rotanti - double dSqCoeff = ( m_AuxAxesLinear[i] ? 1 : 100) ; + double dSqCoeff = ( m_AuxAxesLinear[i] ? 1 : SQ_COEFF_ROT_MOVE) ; dSqDistAux += dSqCoeff * ( m_AuxAxesEnd[i] - m_AuxAxesVal[i]) * ( m_AuxAxesEnd[i] - m_AuxAxesVal[i]) ; } // Considero il massimo delle due distanze @@ -1188,7 +1190,7 @@ Simulator::ManageSingleMove( int& nStatus, double& dMove) double dSqDist = 0 ; for ( int i = 0 ; i < int( m_AuxAxesName.size()) ; ++ i) { // coefficiente moltiplicativo per differenziare assi lineari e rotanti - double dSqCoeff = ( m_AuxAxesLinear[i] ? 1 : 100) ; + double dSqCoeff = ( m_AuxAxesLinear[i] ? 1 : SQ_COEFF_ROT_MOVE) ; dSqDist += dSqCoeff * ( m_AuxAxesEnd[i] - m_AuxAxesVal[i]) * ( m_AuxAxesEnd[i] - m_AuxAxesVal[i]) ; } double dPrevCoeff = m_dCoeff ; @@ -1634,8 +1636,10 @@ Simulator::OnToolSelect( const string& sTool, const string& sHead, int nExit, co m_AuxAxesLink.emplace_back( 0) ; } } - else + else { bOk = false ; + nErr = ERR_TOOL_SEL ; + } } return ( bOk && nErr == 0) ;