EgtMachKernel 1.6n3 :

- prima versione della gestione delle fasi di lavorazione.
This commit is contained in:
Dario Sassi
2016-02-11 10:20:54 +00:00
parent 63f3492566
commit a8c34397be
30 changed files with 488 additions and 133 deletions
+16 -10
View File
@@ -15,6 +15,7 @@
#include "stdafx.h"
#include "Simulator.h"
#include "MachMgr.h"
#include "Disposition.h"
#include "Machining.h"
#include "MachiningConst.h"
#include "/EgtDev/Include/EMkToolConst.h"
@@ -70,13 +71,13 @@ Simulator::Start( void)
return false ;
// cerco la prima lavorazione valida
nOpId = m_pMchMgr->GetNextActiveOperation( nOpId) ;
Machining* pMch = dynamic_cast<Machining*>( m_pGeomDB->GetUserObj( nOpId)) ;
Machining* pMch = GetMachining( m_pGeomDB->GetUserObj( nOpId)) ;
while ( nOpId != GDB_ID_NULL) {
if ( IsValidMachiningType( m_pMchMgr->GetOperationType( nOpId)) &&
pMch != nullptr && ! pMch->IsEmpty())
break ;
nOpId = m_pMchMgr->GetNextActiveOperation( m_nOpId) ;
pMch = dynamic_cast<Machining*>( m_pGeomDB->GetUserObj( nOpId)) ;
pMch = GetMachining( m_pGeomDB->GetUserObj( nOpId)) ;
}
if ( nOpId == GDB_ID_NULL)
return false ;
@@ -125,13 +126,18 @@ Simulator::Move( int& nStatus)
// Se arrivato alla fine di una lavorazione, recupero la successiva valida
while ( m_nCLPathId == GDB_ID_NULL) {
m_nOpId = m_pMchMgr->GetNextActiveOperation( m_nOpId) ;
Machining* pMch = dynamic_cast<Machining*>( m_pGeomDB->GetUserObj( m_nOpId)) ;
while ( m_nOpId != GDB_ID_NULL) {
if ( IsValidMachiningType( m_pMchMgr->GetOperationType( m_nOpId)) &&
pMch != nullptr && ! pMch->IsEmpty())
Machining* pMch = GetMachining( m_pGeomDB->GetUserObj( m_nOpId)) ;
// se non è una lavorazione, verifico se disposizione con cambio di fase
if ( pMch == nullptr) {
Disposition* pDisp = GetDisposition( m_pGeomDB->GetUserObj( m_nOpId)) ;
if ( pDisp != nullptr)
m_pMchMgr->SetCurrPhase( pDisp->GetPhase()) ;
}
// lavorazione valida
else if ( ! pMch->IsEmpty())
break ;
m_nOpId = m_pMchMgr->GetNextActiveOperation( m_nOpId) ;
pMch = dynamic_cast<Machining*>( m_pGeomDB->GetUserObj( m_nOpId)) ;
}
// se non ce ne sono altre, sono alla fine
if ( m_nOpId == GDB_ID_NULL) {
@@ -151,7 +157,7 @@ Simulator::Move( int& nStatus)
}
// Cerco prossima posizione su interpolazione corrente
CamData* pCamData = dynamic_cast<CamData*>( m_pGeomDB->GetUserObj( m_nEntId)) ;
CamData* pCamData = GetCamData( m_pGeomDB->GetUserObj( m_nEntId)) ;
if ( pCamData == nullptr) {
nStatus = MCH_SIM_ERR ;
return false ;
@@ -231,7 +237,7 @@ Simulator::GetToolInfo( string& sName, double& dSpeed)
return false ;
sName = m_sTool ;
// Recupero speed
Machining* pMch = dynamic_cast<Machining*>( m_pGeomDB->GetUserObj( m_nOpId)) ;
Machining* pMch = GetMachining( m_pGeomDB->GetUserObj( m_nOpId)) ;
return ( pMch != nullptr && pMch->GetParam( MPA_TOOLSPEED, dSpeed)) ;
}
@@ -243,7 +249,7 @@ Simulator::GetMoveInfo( int& nGmove, double& dFeed)
if ( m_pMchMgr == nullptr || m_pGeomDB == nullptr)
return false ;
// Recupero il movimento corrente
CamData* pCamData = dynamic_cast<CamData*>( m_pGeomDB->GetUserObj( m_nEntId)) ;
CamData* pCamData = GetCamData( m_pGeomDB->GetUserObj( m_nEntId)) ;
if ( pCamData == nullptr)
return false ;
// Assegno feed
@@ -288,7 +294,7 @@ Simulator::UpdateTool( bool bForced)
{
// Recupero l'utensile della lavorazione corrente
string sTool ;
Machining* pMch = dynamic_cast<Machining*>( m_pGeomDB->GetUserObj( m_nOpId)) ;
Machining* pMch = GetMachining( m_pGeomDB->GetUserObj( m_nOpId)) ;
if ( pMch == nullptr || ! pMch->GetParam( MPA_TOOL, sTool))
return false ;
if ( ! m_pMchMgr->TdbSetCurrTool( sTool))