Macchina rilasciata a cliente
This commit is contained in:
@@ -0,0 +1,561 @@
|
||||
-- Descrizione macchina Saomad-KAIROS by EgalWare s.r.l. 2023/12/07
|
||||
-- 2023/09/22 DS ver 2.5i1 Prima versione
|
||||
-- 2023/10/06 DS ver 2.5j1 Completato modello macchina e simulazione.
|
||||
-- 2023/10/14 DS ver 2.5j2 Generazione di semplici programmi di lavorazione.
|
||||
-- 2023/10/16 DS ver 2.5j3 Commenti prima di movimenti carrelli con sporgenza pinzaggi e relative ripetizioni ora sono esecuzioni.
|
||||
-- 2023/10/18 DS ver 2.5j4 Aggiunta gestione nuovi tipi di scambio. Migliorato controllo pinzaggio per limiti corse X1 e X2.
|
||||
-- 2023/10/24 DS ver 2.5j5 Ulteriori migliorie agli scambi. Gestione ripartenze.
|
||||
-- 2023/11/27 DS ver 2.5k3 Aggiunta gestione ripartenze.
|
||||
-- 2023/11/29 DS ver 2.5k6 Aggiunti diversi scambi carrelli. Corretto SpecAdjustCarrA3 in mlse.
|
||||
-- 2023/12/07 DS ver 2.5l7 Modifiche ed aggiustamenti vari durante le prove.
|
||||
-- 2023/12/13 AV ver.2.5l8 Piccola correzione per errore digitazione variabile in calcolo riposizionamento carrelli (SpecAdjustCarrB3)
|
||||
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '2.5l8'
|
||||
MIN_MACH_VER = '2.5j1'
|
||||
|
||||
EgtOutLog ( '** Saomad-KAIROS '..PP_VER..' (MinMach '.. MIN_MACH_VER ..') **', 1)
|
||||
|
||||
-- Parametri macchina
|
||||
NumericalControl = 'SIEMENS'
|
||||
ChainSaw = false
|
||||
MinY = -1225
|
||||
MaxY = 690
|
||||
ParkY = 400
|
||||
FmaxY = 45000
|
||||
MinZ = -512
|
||||
MaxZ = 630
|
||||
ParkZ = 620
|
||||
FmaxZ = 45000
|
||||
MinA = -109.5
|
||||
MaxA = 109.5
|
||||
ParkA = 0
|
||||
FmaxA = 10440
|
||||
MinC = -240
|
||||
MaxC = 240
|
||||
ParkC = 90
|
||||
FmaxC = 18000
|
||||
MillOffs = 217.0
|
||||
ChSawLen = 90.0
|
||||
MinX1 = 290.0
|
||||
MaxX1 = 3760.0
|
||||
ParkX1 = 480.0
|
||||
FmaxX1 = 45000
|
||||
MinX2 = -3760.0
|
||||
MaxX2 = -290.0
|
||||
ParkX2 = -480.0
|
||||
FmaxX2 = 45000
|
||||
LoadT = 1800.0
|
||||
UnloadT = -1800
|
||||
TurnerOffs = 0
|
||||
MaxHOpen = 460
|
||||
MaxVOpen = 280
|
||||
LenToPress = 500
|
||||
MinRX = -10
|
||||
MidRX = 130
|
||||
MaxRX = 430
|
||||
DeltaTabY = 0
|
||||
DeltaTabZ = 0
|
||||
DimTabY = 500
|
||||
DimTabX = 34000
|
||||
DistBack = 880
|
||||
StartRotation = true
|
||||
AutomaticRotation = true
|
||||
AutoRotMinLen = 2600
|
||||
MaxUnloadLen = 0
|
||||
DefTcPos = 'T1'
|
||||
CoeffVM = 0.5
|
||||
|
||||
-- Aggiornamento con dati da B&W
|
||||
local sData = EgtGetSourceDir().."Beam\\EbwData.lua"
|
||||
if EgtExistsFile( sData) then
|
||||
local Machine = dofile( sData)
|
||||
if Machine then
|
||||
if Machine.Offsets then
|
||||
if Machine.Offsets.TIPO_CN == 0 then
|
||||
NumericalControl = 'SIEMENS'
|
||||
end
|
||||
if Machine.Offsets.MIN_Y then MinY = Machine.Offsets.MIN_Y end
|
||||
if Machine.Offsets.MAX_Y then MaxY = Machine.Offsets.MAX_Y end
|
||||
if Machine.Offsets.MIN_Z then MinZ = Machine.Offsets.MIN_Z end
|
||||
if Machine.Offsets.MAX_Z then MaxZ = Machine.Offsets.MAX_Z end
|
||||
if Machine.Offsets.MIN_A then MinA = Machine.Offsets.MIN_A end
|
||||
if Machine.Offsets.MAX_A then MaxA = Machine.Offsets.MAX_A end
|
||||
if Machine.Offsets.MIN_C then MinC = Machine.Offsets.MIN_C end
|
||||
if Machine.Offsets.MAX_C then MaxC = Machine.Offsets.MAX_C end
|
||||
if Machine.Offsets.MILL_PIVOT then MillOffs = - Machine.Offsets.MILL_PIVOT end
|
||||
if Machine.Offsets.MIN_X1 then MinX1 = Machine.Offsets.MIN_X1 end
|
||||
if Machine.Offsets.MAX_X1 then MaxX1 = Machine.Offsets.MAX_X1 end
|
||||
if Machine.Offsets.MIN_X2 then MinX2 = Machine.Offsets.MIN_X2 end
|
||||
if Machine.Offsets.MAX_X2 then MaxX2 = Machine.Offsets.MAX_X2 end
|
||||
ParkX1 = Machine.Offsets.PARK_X1 or ParkX1
|
||||
ParkX2 = Machine.Offsets.PARK_X2 or ParkX2
|
||||
if Machine.Offsets.BEAM_LOAD then LoadT = Machine.Offsets.BEAM_LOAD end
|
||||
if Machine.Offsets.BEAM_UNLOAD then UnloadT = Machine.Offsets.BEAM_UNLOAD end
|
||||
TurnerOffs = Machine.Offsets.TURN_OFFS or TurnerOffs
|
||||
if Machine.Offsets.TAB_OFFSET_Y then DeltaTabY = Machine.Offsets.TAB_OFFSET_Y end
|
||||
if Machine.Offsets.TAB_OFFSET_Z then DeltaTabZ = Machine.Offsets.TAB_OFFSET_Z end
|
||||
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD end
|
||||
end
|
||||
ParkY = EgtClamp( ParkY, MinY, MaxY)
|
||||
ParkZ = EgtClamp( ParkZ, MinZ, MaxZ)
|
||||
ParkA = EgtClamp( ParkA, MinA, MaxA)
|
||||
ParkC = EgtClamp( ParkC, MinC, MaxC)
|
||||
end
|
||||
end
|
||||
|
||||
EmtGeneral {
|
||||
File='Saomad-KAIROS-MK1.nge',
|
||||
Offset = Vector3d( 0.0, -35.34, -804.0),
|
||||
AxisMaxAdjust = 30,
|
||||
AxisMaxRotAdj = 0.5,
|
||||
ExitMaxAdjust = 30,
|
||||
ExitMaxRotAdj = 0.5,
|
||||
AngDeltaMinForHome = 165,
|
||||
Special = 'Saomad-KAIROS-MK1.mlse',
|
||||
Processor = 'Saomad-KAIROS-MK1.mlpe'}
|
||||
local BaseId = EmtBase {
|
||||
Name = 'Base',
|
||||
Geo='BASE/GEO',
|
||||
Aux={'BASE/SOLID', 'BASE/LOAD', 'BASE/UNLOAD','BASE/TC', 'BASE/SIGN', 'BASE/COLLISION'}}
|
||||
EmtAxis {
|
||||
Name = 'RX1',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = X_AX(),
|
||||
Pos = Point3d( -1194.4, -513.5, -52.4),
|
||||
Stroke = {MinRX, MaxRX},
|
||||
Home = MinRX,
|
||||
Geo = 'RX1_AXIS/GEO',
|
||||
Aux = {'RX1_AXIS/SOLID', 'RX1_AXIS/COLLISION'}}
|
||||
EmtAxis {
|
||||
Name = 'RX2',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( 1194.4, -513.5, -52.4),
|
||||
Stroke = {MinRX, MaxRX},
|
||||
Home = MinRX,
|
||||
Geo = 'RX2_AXIS/GEO',
|
||||
Aux = {'RX2_AXIS/SOLID', 'RX2_AXIS/COLLISION'}}
|
||||
local YId = EmtAxis {
|
||||
Name = 'Y',
|
||||
Parent = 'Base',
|
||||
Token = 'Y1',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Y_AX(),
|
||||
Pos = Point3d( -639.5, 372.66, 945.7),
|
||||
Stroke = {MinY, MaxY},
|
||||
Home = ParkY,
|
||||
Geo = 'Y_AXIS/GEO',
|
||||
Aux = 'Y_AXIS/SOLID'}
|
||||
EmtAxis {
|
||||
Name = 'Z',
|
||||
Parent = 'Y',
|
||||
Token = 'Z1',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( -19.25, -113.54, 790.0),
|
||||
Stroke = {MinZ, MaxZ},
|
||||
Home = ParkZ,
|
||||
Geo = 'Z_AXIS/GEO',
|
||||
Aux = {'Z_AXIS/SOLID', 'Z_AXIS/COLLISION'}}
|
||||
local CId = EmtAxis {
|
||||
Name = 'C',
|
||||
Parent = 'Z',
|
||||
Token = 'C1',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = -Z_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = {MinC, MaxC},
|
||||
Home = ParkC,
|
||||
Geo = 'C_AXIS/GEO',
|
||||
Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION'}}
|
||||
EmtAxis {
|
||||
Name = 'A',
|
||||
Parent = 'C',
|
||||
Token = 'A1',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = X_AX(),
|
||||
Pos = Point3d( 0, 0, MillOffs),
|
||||
Stroke = {MinA, MaxA},
|
||||
Home = ParkA,
|
||||
Geo = 'A_AXIS/GEO',
|
||||
Aux = {'A_AXIS/SOLID', 'A_AXIS/COLLISION'}}
|
||||
-- Frese
|
||||
local H1Id = EmtHead {
|
||||
Name = 'H1',
|
||||
Parent = 'A',
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Rot1W = 2,
|
||||
OthColl = {'A/SOLID', 'C/SOLID'},
|
||||
Geo = 'H1_HEAD/GEO'}
|
||||
EgtSetInfo( H1Id, 'ZMAXONROT', '1,60')
|
||||
-- Sega a catena
|
||||
if ChainSaw then
|
||||
EmtAxis {
|
||||
Name = 'CS',
|
||||
Parent = 'A',
|
||||
Token = '**',
|
||||
Type = MCH_AT.ROTARY,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 0, 0, 0),
|
||||
Stroke = { -90, 90},
|
||||
Home = 0,
|
||||
Geo = 'CS_AXIS/GEO'}
|
||||
local H3Id = EmtHead {
|
||||
Name = 'H3',
|
||||
Parent = 'CS',
|
||||
HSet = 'H1',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( 0, 0, -ChSawLen),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Rot1W = 0.2,
|
||||
SolCh = MCH_SCC.ADIR_NEAR,
|
||||
OthColl = {'A/SOLID', 'C/SOLID'},
|
||||
Geo = 'H3_HEAD/GEO'}
|
||||
EgtSetInfo( H3Id, 'ZMAXONROT', '1,5')
|
||||
end
|
||||
-- Morse
|
||||
local X1Id = EmtAxis {
|
||||
Name = 'X1',
|
||||
Token = 'X1',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( -953.0, 111.75, 1450.0),
|
||||
Stroke = { MinX1, MaxX1},
|
||||
Home = ParkX1,
|
||||
Geo = 'X1_AXIS/GEO',
|
||||
Aux = {'X1_AXIS/SOLID', 'X1_AXIS/COLLISION'}}
|
||||
local PX1Id = EmtAxis {
|
||||
Name = 'PX1',
|
||||
Parent = 'X1',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -Y_AX(),
|
||||
Pos = Point3d( -904.0, -276.5, 1449.0),
|
||||
Stroke = { 0, MaxHOpen},
|
||||
Home = MaxHOpen,
|
||||
Geo = 'PX1_AXIS/GEO',
|
||||
Aux = {'PX1_AXIS/SOLID', 'PX1_AXIS/COLLISION'}}
|
||||
local QX1Id = EmtAxis {
|
||||
Name = 'QX1',
|
||||
Parent = 'X1',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( -904.0, -276.5, 1449.0),
|
||||
Stroke = { 0, MaxVOpen},
|
||||
Home = MaxVOpen,
|
||||
Geo = 'QX1_AXIS/GEO',
|
||||
Aux = {'QX1_AXIS/SOLID', 'QX1_AXIS/COLLISION'}}
|
||||
local X2Id = EmtAxis {
|
||||
Name = 'X2',
|
||||
Token = 'X2',
|
||||
Parent = 'Base',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -X_AX(),
|
||||
Pos = Point3d( 953.0, 111.75, 1450.0),
|
||||
Stroke = { MinX2, MaxX2},
|
||||
Home = ParkX2,
|
||||
Geo = 'X2_AXIS/GEO',
|
||||
Aux = {'X2_AXIS/SOLID', 'X2_AXIS/COLLISION'}}
|
||||
local PX2Id = EmtAxis {
|
||||
Name = 'PX2',
|
||||
Parent = 'X2',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = -Y_AX(),
|
||||
Pos = Point3d( 904.0, -276.5, 1449.0),
|
||||
Stroke = { 0, MaxHOpen},
|
||||
Home = MaxHOpen,
|
||||
Geo = 'PX2_AXIS/GEO',
|
||||
Aux = {'PX2_AXIS/SOLID', 'PX2_AXIS/COLLISION'}}
|
||||
local QX2Id = EmtAxis {
|
||||
Name = 'QX2',
|
||||
Parent = 'X2',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = Z_AX(),
|
||||
Pos = Point3d( 904.0, -276.5, 1449.0),
|
||||
Stroke = { 0, MaxVOpen},
|
||||
Home = MaxVOpen,
|
||||
Geo = 'QX2_AXIS/GEO',
|
||||
Aux = {'QX2_AXIS/SOLID', 'QX2_AXIS/COLLISION'}}
|
||||
EmtAxis {
|
||||
Name = 'T',
|
||||
Parent = 'Base',
|
||||
--Token = '**',
|
||||
Type = MCH_AT.LINEAR,
|
||||
Dir = - X_AX(),
|
||||
Pos = Point3d( 0, 613.16, -830.037),
|
||||
Stroke = { -30000, 30000},
|
||||
Home = LoadT,
|
||||
Geo = 'T_AXIS/GEO'}
|
||||
EmtTable {
|
||||
Name = 'Tab',
|
||||
Parent = 'T',
|
||||
Type = MCH_TT.FLAT,
|
||||
Ref1 = Point3d( -DimTabX, DeltaTabY - DimTabY, DeltaTabZ),
|
||||
Scale = { DimTabX / 20000, DimTabY / 500, 1},
|
||||
Geo = 'TABLE/GEO',
|
||||
Aux = 'TABLE/SOLID'}
|
||||
-- ToolChanger
|
||||
local ptTcCen = Point3d( 0, 1633.0, 79.2)
|
||||
EmtTcPos {
|
||||
Name = 'T1',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, -3 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T1'}
|
||||
EmtTcPos {
|
||||
Name = 'T2',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, -2 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T2'}
|
||||
EmtTcPos {
|
||||
Name = 'T3',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, -1 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T3'}
|
||||
EmtTcPos {
|
||||
Name = 'T4',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 0 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T4'}
|
||||
EmtTcPos {
|
||||
Name = 'T5',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 1 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T5'}
|
||||
EmtTcPos {
|
||||
Name = 'T6',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 2 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T6'}
|
||||
EmtTcPos {
|
||||
Name = 'T7',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 3 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T7'}
|
||||
EmtTcPos {
|
||||
Name = 'T8',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 4 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T8'}
|
||||
EmtTcPos {
|
||||
Name = 'T9',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 5 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T9'}
|
||||
EmtTcPos {
|
||||
Name = 'T10',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 6 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T10'}
|
||||
EmtTcPos {
|
||||
Name = 'T11',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 7 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T11'}
|
||||
EmtTcPos {
|
||||
Name = 'T12',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 8 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T12'}
|
||||
EmtTcPos {
|
||||
Name = 'T13',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 9 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T13'}
|
||||
EmtTcPos {
|
||||
Name = 'T14',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 10 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T14'}
|
||||
EmtTcPos {
|
||||
Name = 'T15',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 11 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T15'}
|
||||
if ChainSaw then
|
||||
EmtTcPos {
|
||||
Name = 'T16',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 12 * 22.5) - ChSawLen * Z_AX(),
|
||||
TDir = -Y_AX(),
|
||||
ADir = Z_AX(),
|
||||
Geo = 'BASE/T16CS'}
|
||||
else
|
||||
EmtTcPos {
|
||||
Name = 'T16',
|
||||
Parent = 'Base',
|
||||
Pos = ptTcCen + VectorFromPolar( 400, 12 * 22.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T16'}
|
||||
end
|
||||
EmtTcPos {
|
||||
Name = 'T17',
|
||||
Parent = 'Base',
|
||||
Pos = Point3d( 0.0, 1693.5, 534.5),
|
||||
TDir = Z_AX(),
|
||||
ADir = X_AX(),
|
||||
Geo = 'BASE/T17'}
|
||||
|
||||
-- Aggiusto posizioni geometriche
|
||||
local vtMove = Vector3d( 0, ( DeltaTabY - 0), ( DeltaTabZ - 0))
|
||||
local vtMoveY = Vector3d( 0, 0, ( DeltaTabZ - 0))
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'LOAD'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'UNLOAD'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SIGN'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PX1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PX1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( QX1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( QX1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PX2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( PX2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( QX2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( QX2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( YId, 'SOLID'), vtMoveY, GDB_RT.GLOB)
|
||||
|
||||
-- Assegno identificativi alle spie delle morse
|
||||
PX1LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( X1Id, 'SOLID') or GDB_ID.NULL, 'Light')
|
||||
PX2LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( X2Id, 'SOLID') or GDB_ID.NULL, 'Light')
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzioni richiamate per modificare i dati macchina in casi particolari
|
||||
--function OnSetTable()
|
||||
--end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnSetHead()
|
||||
-- Se testa con sega a catena
|
||||
if EMC.HEAD == 'H3' then
|
||||
-- aggiustamenti per distanza
|
||||
local dDist = EgtIf( EMC.DIST and abs( EMC.DIST) > 1, EMC.DIST, ChSawLen)
|
||||
EmtModifyExitPosition( EMC.HEAD, EMC.EXIT, Point3d( 0, 0, -dDist))
|
||||
if not EMC.VER or EMC.VER < '2.5h2' then
|
||||
local vtMove = Point3d( 0, 0, -dDist) - Point3d( EMC.EXITPOS)
|
||||
local ExitId = EgtGetFirstNameInGroup( EgtGetHeadId( EMC.HEAD), 'T'..tostring( EMC.EXIT))
|
||||
EgtMove( ExitId, vtMove)
|
||||
end
|
||||
-- recupero valore asse CS bloccato
|
||||
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
||||
local dPosCS = tonumber( sVal:sub( 4) or '')
|
||||
EmtModifyAxisHome( 'C', GetChainSawCHomeFromVirtualAxis( dPosCS))
|
||||
else
|
||||
EmtModifyAxisHome( 'C', ParkC)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione che calcola l'angolo Home di C per la sega a catena dal valore dell'asse virtuale
|
||||
function GetChainSawCHomeFromVirtualAxis( dPosCS)
|
||||
-- se CS=0 -> HomeC = -90
|
||||
if abs( dPosCS) < 0.1 then
|
||||
return 90
|
||||
-- altrimenti CS=90 -> HomeC = -180
|
||||
else
|
||||
return 0
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per impostare spia stato morsa carrello X1
|
||||
function SetPX1Light( bClosed)
|
||||
if not PX1LightId then return end
|
||||
EgtSetColor( PX1LightId, EgtIf( bClosed, 'RED', 'LIME'))
|
||||
if bClosed then
|
||||
EgtSetInfo( PX1LightId, 'On', '1')
|
||||
else
|
||||
EgtRemoveInfo( PX1LightId, 'On')
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per leggere lo stato della morsa carrello X1
|
||||
function GetPX1Light()
|
||||
if not PX1LightId then return false end
|
||||
return ( EgtGetInfo( PX1LightId, 'On') == '1')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per impostare spia stato morsa carrello X2
|
||||
function SetPX2Light( bClosed)
|
||||
if not PX2LightId then return end
|
||||
EgtSetColor( PX2LightId, EgtIf( bClosed, 'RED', 'LIME'))
|
||||
if bClosed then
|
||||
EgtSetInfo( PX2LightId, 'On', '1')
|
||||
else
|
||||
EgtRemoveInfo( PX2LightId, 'On')
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per leggere lo stato della morsa carrello X2
|
||||
function GetPX2Light()
|
||||
if not PX2LightId then return false end
|
||||
return ( EgtGetInfo( PX2LightId, 'On') == '1')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per resettare tutte le attivazioni della macchina
|
||||
function OnResetMachine()
|
||||
EmtUnlinkAllRawPartsFromGroups()
|
||||
EmtUnlinkAllFixturesFromGroups()
|
||||
SetPX1Light( false)
|
||||
SetPX2Light( false)
|
||||
-- nascondo Vmill
|
||||
local nRawId = EgtGetFirstRawPart()
|
||||
while nRawId do
|
||||
local nVmId = EgtGetFirstNameInGroup( nRawId, 'VMill')
|
||||
local nId = EgtGetFirstInGroup( nRawId)
|
||||
while nId do
|
||||
EgtSetStatus( nId, EgtIf( nId ~= nVmId, GDB_ST.ON, GDB_ST.OFF))
|
||||
nId = EgtGetNext( nId)
|
||||
end
|
||||
nRawId = EgtGetNextRawPart( nRawId)
|
||||
end
|
||||
EgtSetStatus( EgtGetFirstNameInGroup( GDB_ID.ROOT, 'VMill') or GDB_ID.NULL, GDB_ST.OFF)
|
||||
end
|
||||
Reference in New Issue
Block a user