77c476b1dc
- in simulazione aggiunta possibilità di gestire extra-corse di assi ausiliari in OnMoveStart - aggiunta funzione lua EmtSetOutstrokeInfo.
116 lines
6.7 KiB
C++
116 lines
6.7 KiB
C++
//----------------------------------------------------------------------------
|
|
// 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( bool bFirst) ;
|
|
bool Move( int& nStatus) ;
|
|
bool GetAxisInfoPos( int nI, std::string& sName, std::string& sToken, bool& bLinear, double& dVal) const ;
|
|
bool GetToolInfo( std::string& sName, double& dSpeed) const ;
|
|
bool GetOperationInfo( std::string& sName, int& nType) const ;
|
|
bool GetMoveInfo( int& nGmove, double& dFeed) const ;
|
|
bool SetStep( double dStep) ;
|
|
bool SetUiStatus( int nUiStatus) ;
|
|
bool GoHome( void) ;
|
|
bool Stop( void) ;
|
|
|
|
private :
|
|
bool UpdateTool( bool bFirst = false) ;
|
|
bool UpdateAxes( void) ;
|
|
bool UpdateAxesPos( void) ;
|
|
bool ResetAxes( void) ;
|
|
bool ResetAuxAxes( void) ;
|
|
|
|
private :
|
|
bool VerifySetup( void) ;
|
|
bool FindAndManageOperationStart( bool bStart, bool bFirst, int& nStatus) ;
|
|
bool ManageOperationEnd( int& nStatus) ;
|
|
bool FindAndManagePathStart( int& nStatus) ;
|
|
bool ManagePathEnd( int& nStatus) ;
|
|
bool ManagePathStartAux( int& nStatus) ;
|
|
bool ManagePathEndAux( int& nStatus) ;
|
|
bool ManageMove( int& nStatus) ;
|
|
bool GetHeadCurrPosDirAux( Point3d& ptH, Vector3d& vtH, Vector3d& vtA) ;
|
|
bool ExecVmillOnLine( const Point3d& ptHi, const Vector3d& vtHi, const Vector3d& vtAi, const Frame3d& frVzmI,
|
|
const Point3d& ptHf, const Vector3d& vtHf, const Vector3d& vtAf, const Frame3d& frVzmF) ;
|
|
bool Stopped( void)
|
|
{ return ( m_nUiStatus == MCH_UISIM_STOP) ; }
|
|
bool OnStart( bool bFirst) ;
|
|
bool OnEnd( void) ;
|
|
bool OnDispositionStarting( int nOpId, int nOpInd, int nPhase,
|
|
const std::string& sTable, const Point3d& ptOri1, bool bEmpty, bool bSomeByHand) ;
|
|
bool OnDispositionStart( int nOpId, int nOpInd, int nPhase,
|
|
const std::string& sTable, const Point3d& ptOri1, bool bEmpty, bool bSomeByHand) ;
|
|
bool OnDispositionEnd( void) ;
|
|
bool OnToolSelect( const std::string& sTool, const std::string& sHead, int nExit, const std::string& sTcPos, bool bFirst) ;
|
|
bool OnToolDeselect( const std::string& sNextTool, const std::string& sNextHead, int nNextExit, const std::string& sNextTcPos) ;
|
|
bool OnMachiningStart( int nOpId, int nOpInd, const Point3d& ptMin, const Point3d& ptMax) ;
|
|
bool OnMachiningEnd( void) ;
|
|
bool OnPathStartAux( int nInd, const std::string& sAS) ;
|
|
bool OnPathEndAux( int nInd, const std::string& sAE) ;
|
|
bool OnPathStart( int nClPathId, int nClPathInd, int nAS, const Point3d& ptStart, const Point3d& ptEnd,
|
|
const Vector3d& vtExtr, const Point3d& ptMin, const Point3d& ptMax, double dElev) ;
|
|
bool OnPathEnd( int nAE) ;
|
|
bool OnMoveStart( const CamData* pCamData, int& nErr) ;
|
|
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_nUiStatus ; // stato simulazione a livello utente
|
|
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 esecuzione del movimento corrente (0...1)
|
|
int m_nAuxSTot ; // numero totale movimenti ausiliari di inizio percorso
|
|
int m_nAuxSInd ; // indice del movimento ausiliario di inizio percorso corrente
|
|
int m_nAuxETot ; // numero totale movimenti ausiliari di fine percorso
|
|
int m_nAuxEInd ; // indice del movimento ausiliario di fine percorso corrente
|
|
std::string m_sTool ; // nome dell'utensile corrente
|
|
int m_nVmId ; // identificativo dell'oggetto Zmap per Virtual Milling
|
|
double m_dVmTdOffs ; // offset utensile in direzione principale per VM
|
|
double m_dVmAdOffs ; // offset utensile in direzione ausiliaria per VM
|
|
bool m_bEnabAxes ; // flag abilitazione movimento assi attivi
|
|
STRVECTOR m_AxesName ; // nomi degli assi macchina attivi
|
|
STRVECTOR m_AxesToken ; // token degli assi macchina attivi
|
|
BOOLVECTOR m_AxesInvert ; // flag di asse con verso invertito
|
|
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_AuxAxesInvert ; // flag di asse con verso invertito 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
|
|
} ;
|