//---------------------------------------------------------------------------- // 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& sToken, bool& bLinear, double& dVal) const ; bool GetToolInfo( std::string& sName, double& dSpeed) const ; bool GetMoveInfo( int& nGmove, double& dFeed) const ; bool SetStep( double dStep) ; bool GoHome( void) ; bool Stop( void) ; private : bool UpdateTool( bool bForced = false) ; bool UpdateAxes( void) ; bool UpdateAxesPos( void) ; private : bool OnOperationEnd( void) ; bool OnDispositionStarting( int nOpId, int nOpInd, int nPhase, const std::string& sTable, const Point3d& ptOri1, bool bEmpty) ; bool OnDispositionStart( int nOpId, int nOpInd, int nPhase, const std::string& sTable, const Point3d& ptOri1, bool bEmpty) ; bool OnDispositionEnd( void) ; bool OnToolSelect( const std::string& sTool, const std::string& sHead, int nExit, const std::string& sTcPos) ; bool OnToolDeselect( const std::string& sNextHead, int nNextExit, const std::string& sNextTcPos) ; bool OnMachiningStart( int nOpId, int nOpInd) ; bool OnMachiningEnd( void) ; bool OnPathStart( int nClPathId, int nClPathInd, const Point3d& ptStart, const Vector3d& vtExtr) ; bool OnPathEnd( void) ; bool OnMoveStart( const CamData* pCamData) ; 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 STRVECTOR m_AxesToken ; // token degli assi macchina attivi BOOLVECTOR m_AxesLinear ; // flag di lineare degli assi macchina attivi DBLVECTOR m_AxesVal ; // valori degli assi macchina all'inizio del movimento corrente STRVECTOR m_AuxAxesName ; // nomi degli assi macchina ausiliari abilitati STRVECTOR m_AuxAxesToken ; // token degli assi macchina ausiliari abilitati BOOLVECTOR m_AuxAxesLinear ; // flag di lineare degli assi macchina ausiliari abilitati DBLVECTOR m_AuxAxesVal ; // valori degli assi macchina ausiliari all'inizio del movimento corrente DBLVECTOR m_AuxAxesEnd ; // valori degli assi macchina ausiliari alla fine del movimento corrente } ;