Files
EgtMachKernel/MachineStruConst.h
T
DarioS f70218a432 EgtMachKernel 2.4j1 :
- aggiunta possibilità di definire direzione principale di approccio per rinvio da sotto con massima deviazione angolare di 95deg.
2022-10-14 10:47:40 +02:00

144 lines
5.2 KiB
C++

//----------------------------------------------------------------------------
// 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 <string>
#include <vector>
//----------------------------------------------------------------------------
// 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<MuExit> 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<KinAxis> 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) ;