Files
Include/EMkMachiningConst.h
T
Dario Sassi d2bc22a9c3 Include :
- aggiunta costante SURFFIN_SUB_PROJECT.
2025-01-20 10:49:57 +01:00

432 lines
18 KiB
C

//----------------------------------------------------------------------------
// EgalTech 2015-2025
//----------------------------------------------------------------------------
// File : EmkMachiningConst.h Data : 20.01.25 Versione : 2.7a1
// Contenuto : Costanti delle lavorazioni.
//
//
//
// Modifiche : 22.06.15 DS Creazione modulo.
// 03.02.17 DS Agg. Chiseling.
// 25.05.19 DS Agg. SurfRoughing e SurfFinishing.
// 03.06.20 DS Agg. MPA_TABMIN e MPA_TABMAX.
// 09.11.20 DS Agg. MPA_SIDEANGFEED e MPA_STEPLAST.
// 04.02.22 DS Agg. MPA_EPICYCLESRAD e MPA_EPICYCLESDIST.
// 06.09.23 DS Agg. 5AxMachining.
// 29.03.24 DS Agg. MGP_APPROXLINTOL.
// 04.12.24 ES Agg. SURFFIN_SUB_Z_CONST e SURFFIN_SUB_OPTIMAL.
// 20.01.25 ES Agg. SURFFIN_SUB_PROJECT.
//
//----------------------------------------------------------------------------
#pragma once
#include "\EgtDev\Include\EMkOperationConst.h"
//----------------------------------------------------------------------------
// Costanti famiglie di parametri generali ( i primi 12 bit (0-4095) restano liberi)
const int MGP_BOOL = 0x1000 ;
const int MGP_INT = 0x2000 ;
const int MGP_DOU = 0x4000 ;
const int MGP_STR = 0x8000 ;
// Costanti tipo parametri generali delle lavorazioni
enum MgpType { MGP_NONE = 0,
MGP_COMP3A = ( MGP_BOOL + 0),
MGP_COMP5A = ( MGP_BOOL + 1),
MGP_SPLITARCS = ( MGP_INT + 0),
MGP_SAFEZ = ( MGP_DOU + 0),
MGP_EXTRALONCUTREG = ( MGP_DOU + 1),
MGP_EXTRARONDRIREG = ( MGP_DOU + 2),
MGP_HOLEDIAMTOLER = ( MGP_DOU + 3),
MGP_EXTSAWARCMINRAD = ( MGP_DOU + 4),
MGP_INTSAWARCMAXSIDEANG =( MGP_DOU + 5),
MGP_SAFEAGGRBOTTZ = ( MGP_DOU + 6),
MGP_MAXDEPTHSAFE = ( MGP_DOU + 7),
MGP_APPROXLINTOL = ( MGP_DOU + 8)} ;
//----------------------------------------------------------------------------
// Costanti per tipologia di split arcs
enum { SPLAR_NEVER = 0,
SPLAR_GEN_PLANE = 1,
SPLAR_NO_XY_PLANE = 2,
SPLAR_ALWAYS = 3} ;
//----------------------------------------------------------------------------
// Tipologie di lavorazioni (derivano da tipologie di operazioni)
enum MachiningType {
MT_NONE = OPER_NULL,
MT_DRILLING = OPER_DRILLING,
MT_SAWING = OPER_SAWING,
MT_MILLING = OPER_MILLING,
MT_POCKETING = OPER_POCKETING,
MT_MORTISING = OPER_MORTISING,
MT_SAWROUGHING = OPER_SAWROUGHING,
MT_SAWFINISHING = OPER_SAWFINISHING,
MT_GENMACHINING = OPER_GENMACHINING,
MT_CHISELING = OPER_CHISELING,
MT_SURFROUGHING = OPER_SURFROUGHING,
MT_SURFFINISHING = OPER_SURFFINISHING,
MT_WATERJETTING = OPER_WATERJETTING,
MT_FIVEAXISMILLING = OPER_FIVEAXISMILLING
} ;
//----------------------------------------------------------------------------
// Costanti famiglie di parametri ( i primi 12 bit (0-4095) restano liberi)
const int MPA_BOOL = 0x1000 ;
const int MPA_INT = 0x2000 ;
const int MPA_DOU = 0x4000 ;
const int MPA_STR = 0x8000 ;
// Costanti tipo parametri delle lavorazioni
enum MpaType { MPA_NONE = 0,
MPA_INVERT = ( MPA_BOOL+ 0),
MPA_LEAVETAB = ( MPA_BOOL+ 1),
MPA_TOOLINVERT = ( MPA_BOOL+ 2),
MPA_PROBING = ( MPA_BOOL+ 3), // per taglio ad acqua
MPA_LIHOLE = ( MPA_BOOL+ 4), // per taglio ad acqua
MPA_OSCENABLE = ( MPA_BOOL+ 5), // per fresatura
MPA_TYPE = ( MPA_INT + 0), // solo get
MPA_WORKSIDE = ( MPA_INT + 1),
MPA_HEADSIDE = ( MPA_INT + 2),
MPA_LEADINTYPE = ( MPA_INT + 3),
MPA_EXTLINKTYPE = ( MPA_INT + 4),
MPA_LEADOUTTYPE = ( MPA_INT + 5),
MPA_CURVEUSE = ( MPA_INT + 6),
MPA_STEPTYPE = ( MPA_INT + 7),
MPA_SUBTYPE = ( MPA_INT + 8),
MPA_LEADLINKTYPE = ( MPA_INT + 9),
MPA_SCC = ( MPA_INT + 10),
MPA_FACEUSE = ( MPA_INT + 11),
MPA_EXTCORNERTYPE = ( MPA_INT + 12), // per taglio ad acqua
MPA_INTCORNERTYPE = ( MPA_INT + 13), // per taglio ad acqua
MPA_CORNERSLOWPERC = ( MPA_INT + 14), // per taglio ad acqua
MPA_LPTURNS = ( MPA_INT + 15), // per taglio ad acqua
MPA_HPTURNS = ( MPA_INT + 16), // per taglio ad acqua
MPA_TABMIN = ( MPA_INT + 17),
MPA_TABMAX = ( MPA_INT + 18),
MPA_SPEED = ( MPA_DOU + 0),
MPA_FEED = ( MPA_DOU + 1),
MPA_STARTFEED = ( MPA_DOU + 2),
MPA_ENDFEED = ( MPA_DOU + 3),
MPA_TIPFEED = ( MPA_DOU + 4),
MPA_OFFSR = ( MPA_DOU + 5),
MPA_OFFSL = ( MPA_DOU + 6),
MPA_DEPTH = ( MPA_DOU + 7), // solo set, get con MPA_DEPTH_STR
MPA_SIDEANGLE = ( MPA_DOU + 8),
MPA_APPROX = ( MPA_DOU + 9),
MPA_STARTPOS = ( MPA_DOU + 10),
MPA_STARTSLOWLEN = ( MPA_DOU + 11),
MPA_ENDSLOWLEN = ( MPA_DOU + 12),
MPA_THROUADDLEN = ( MPA_DOU + 13),
MPA_STEP = ( MPA_DOU + 14),
MPA_RETURNPOS = ( MPA_DOU + 15),
MPA_OVERLAP = ( MPA_DOU + 16), // per forature solo set, get con MPA_OVERLAP_STR
MPA_TABLEN = ( MPA_DOU + 17),
MPA_TABDIST = ( MPA_DOU + 18),
MPA_TABHEIGHT = ( MPA_DOU + 19),
MPA_TABANGLE = ( MPA_DOU + 20),
MPA_LITANG = ( MPA_DOU + 21),
MPA_LIPERP = ( MPA_DOU + 22),
MPA_LIELEV = ( MPA_DOU + 23),
MPA_LICOMPLEN = ( MPA_DOU + 24),
MPA_LOTANG = ( MPA_DOU + 25),
MPA_LOPERP = ( MPA_DOU + 26),
MPA_LOELEV = ( MPA_DOU + 27),
MPA_LOCOMPLEN = ( MPA_DOU + 28),
MPA_STARTADDLEN = ( MPA_DOU + 29),
MPA_ENDADDLEN = ( MPA_DOU + 30),
MPA_OFFSET = ( MPA_DOU + 31), // per forature solo set, get con MPA_OFFSET_STR
MPA_STEPEXTARC = ( MPA_DOU + 32), // per tagli con lama
MPA_STEPINTARC = ( MPA_DOU + 33), // per tagli con lama
MPA_SIDESTEP = ( MPA_DOU + 34),
MPA_VERTFEED = ( MPA_DOU + 35), // per finiture di lama per tagli verticali
MPA_STEPSIDEANG = ( MPA_DOU + 36), // per tagli con lama
MPA_OVERL = ( MPA_DOU + 37), // per fresature
MPA_STEPBACK = ( MPA_DOU + 38), // per tagli con lama
MPA_STEPSIDEANGBACK = ( MPA_DOU + 39), // per tagli con lama
MPA_BACKFEED = ( MPA_DOU + 40), // per tagli con lama
MPA_LIHOLERAD = ( MPA_DOU + 41), // per taglio ad acqua
MPA_FORWARDANGLE = ( MPA_DOU + 42), // per taglio ad acqua
MPA_PROBINGMINDIST = ( MPA_DOU + 43), // per taglio ad acqua
MPA_PROBINGMAXDIST = ( MPA_DOU + 44), // per taglio ad acqua
MPA_CORNERSLOWLEN = ( MPA_DOU + 45), // per taglio ad acqua
MPA_THICKREF = ( MPA_DOU + 46), // per taglio ad acqua
MPA_OSCHEIGHT = ( MPA_DOU + 47), // per fresatura
MPA_OSCRAMPLEN = ( MPA_DOU + 48), // per fresatura
MPA_OSCFLATLEN = ( MPA_DOU + 49), // per fresatura
MPA_SIDEANGFEED = ( MPA_DOU + 50), // per tagli con lama
MPA_STEPLAST = ( MPA_DOU + 51), // per tagli con lama
MPA_EPICYCLESRAD = ( MPA_DOU + 52), // per svuotature con epicicli
MPA_EPICYCLESDIST = ( MPA_DOU + 53), // per svuotature con epicicli
MPA_SUBSTEP = ( MPA_DOU + 54), // per sgrossature superfici
MPA_NAME = ( MPA_STR + 0),
MPA_TOOL = ( MPA_STR + 1),
MPA_DEPTH_STR = ( MPA_STR + 2),
MPA_TUUID = ( MPA_STR + 3),
MPA_UUID = ( MPA_STR + 4),
MPA_SYSNOTES = ( MPA_STR + 5),
MPA_USERNOTES = ( MPA_STR + 6),
MPA_OVERLAP_STR = ( MPA_STR + 7), // per forature
MPA_OFFSET_STR = ( MPA_STR + 8), // per forature
MPA_INITANGS = ( MPA_STR + 9),
MPA_BLOCKEDAXIS = ( MPA_STR + 10)} ;
//----------------------------------------------------------------------------
// Criterio di scelta della soluzione
enum SolChoiseCriterion { MCH_SCC_NONE = 0,
MCH_SCC_STD = 1, // solo nelle lavorazioni
MCH_SCC_OPPOSITE = 2, // solo nelle lavorazioni
MCH_SCC_ADIR_XP = 11,
MCH_SCC_ADIR_XM = 12,
MCH_SCC_ADIR_YP = 13,
MCH_SCC_ADIR_YM = 14,
MCH_SCC_ADIR_ZP = 15,
MCH_SCC_ADIR_ZM = 16,
MCH_SCC_ADIR_NEAR = 21,
MCH_SCC_ADIR_FAR = 22} ;
//-----------------------------------------------------------------------------
inline bool
IsValidHeadScc( int nScc)
{
return ( nScc == MCH_SCC_NONE ||
nScc == MCH_SCC_ADIR_XP || nScc == MCH_SCC_ADIR_XM ||
nScc == MCH_SCC_ADIR_YP || nScc == MCH_SCC_ADIR_YM ||
nScc == MCH_SCC_ADIR_ZP || nScc == MCH_SCC_ADIR_ZM ||
nScc == MCH_SCC_ADIR_NEAR || nScc == MCH_SCC_ADIR_FAR) ;
}
//-----------------------------------------------------------------------------
inline bool
IsValidOperationScc( int nScc)
{
return ( IsValidHeadScc( nScc) ||
nScc == MCH_SCC_STD || nScc == MCH_SCC_OPPOSITE) ;
}
//----------------------------------------------------------------------------
// Parametri per foratura
// Sottotipo
enum { DRI_SUB_STD = 0,
DRI_SUB_ALONG_CURVE = 1} ;
//----------------------------------------------------------------------------
// Parametri per lavorazione con lama
// Lato di lavoro
enum { SAW_WS_CENTER = 0,
SAW_WS_LEFT = 1,
SAW_WS_RIGHT = 2} ;
// Lato di posizionamento della testa
enum { SAW_HS_LEFT = 1,
SAW_HS_RIGHT = 2} ;
// Tipo di lavorazione a step
enum { SAW_ST_ZIGZAG = 0,
SAW_ST_ONEWAY = 1,
SAW_ST_TOANDFROM = 2} ;
// Tipo di attacco
enum { SAW_LI_CENT = 0,
SAW_LI_STRICT = 1,
SAW_LI_OUT = 2,
SAW_LI_EXT_CENT = 3,
SAW_LI_EXT_OUT = 4} ;
// Tipo di link esterno
enum { SAW_EL_CENT = 0,
SAW_EL_EXT_PREV = 1,
SAW_EL_EXT_NEXT = 2,
SAW_EL_EXT_BOTH = 3} ;
// Tipo di uscita
enum { SAW_LO_CENT = 0,
SAW_LO_STRICT = 1,
SAW_LO_EXT_CENT = 2,
SAW_LO_OUT = 3,
SAW_LO_EXT_OUT = 4} ;
// Gestione curve
enum { SAW_CRV_SKIP = 0,
SAW_CRV_APPROX = 1,
SAW_CRV_CONVEX = 2,
SAW_CRV_KEEP = 3} ;
//----------------------------------------------------------------------------
// Parametri per fresatura
// Lato di lavoro
enum { MILL_WS_CENTER = 0,
MILL_WS_LEFT = 1,
MILL_WS_RIGHT = 2} ;
// Tipo di lavorazione a step
enum { MILL_ST_ZIGZAG = 0,
MILL_ST_ONEWAY = 1,
MILL_ST_SPIRAL = 2} ;
// Tipo di attacco
enum { MILL_LI_NONE = 0,
MILL_LI_LINEAR = 1,
MILL_LI_TANGENT = 2,
MILL_LI_GLIDE = 3,
MILL_LI_ZIGZAG = 4,
MILL_LI_HELIX = 5,
MILL_LI_TG_PERP = 6} ;
// Tipo di uscita
enum { MILL_LO_NONE = 0,
MILL_LO_LINEAR = 1,
MILL_LO_TANGENT = 2,
MILL_LO_GLIDE = 3,
MILL_LO_AS_LI = 4,
MILL_LO_PERP_TG = 5} ;
// Tipo lavorazione faccia
enum { MILL_FU_NONE = 0,
MILL_FU_PARAL_DOWN = 1,
MILL_FU_PARAL_TOP = 2,
MILL_FU_PARAL_FRONT = 3,
MILL_FU_PARAL_BACK = 4,
MILL_FU_PARAL_LEFT = 5,
MILL_FU_PARAL_RIGHT = 6,
MILL_FU_ORTHO_DOWN = 33,
MILL_FU_ORTHO_TOP = 34,
MILL_FU_ORTHO_FRONT = 35,
MILL_FU_ORTHO_BACK = 36,
MILL_FU_ORTHO_LEFT = 37,
MILL_FU_ORTHO_RIGHT = 38,
MILL_FU_ORTHO_CONT = 39,
MILL_FU_ORTUP_DOWN = 65,
MILL_FU_ORTUP_TOP = 66,
MILL_FU_ORTUP_FRONT = 67,
MILL_FU_ORTUP_BACK = 68,
MILL_FU_ORTUP_LEFT = 69,
MILL_FU_ORTUP_RIGHT = 70,
MILL_FU_ORTUP_CONT = 71} ;
//----------------------------------------------------------------------------
// Parametri per sgrossatura con lama
// Lato di posizionamento della testa
enum { SAWROU_HS_LEFT = 1,
SAWROU_HS_RIGHT = 2} ;
// Tipo di lavorazione a step
enum { SAWROU_ST_ZIGZAG = 0,
SAWROU_ST_ONEWAY = 1} ;
// Tipo di attacco/uscita/link
enum { SAWROU_LL_CENT = 0,
SAWROU_LL_OUT = 1} ;
//----------------------------------------------------------------------------
// Parametri per finitura con lama
// Lato di posizionamento della testa
enum { SAWFIN_HS_LEFT = 1,
SAWFIN_HS_RIGHT = 2} ;
// Tipo di lavorazione a step
enum { SAWFIN_ST_ZIGZAG = 0,
SAWFIN_ST_ONEWAY = 1} ;
// Sottotipo di lavorazione
enum { SAWFIN_SUB_ALONG = 0,
SAWFIN_SUB_ACROSS = 1} ;
// Tipo di attacco/uscita/link
enum { SAWFIN_LL_STD = 0,
SAWFIN_LL_CENT = 1,
SAWFIN_LL_OUT = 2} ;
//----------------------------------------------------------------------------
// Parametri per svuotatura
// Sottotipo di lavorazione
enum { POCKET_SUB_ZIGZAG = 0,
POCKET_SUB_ONEWAY = 1,
POCKET_SUB_SPIRALIN = 2,
POCKET_SUB_SPIRALOUT = 3,
POCKET_SUB_CONFORMAL_ZIGZAG = 4,
POCKET_SUB_CONFORMAL_ONEWAY = 5} ;
// Tipo di attacco
enum { POCKET_LI_NONE = 0,
POCKET_LI_GLIDE = 1,
POCKET_LI_ZIGZAG = 2,
POCKET_LI_HELIX = 3} ;
// Tipo di uscita
enum { POCKET_LO_NONE = 0,
POCKET_LO_GLIDE = 1} ;
//----------------------------------------------------------------------------
// Parametri per scalpellatura (chiseling)
// Lato di lavoro
enum { CHISEL_WS_LEFT = 1,
CHISEL_WS_RIGHT = 2} ;
//----------------------------------------------------------------------------
// Parametri per mortasatura (mortising)
// Lato di lavoro
enum { MORTISE_WS_LEFT = 1,
MORTISE_WS_RIGHT = 2} ;
// Tipo di lavorazione a step
enum { MORTISE_ST_ZIGZAG = 0,
MORTISE_ST_ONEWAY = 1} ;
// Tipo lavorazione faccia
enum { MORTISE_FU_NONE = 0,
MORTISE_FU_PARAL_DOWN = 1,
MORTISE_FU_PARAL_TOP = 2,
MORTISE_FU_PARAL_FRONT = 3,
MORTISE_FU_PARAL_BACK = 4,
MORTISE_FU_PARAL_LEFT = 5,
MORTISE_FU_PARAL_RIGHT = 6} ;
// Tipo di affondamento (plunge)
enum { MORTISE_PLUNGE_STEP = 0,
MORTISE_PLUNGE_START = 1,
MORTISE_PLUNGE_END = 2,
MORTISE_PLUNGE_START_END = 3,
MORTISE_PLUNGE_START_TO_END = 4} ;
//----------------------------------------------------------------------------
// Parametri per sgrossatura superfici
// Sottotipo di lavorazione
enum { SURFROU_SUB_ZIGZAG = 0,
SURFROU_SUB_ONEWAY = 1,
SURFROU_SUB_SPIRALIN = 2,
SURFROU_SUB_SPIRALOUT = 3,
SURFROU_SUB_CONFORMAL_ZIGZAG = 4,
SURFROU_SUB_CONFORMAL_ONEWAY = 5} ;
// Tipo di attacco
enum { SURFROU_LI_NONE = 0,
SURFROU_LI_GLIDE = 1,
SURFROU_LI_ZIGZAG = 2,
SURFROU_LI_HELIX = 3} ;
// Tipo di uscita
enum { SURFROU_LO_NONE = 0,
SURFROU_LO_GLIDE = 1} ;
//----------------------------------------------------------------------------
// Parametri per finitura superfici
// Sottotipo di lavorazione
enum { SURFFIN_SUB_ZIGZAG = 0,
SURFFIN_SUB_ONEWAY = 1,
SURFFIN_SUB_SPIRALIN = 2,
SURFFIN_SUB_SPIRALOUT = 3,
SURFFIN_SUB_Z_CONST = 4,
SURFFIN_SUB_OPTIMAL = 5,
SURFFIN_SUB_PROJECT = 6} ;
// Tipo di attacco
enum { SURFFIN_LI_NONE = 0,
SURFFIN_LI_LINEAR = 1,
SURFFIN_LI_TANGENT = 2} ;
// Tipo di uscita
enum { SURFFIN_LO_NONE = 0,
SURFFIN_LO_LINEAR = 1,
SURFFIN_LO_TANGENT = 2,
SURFFIN_LO_AS_LI = 3} ;
//----------------------------------------------------------------------------
// Parametri per taglio a getto d'acqua (waterjetting)
// Lato di lavoro
enum { WJET_WS_CENTER = 0,
WJET_WS_LEFT = 1,
WJET_WS_RIGHT = 2} ;
// Comportamento su angolo esterno
enum { WJET_EC_NONE = 0,
WJET_EC_SLOW = 1,
WJET_EC_LOOP = 2} ;
// Comportamento su angolo interno
enum { WJET_IC_NONE = 0,
WJET_IC_SLOW = 1,
WJET_IC_SLOW_FULL = 2} ;
// Tipo di attacco
enum { WJET_LI_NONE = 0,
WJET_LI_LINEAR = 1,
WJET_LI_TANGENT = 2} ;
// Tipo di uscita
enum { WJET_LO_NONE = 0,
WJET_LO_LINEAR = 1,
WJET_LO_TANGENT = 2,
WJET_LO_AS_LI = 4} ;