//---------------------------------------------------------------------------- // EgalTech 2015-2015 //---------------------------------------------------------------------------- // File : Simulator.h Data : 19.10.15 Versione : 1.6j2 // Contenuto : Dichiarazione della classe Simulator. // // // // Modifiche : 19.10.15 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "CamData.h" #include "/EgtDev/Include/EMkSimuGenConst.h" class MachMgr ; class IGeomDB ; class Machine ; //---------------------------------------------------------------------------- class Simulator { public : Simulator( void) ; ~Simulator( void) ; bool Init( MachMgr* pMchMgr) ; bool Start( void) ; bool Move( int& nStatus) ; bool GetAxisInfoPos( int nI, std::string& sName, double& dVal) ; bool GetToolInfo( std::string& sName, double& dSpeed) ; bool GetMoveInfo( int& nGmove, double& dFeed) ; bool SetStep( double dStep) ; bool GoHome( void) ; bool Stop( void) ; private : bool UpdateTool( bool bForced = false) ; bool UpdateAxes( void) ; private : bool OnOperationEnd( void) ; bool OnDispositionStart( int nOpId, int nOpInd, int nPhase, bool bEmpty) ; bool OnDispositionEnd( void) ; bool OnMachiningStart( int nOpId, int nOpInd) ; bool OnMachiningEnd( void) ; bool OnPathStart( int nClPathId, int nClPathInd) ; bool OnPathEnd( void) ; bool OnMoveStart( void) ; bool OnMoveEnd( void) ; bool OnResetMachine( void) ; private : MachMgr* m_pMchMgr ; // puntatore al gestore di tutte le lavorazioni IGeomDB* m_pGeomDB ; // puntatore al DB geometrico Machine* m_pMachine ; // puntatore alla macchina double m_dStep ; // lunghezza di riferimento per la velocità di simulazione int m_nOpId ; // identificativo della operazione (lavoraz.) corrente int m_nOpInd ; // contatore della operazione (lavoraz.) corrente int m_nCLPathId ; // identificativo del percorso di lavoro corrente int m_nCLPathInd ; // contatore del percorso di lavoro corrente nell'operazione int m_nEntId ; // identificativo dell'entità corrente int m_nEntInd ; // contatore dell'entità corrente nel percorso di lavoro double m_dCoeff ; // coefficiente di movimento corrente std::string m_sTool ; // nome dell'utensile corrente STRVECTOR m_AxesName ; // nomi degli assi macchina attivi DBLVECTOR m_AxesVal ; // valori degli assi macchina all'inizio del movimento corrente } ;