EgtMachKernel 1.8f2 :
- aggiunte Update di lavorazioni e disposizione per ricalcolo assi macchina ecollegamenti.
This commit is contained in:
+65
-45
@@ -1036,6 +1036,10 @@ Disposition::SpecialApply( bool bRecalc)
|
||||
m_bSomeByHand = false ;
|
||||
m_sTcPos.clear() ;
|
||||
|
||||
// verifico MachMgr e GeomDB
|
||||
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
|
||||
return false ;
|
||||
|
||||
// costanti
|
||||
static const string EMC_VAR = "EMC" ; // tabella variabili locali per calcolo
|
||||
static const string EVAR_TABNAME = ".TABNAME" ; // IN (string) nome della tavola macchina
|
||||
@@ -1054,54 +1058,70 @@ Disposition::SpecialApply( bool bRecalc)
|
||||
if ( pMch == nullptr)
|
||||
return false ;
|
||||
|
||||
// se non esiste la funzione, non devo fare alcunché
|
||||
if ( ! pMch->LuaExistsFunction( ON_SPECIAL_APPLY))
|
||||
return true ;
|
||||
|
||||
// eseguo l'azione
|
||||
if ( pMch->LuaExistsFunction( ON_SPECIAL_APPLY)) {
|
||||
bool bOk = true ;
|
||||
int nErr = 99 ;
|
||||
// verifico tavola
|
||||
bOk = ( m_bTabOk || SetTable( m_sTabName)) ;
|
||||
// imposto valori parametri
|
||||
bOk = bOk && pMch->LuaCreateGlobTable( EMC_VAR) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TABNAME, m_sTabName) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_DISPID, m_nOwnerId) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_PHASE, GetPhase()) ;
|
||||
// eseguo
|
||||
bOk = bOk && pMch->LuaCallFunction( ON_SPECIAL_APPLY, false) ;
|
||||
// recupero valori parametri obbligatori
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_ERROR, nErr) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_HEAD, m_sHead) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_EXIT, m_nExit) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_SHIFTS, m_nShifts) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_SBH, m_bSomeByHand) ;
|
||||
// recupero valori parametri opzionali
|
||||
if ( bOk)
|
||||
pMch->LuaGetGlobVar( EMC_VAR + EVAR_TCPOS, m_sTcPos) ;
|
||||
// reset
|
||||
bOk = bOk && pMch->LuaResetGlobVar( EMC_VAR) ;
|
||||
// segnalo errori
|
||||
if ( nErr != 0) {
|
||||
bOk = false ;
|
||||
m_nShifts = - 1 ;
|
||||
string sOut = " Error in " + ON_SPECIAL_APPLY + " (" + ToString( nErr) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2006, sOut) ;
|
||||
}
|
||||
// se disposizione vuota o errore, esco
|
||||
if ( m_nShifts <= 0 || ! bOk)
|
||||
return bOk ;
|
||||
// calcolo assi macchina
|
||||
if ( ! CalculateAxesValues( "")) {
|
||||
m_pMchMgr->SetLastError( 2007, "Error in Disposition : axes values not calculable") ;
|
||||
return false ;
|
||||
}
|
||||
// gestione movimenti all'inizio di ogni singolo percorso di lavorazione e alla fine di tutti
|
||||
if ( ! AdjustStartEndMovements()) {
|
||||
m_pMchMgr->SetLastError( 2008, "Error in Disposition : link movements not calculable") ;
|
||||
return false ;
|
||||
}
|
||||
bool bOk = true ;
|
||||
int nErr = 99 ;
|
||||
// verifico tavola
|
||||
bOk = ( m_bTabOk || SetTable( m_sTabName)) ;
|
||||
// imposto valori parametri
|
||||
bOk = bOk && pMch->LuaCreateGlobTable( EMC_VAR) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_TABNAME, m_sTabName) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_DISPID, m_nOwnerId) ;
|
||||
bOk = bOk && pMch->LuaSetGlobVar( EMC_VAR + EVAR_PHASE, GetPhase()) ;
|
||||
// eseguo
|
||||
bOk = bOk && pMch->LuaCallFunction( ON_SPECIAL_APPLY, false) ;
|
||||
// recupero valori parametri obbligatori
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_ERROR, nErr) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_HEAD, m_sHead) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_EXIT, m_nExit) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_SHIFTS, m_nShifts) ;
|
||||
bOk = bOk && pMch->LuaGetGlobVar( EMC_VAR + EVAR_SBH, m_bSomeByHand) ;
|
||||
// recupero valori parametri opzionali
|
||||
if ( bOk)
|
||||
pMch->LuaGetGlobVar( EMC_VAR + EVAR_TCPOS, m_sTcPos) ;
|
||||
// reset
|
||||
bOk = bOk && pMch->LuaResetGlobVar( EMC_VAR) ;
|
||||
// segnalo errori ed esco
|
||||
if ( ! bOk || nErr != 0) {
|
||||
m_nShifts = - 1 ;
|
||||
string sOut = " Error in " + ON_SPECIAL_APPLY + " (" + ToString( nErr) + ")" ;
|
||||
m_pMchMgr->SetLastError( 2006, sOut) ;
|
||||
return false ;
|
||||
}
|
||||
|
||||
// eseguo aggiornamento assi macchina e collegamento con operazione precedente
|
||||
return SpecialUpdate() ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Disposition::SpecialUpdate( void)
|
||||
{
|
||||
// verifico MachMgr e GeomDB
|
||||
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
|
||||
return false ;
|
||||
|
||||
// se disposizione vuota, esco
|
||||
if ( m_nShifts <= 0) {
|
||||
if ( m_nShifts < 0)
|
||||
LOG_INFO( GetEMkLogger(), "Warning in Disposition : No shifts")
|
||||
return true ;
|
||||
}
|
||||
else
|
||||
return true ;
|
||||
// calcolo assi macchina
|
||||
if ( ! CalculateAxesValues( "")) {
|
||||
m_pMchMgr->SetLastError( 2007, "Error in Disposition : axes values not calculable") ;
|
||||
return false ;
|
||||
}
|
||||
// gestione movimenti all'inizio di ogni singolo percorso di lavorazione e alla fine di tutti
|
||||
if ( ! AdjustStartEndMovements()) {
|
||||
m_pMchMgr->SetLastError( 2008, "Error in Disposition : link movements not calculable") ;
|
||||
return false ;
|
||||
}
|
||||
return true ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user