//---------------------------------------------------------------------------- // EgalTech 2015-2015 //---------------------------------------------------------------------------- // File : MachineStruConst.h Data : 25.05.15 Versione : 1.6e7 // Contenuto : Strutture e costanti di macchina. // // // // Modifiche : 25.05.15 DS Creazione modulo. // // //---------------------------------------------------------------------------- #pragma once #include "/EgtDev/Include/EGkPoint3d.h" #include "/EgtDev/Include/EGkGdbConst.h" #include #include //---------------------------------------------------------------------------- // Corsa utile di un asse union STROKE { struct { double Min ; double Max ; } ; double v[2] ; } ; //---------------------------------------------------------------------------- // Dati di uscita struct MuExit { Point3d ptPos ; Vector3d vtTDir ; MuExit( const Point3d& ptP, const Vector3d& vtTD) : ptPos( ptP), vtTDir( vtTD) {} } ; typedef std::vector MUEXITVECTOR ; //---------------------------------------------------------------------------- // Dati asse per catena cinematica struct KinAxis { int nGrpId ; bool bLinear ; bool bHead ; int nInd ; Point3d ptPos ; Vector3d vtDir ; STROKE stroke ; double dHomeVal ; bool bFixed ; double dFixVal ; KinAxis( void) : nGrpId( GDB_ID_NULL), bLinear( true), bHead( true), nInd( 0), ptPos(), vtDir(), dHomeVal( 0), bFixed( false), dFixVal( 0) { stroke.Min = 0 ; stroke.Max = 0 ; } } ; typedef std::vector KINAXISVECTOR ; //---------------------------------------------------------------------------- // Dati extra corsa di un asse struct OutStroke { std::string sAxName ; std::string sAxToken ; bool bLinear ; double dExtra ; std::string sAuxInfo ; OutStroke( void) : bLinear( false), dExtra( 0) {} void Clear( void) { sAxName.clear() ; sAxToken.clear() ; bLinear = false ; dExtra = 0 ; sAuxInfo.clear() ; } } ; //---------------------------------------------------------------------------- // Tipo di tavola della macchina enum MchTabType { MCH_TT_NONE = 0, MCH_TT_FLAT = 1} ; //---------------------------------------------------------------------------- // Tipo di assi della macchina enum MchAxisType { MCH_AT_NONE = 0, MCH_AT_LINEAR = 1, MCH_AT_ROTARY = 2} ; //---------------------------------------------------------------------------- // Tipo di testa della macchina enum MchHeadType { MCH_HT_NONE = 0, MCH_HT_STD = 1, MCH_HT_MULTI = 2, MCH_HT_SPECIAL = 3} ; //---------------------------------------------------------------------------- // Identificativo iniziale riferimenti di tavola const std::string MCH_TREF = "R" ; // Identificativo iniziale area di tavola const std::string MCH_TAREA ="A" ; //---------------------------------------------------------------------------- // Identificativo vettore ausiliario di testa const std::string MCH_AUX_VECT = "AV" ; // Identificativo iniziale gruppo uscita di teste const std::string MCH_EXIT = "T" ; //---------------------------------------------------------------------------- // Info di testa per forzare risalita alla rotazione const std::string MCH_ZMAXONROT = "ZMAXONROT" ; // Info di testa per una extra risalita in Z const std::string MCH_ZEXTRA = "ZEXTRA" ; // Info di testa per abilitare rotazione a Zmax const std::string MCH_ROTATZMAX = "ROTATZMAX" ; // Info di testa per dichiarazione Home Z in basso const std::string MCH_ZHOMEDOWN = "ZHOMEDOWN" ; // Info di testa per dichiarazione Da Sopra const std::string MCH_ABOVE = "ABOVE" ; // Info di testa per una variazione alla Z di sicurezza globale const std::string MCH_ZSAFEDELTA = "ZSAFEDELTA" ; // Info di tavola per dichiarare che va considerata come basculante const std::string MCH_TILTINGLIKE = "TiltingLike" ; //---------------------------------------------------------------------------- // Dati aggregato rotante da sotto struct AggrBottom { int nType ; double dDMax ; double dEncH ; double dEncV ; Vector3d vtMDir ; AggrBottom( void) : nType( 0), dDMax( 0), dEncH( 0), dEncV( 0) {} void Clear( void) { nType = 0 ; dDMax= 0 ; dEncH = 0 ; dEncV = 0 ; vtMDir = V_NULL ; } } ; //---------------------------------------------------------------------------- // Info in rinvio rotante da sotto con dichiarazione dello stesso const std::string MCH_AGB_TYPE = "AGB_TYPE" ; // Info in rinvio rotante da sotto con massima distanza di lavorazione dal bordo const std::string MCH_AGB_DMAX = "AGB_DMAX" ; // Info in rinvio rotante da sotto con ingombro orizzontale const std::string MCH_AGB_ENCH = "AGB_ENCH" ; // Info in rinvio rotante da sotto con ingombro verticale const std::string MCH_AGB_ENCV = "AGB_ENCV" ; // Info in rinvio rotante da sotto per definire la direzione di approccio preferenziale (consentito delta max di 95deg) const std::string MCH_AGB_MDIR = "AGB_MDIR" ; const double MCH_AGB_DELTAMAX_MDIR = cos( 95 * DEGTORAD) ;