b60ca9f533
- modificato file per compilazione script
1508 lines
52 KiB
Plaintext
1508 lines
52 KiB
Plaintext
-- Descrizione macchina Essetre-PF1500rl by EgalWare s.r.l. 2024/10/16
|
|
-- 2024/10/16 ver 2.6j1 Prima versione
|
|
|
|
-- Intestazioni
|
|
require( 'EmtGenerator')
|
|
EgtEnableDebug( false)
|
|
|
|
PP_VER = '2.6k2_DEV'
|
|
PP_NVER = '2.6.11.2'
|
|
MIN_MACH_VER = '2.5k1'
|
|
MACH_NAME = 'Essetre-PF1500MAXrl-3T'
|
|
|
|
-- Carico i dati globali
|
|
local sMachDir = EgtGetCurrMachineDir()
|
|
-- Elimino direttori altre macchine e imposto direttorio macchina corrente per ricerca librerie
|
|
EgtRemoveBaseMachineDirFromPackagePath()
|
|
EgtAddToPackagePath( sMachDir .. '\\Beam\\?.lua')
|
|
EgtAddToPackagePath( sMachDir .. '\\?.lua')
|
|
INFO_STD_PP = require( 'Version')
|
|
-- prendo la versione kernel minima necessaria piu' nuova tra macchina e script comuni
|
|
if INFO_STD_PP.MIN_MACH_VER_PP_COMMON > MIN_MACH_VER then
|
|
MIN_MACH_VER = INFO_STD_PP.MIN_MACH_VER_PP_COMMON
|
|
end
|
|
|
|
EgtOutLog ( '** ' .. MACH_NAME..' '..PP_VER..' ** ( '..INFO_STD_PP.NAME..': '..INFO_STD_PP.VERSION..' - MinMach: '.. MIN_MACH_VER ..') **', 1)
|
|
|
|
-- Parametri macchina
|
|
NumericalControl = 'TPA' -- NUM o TPA
|
|
MinMchY1 = 335
|
|
MaxMchY1 = 5790.0
|
|
ParkMchY1 = 970.0
|
|
MinMchY2 = -5775.0
|
|
MaxMchY2 = -324
|
|
ParkMchY2 = -955.0
|
|
MinV1 = 5.0
|
|
MaxV1 = 640.0
|
|
ParkV1 = 609.0
|
|
MinV2 = -635.0
|
|
MaxV2 = -5.0
|
|
ParkV2 = -609.0
|
|
MinDeltaYV = 317 + 0.1
|
|
ExtraParkV = 600
|
|
MinY1 = MinV1 + MinDeltaYV
|
|
MaxY1 = MaxMchY1
|
|
MaxY2 = MaxV2 - MinDeltaYV
|
|
MinY2 = MinMchY2
|
|
ParkY1 = ParkV1 + MinDeltaYV
|
|
ParkY2 = ParkV2 - MinDeltaYV
|
|
LoadT = 2172.8
|
|
UnloadT = -2400
|
|
UnloadSmT = UnloadT - 300
|
|
MaxHoOpen = 1520
|
|
MaxVeOpen = 600
|
|
RollCageMin = 120
|
|
RollCageMax = 250
|
|
MillOffs = 170.0
|
|
SawOffsX = 110.0
|
|
SawOffsY = 0
|
|
SawOffsZ = -150.25
|
|
SawC1Offs = 0
|
|
SawB1Offs = 0
|
|
Saw2OffsX = -110.0
|
|
Saw2OffsY = 0
|
|
Saw2OffsZ = -150.25
|
|
Saw2C1Offs = 0
|
|
Saw2B1Offs = 0
|
|
SawUnderOffsX = 0
|
|
SawUnderOffsY = -111
|
|
SawUnderOffsZ = 150.25
|
|
SawUnderC2Offs = 0
|
|
SawUnderB2Offs = 0
|
|
ChSawLen = 91.0
|
|
Mill2Offs = 170.0
|
|
SawC2Offs = 0
|
|
SawB2Offs = 0
|
|
Mill3Offs = 163.0
|
|
MinX1 = 0
|
|
MaxX1 = 4750
|
|
MinZ1 = -1850
|
|
MaxZ1 = 0
|
|
MaxZ1Blade = -100
|
|
MinC1 = -275
|
|
MaxC1 = 275
|
|
MinB1 = -127
|
|
MaxB1 = 127
|
|
MinB1b = -119
|
|
MaxB1b = 119
|
|
ParkX1 = 4700
|
|
ParkTc2X1 = 4000
|
|
ParkTc1X1 = 1000
|
|
ParkZ1 = -525
|
|
ParkC1 = -90
|
|
ParkB1 = -90
|
|
ParkCSawX1 = 1700
|
|
ParkCSawZ1 = -100
|
|
ParkCSaw0Z1 = -400
|
|
ParkCSawC1 = -90
|
|
ParkCSaw0C1 = 0
|
|
ParkCSawB1 = 0
|
|
MinLengthLongCSaw = 580 -- gestione speciale per motosega molto lunga. Lunghezza al di sopra della quale e' considerata motosega lunga
|
|
ParkLongCSawZ1 = -50 -- gestione speciale per motosega molto lunga. Parcheggio asse Z
|
|
ParkLongCSawC1 = 0 -- gestione speciale per motosega molto lunga. Parcheggio asse C
|
|
ParkLongCSawB1 = -90 -- gestione speciale per motosega molto lunga. Parcheggio asse B
|
|
LongTool = 390
|
|
MinLongTc1C1 = -91
|
|
MaxLongTc1C1 = 91
|
|
ParkLongTc1C1 = 0
|
|
MinLongTc2C1 = -271
|
|
MaxLongTc2C1 = -89
|
|
ParkLongTc2C1 = -180
|
|
ParkLongB1 = 0
|
|
MinZ1ToChangeH2 = -1400
|
|
ParkMultiDrillX1 = ParkCSawX1 -- posizione parcheggio asse X per aggregato forature multiplo
|
|
ParkMultiDrillC1 = 0 -- posizione parcheggio asse C per aggregato forature multiplo
|
|
ParkMultiDrill0C1 = -90 -- posizione parcheggio asse C per aggregato forature multiplo
|
|
ParkMultiDrillB1 = 0 -- posizione parcheggio asse B per aggregato forature multiplo
|
|
ParkMultiDrillZ1 = 0 -- posizione parcheggio asse Z per aggregato forature multiplo
|
|
MinZ3 = -1550
|
|
MaxZ3 = 0
|
|
MinX3 = 0
|
|
MaxX3 = 4000
|
|
MinC3 = -181
|
|
MaxC3 = 181
|
|
MinB3 = 0
|
|
MaxB3 = 180
|
|
ParkX3 = 0
|
|
ParkZ3 = 0
|
|
ParkC3 = 0
|
|
ParkB3 = 0
|
|
SafeX3RotAxis = 1300
|
|
SafeZ3RotAxis = -600
|
|
MinX2 = -3060
|
|
MaxX2 = 0
|
|
MinZ2 = 0
|
|
MaxZ2 = 1450
|
|
MinC2 = -275
|
|
MaxC2 = 275
|
|
MinB2 = -127
|
|
MaxB2 = 127
|
|
MinB2b = -119
|
|
MaxB2b = 119
|
|
ParkX2 = -100
|
|
SafeX2 = -400
|
|
ParkZ2 = 0
|
|
ParkInLavZ2 = 200
|
|
ParkC2 = -90
|
|
ParkB2 = -90
|
|
ParkSawX2 = MinX2
|
|
ParkSawZ2 = 0
|
|
ParkSaw0Z2 = 0
|
|
ParkSawC2 = -90
|
|
ParkSaw0C2 = -90
|
|
ParkSawB2 = 0
|
|
MinDistToolX1X2 = 40
|
|
TurnerOffs = 120.0
|
|
AggLoad = 50
|
|
DeltaTabY = 1915.5
|
|
DeltaTabZ = -1491.0 + MillOffs -- per TPA : -1228.0 + MillOffs -- per NUM : -1058.0
|
|
DeltaRulliTraveZ = -1266
|
|
DimTabY = 1600
|
|
DimTabX = 30000
|
|
Delta2TabY = -2907.4
|
|
Delta2TabZ = 693.0 - Mill2Offs -- per TPA : 543.0 - Mill2Offs -- per NUM : 373.0
|
|
Delta3TabY = 1915.5
|
|
Delta3TabZ = -1430.25
|
|
Head3X = -163
|
|
Head3Y = DeltaTabY - Delta3TabY
|
|
Head3Z = DeltaTabZ - Delta3TabZ
|
|
Head2X = 0
|
|
Head2Y = DeltaTabY - Delta2TabY
|
|
Head2Z = DeltaTabZ - Delta2TabZ
|
|
DefTcPos1 = 'T1'
|
|
DefTcPos2 = 'T220'
|
|
CoeffVM = 0.5
|
|
MinForzaPinze = 400 -- [Kgf]
|
|
MaxForzaPinze = 1000 -- [Kgf]
|
|
Tc2Active = true
|
|
FirstSaw = false
|
|
SecondSaw = true
|
|
SecondChain = true -- magazzino seconda sega a catena
|
|
TcSpecialTools = true -- magazzino per utensili speciali. In genere truciolatore
|
|
DrillingAggregate = true -- aggregato foratura multipla dipende dal magazzino utensili speciali. Viene montato li
|
|
TcAggreBladeUnder = true -- lama su aggregato per testa da sotto
|
|
EmitAccClamps = true
|
|
WriteAllCoordsOnFirstM101 = true
|
|
ForceToCloseRollersGate = false
|
|
Motors23KW = true
|
|
|
|
-- Aggiornamento con dati da TechnoEssetre7
|
|
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-PF1500MAXrl-3T.data"
|
|
local sDataBeam = sMachDir.."\\Beam\\Ts3Data.lua"
|
|
local sDataWall = sMachDir.."\\Wall\\Ts3Data.lua"
|
|
if EgtExistsFile( sTs3Data) then
|
|
EgtCopyFile( sTs3Data, sDataBeam)
|
|
EgtCopyFile( sTs3Data, sDataWall)
|
|
local sTs3DataOld = sTs3Data..'.old'
|
|
EgtEraseFile( sTs3DataOld)
|
|
EgtRenameFile( sTs3Data, sTs3DataOld)
|
|
end
|
|
if EgtExistsFile( sDataBeam) then
|
|
local Machine = dofile( sDataBeam)
|
|
if Machine then
|
|
if Machine.Offsets then
|
|
--NumericalControl = EgtIf( Machine.Offsets.TIPO_CN == 0, 'NUM', 'TPA')
|
|
if Machine.Offsets.X1_POS then MinX1 = -Machine.Offsets.X1_POS end
|
|
if Machine.Offsets.X1_NEG then MaxX1 = -Machine.Offsets.X1_NEG end
|
|
if Machine.Offsets.PARK_X1 then ParkX1 = -Machine.Offsets.PARK_X1 end
|
|
if Machine.Offsets.Z1_NEG then MinZ1 = Machine.Offsets.Z1_NEG end
|
|
if Machine.Offsets.Z1_POS then MaxZ1 = min( MaxZ1, Machine.Offsets.Z1_POS) end
|
|
if Machine.Offsets.Z1_POS_LAMA then MaxZ1Blade = min( MaxZ1Blade, Machine.Offsets.Z1_POS_LAMA) end
|
|
if Machine.Offsets.PARK_Z1 then ParkZ1 = Machine.Offsets.PARK_Z1 end
|
|
if Machine.Offsets.C1_NEG then MinC1 = Machine.Offsets.C1_NEG end
|
|
if Machine.Offsets.C1_POS then MaxC1 = Machine.Offsets.C1_POS end
|
|
if Machine.Offsets.B1_NEG then MinB1 = Machine.Offsets.B1_NEG end
|
|
if Machine.Offsets.B1_POS then MaxB1 = Machine.Offsets.B1_POS end
|
|
if Machine.Offsets.B1_NEG1 then MinB1b = Machine.Offsets.B1_NEG1 end
|
|
if Machine.Offsets.B1_POS1 then MaxB1b = Machine.Offsets.B1_POS1 end
|
|
if Machine.Offsets.X2_NEG then MinX2 = Machine.Offsets.X2_NEG end
|
|
if Machine.Offsets.X2_POS then MaxX2 = Machine.Offsets.X2_POS end
|
|
if Machine.Offsets.PARK_X2 then ParkX2 = Machine.Offsets.PARK_X2 end
|
|
if Machine.Offsets.Z2_POS then MinZ2 = -Machine.Offsets.Z2_POS end
|
|
if Machine.Offsets.Z2_NEG then MaxZ2 = -Machine.Offsets.Z2_NEG end
|
|
if Machine.Offsets.PARK_Z2 then ParkZ2 = -Machine.Offsets.PARK_Z2 end
|
|
if Machine.Offsets.PARK_Z2_INLAV then ParkInLavZ2 = -Machine.Offsets.PARK_Z2_INLAV end
|
|
if Machine.Offsets.C2_NEG then MinC2 = Machine.Offsets.C2_NEG end
|
|
if Machine.Offsets.C2_POS then MaxC2 = Machine.Offsets.C2_POS end
|
|
if Machine.Offsets.B2_NEG then MinB2 = Machine.Offsets.B2_NEG end
|
|
if Machine.Offsets.B2_POS then MaxB2 = Machine.Offsets.B2_POS end
|
|
if Machine.Offsets.B2_NEG1 then MinB2b = Machine.Offsets.B2_NEG1 end
|
|
if Machine.Offsets.B2_POS1 then MaxB2b = Machine.Offsets.B2_POS1 end
|
|
if Machine.Offsets.X3_POS then MinX3 = -Machine.Offsets.X3_POS end
|
|
if Machine.Offsets.X3_NEG then MaxX3 = -Machine.Offsets.X3_NEG end
|
|
if Machine.Offsets.PARK_X3 then ParkX3 = -Machine.Offsets.PARK_X3 end
|
|
if Machine.Offsets.Z3_NEG then MinZ3 = Machine.Offsets.Z3_NEG end
|
|
if Machine.Offsets.Z3_POS then MaxZ3 = Machine.Offsets.Z3_POS end
|
|
if Machine.Offsets.PARK_Z3 then ParkZ3 = Machine.Offsets.PARK_Z3 end
|
|
if Machine.Offsets.B3_NEG then MinB3 = Machine.Offsets.B3_NEG end
|
|
if Machine.Offsets.B3_POS then MaxB3 = Machine.Offsets.B3_POS end
|
|
if Machine.Offsets.MIN_Y1 then MinMchY1 = Machine.Offsets.MIN_Y1 end
|
|
if Machine.Offsets.MAX_Y1 then MaxMchY1 = Machine.Offsets.MAX_Y1 end
|
|
if Machine.Offsets.PARK_Y1 then ParkMchY1 = Machine.Offsets.PARK_Y1 end
|
|
if Machine.Offsets.MIN_V1 then MinV1 = Machine.Offsets.MIN_V1 end
|
|
if Machine.Offsets.MAX_V1 then MaxV1 = Machine.Offsets.MAX_V1 end
|
|
if Machine.Offsets.MIN_Y2 then MinMchY2 = Machine.Offsets.MIN_Y2 end
|
|
if Machine.Offsets.MAX_Y2 then MaxMchY2 = Machine.Offsets.MAX_Y2 end
|
|
if Machine.Offsets.PARK_Y2 then ParkMchY2 = Machine.Offsets.PARK_Y2 end
|
|
if Machine.Offsets.MIN_V2 then MinV2 = Machine.Offsets.MIN_V2 end
|
|
if Machine.Offsets.MAX_V2 then MaxV2 = Machine.Offsets.MAX_V2 end
|
|
if Machine.Offsets.DIST_FTZERO then LoadT = Machine.Offsets.DIST_FTZERO end
|
|
if Machine.Offsets.DELTA_CARICZERO then TurnerOffs = Machine.Offsets.DELTA_CARICZERO end
|
|
if Machine.Offsets.MIN_DELTAVY then MinDeltaYV = Machine.Offsets.MIN_DELTAVY + 0.1 end
|
|
if Machine.Offsets.DIST_UNLOAD then UnloadT = Machine.Offsets.DIST_UNLOAD end
|
|
if Machine.Offsets.PIVOT_T1 then MillOffs = Machine.Offsets.PIVOT_T1 end
|
|
if Machine.Offsets.PIVOT_T2 then Mill2Offs = Machine.Offsets.PIVOT_T2 end
|
|
if Machine.Offsets.PIVOT_T3 then Mill3Offs = Machine.Offsets.PIVOT_T3 end
|
|
if Machine.Offsets.OFFSETCLAMAT1 then SawC1Offs= Machine.Offsets.OFFSETCLAMAT1 end
|
|
if Machine.Offsets.OFFSETBLAMAT1 then SawB1Offs= Machine.Offsets.OFFSETBLAMAT1 end
|
|
if Machine.Offsets.OFFSETCLAMAT2 then Saw2C1Offs= Machine.Offsets.OFFSETCLAMAT2 end
|
|
if Machine.Offsets.OFFSETBLAMAT2 then Saw2B1Offs= Machine.Offsets.OFFSETBLAMAT2 end
|
|
if Machine.Offsets.OFFSETCLAMAUNDER then SawUnderC2Offs= Machine.Offsets.OFFSETCLAMAUNDER end
|
|
if Machine.Offsets.OFFSETBLAMAUNDER then SawUnderB2Offs= Machine.Offsets.OFFSETBLAMAUNDER end
|
|
if Machine.Offsets.OFFSETXT1 then DeltaTabY = -Machine.Offsets.OFFSETXT1 end
|
|
if Machine.Offsets.OFFSETZT1 then DeltaTabZ = Machine.Offsets.OFFSETZT1 + MillOffs end
|
|
if Machine.Offsets.OFFSETXT2 then Delta2TabY = Machine.Offsets.OFFSETXT2 end
|
|
if Machine.Offsets.OFFSETZT2 then Delta2TabZ = -Machine.Offsets.OFFSETZT2 - Mill2Offs end
|
|
if Machine.Offsets.OFFSETXT3 then Delta3TabY = -Machine.Offsets.OFFSETXT3 end
|
|
if Machine.Offsets.OFFSETZT3 then Delta3TabZ = Machine.Offsets.OFFSETZT3 + Mill3Offs end
|
|
if Machine.Offsets.OFFSETZSOTTOTRAVE then DeltaRulliTraveZ = -abs( Machine.Offsets.OFFSETZSOTTOTRAVE) end
|
|
if Machine.Offsets.SECONDSAW then SecondSaw = ( Machine.Offsets.SECONDSAW == 1) end
|
|
if Machine.Offsets.SAWOFFSX then SawOffsX = Machine.Offsets.SAWOFFSX end
|
|
if Machine.Offsets.SAWOFFSZ then SawOffsZ = Machine.Offsets.SAWOFFSZ end
|
|
if Machine.Offsets.SAW2OFFSX then Saw2OffsX = Machine.Offsets.SAW2OFFSX end
|
|
if Machine.Offsets.SAW2OFFSZ then Saw2OffsZ = Machine.Offsets.SAW2OFFSZ end
|
|
if Machine.Offsets.SAWUNDEROFFSY then SawUnderOffsY = Machine.Offsets.SAWUNDEROFFSY end
|
|
if Machine.Offsets.SAWUNDEROFFSZ then SawUnderOffsZ = Machine.Offsets.SAWUNDEROFFSZ end
|
|
if Machine.Offsets.DEFTCPOS1 then DefTcPos1 = ( 'T' .. Machine.Offsets.DEFTCPOS1) end
|
|
if Machine.Offsets.DEFTCPOS2 then DefTcPos2 = ( 'T' .. Machine.Offsets.DEFTCPOS2) end
|
|
if Machine.Offsets.MINPRESS then MinForzaPinze = Machine.Offsets.MINPRESS end
|
|
if Machine.Offsets.MAXPRESS then MaxForzaPinze = Machine.Offsets.MAXPRESS end
|
|
if Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO then ForceToCloseRollersGate = Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO == 1 end
|
|
if Machine.Offsets.WOOD_DENSITY then WoodDensity = Machine.Offsets.WOOD_DENSITY end
|
|
if Machine.Offsets.MOTORS23KW then Motors23KW = Machine.Offsets.MOTORS23KW == 1 end
|
|
|
|
-- aggiustamenti
|
|
MinY1 = MinV1 + MinDeltaYV
|
|
MaxY1 = MaxMchY1
|
|
ParkV1 = MaxV1
|
|
ParkY1 = ParkV1 + MinDeltaYV
|
|
MinY2 = MinMchY2
|
|
MaxY2 = MaxV2 - MinDeltaYV
|
|
ParkV2 = MinV2
|
|
ParkY2 = ParkV2 - MinDeltaYV
|
|
UnloadSmT = UnloadT - 300
|
|
MaxZ1Blade = min( MaxZ1Blade, -100)
|
|
ParkX1 = EgtClamp( ParkX1, MinX1, MaxX1)
|
|
ParkTc1X1 = EgtClamp( ParkTc1X1, MinX1, MaxX1)
|
|
ParkZ1 = EgtClamp( ParkZ1, MinZ1, MaxZ1)
|
|
ParkCSawZ1 = min( ParkCSawZ1, MaxZ1)
|
|
ParkX2 = EgtClamp( ParkX2, MinX2, MaxX2)
|
|
ParkZ2 = EgtClamp( ParkZ2, MinZ2, MaxZ2)
|
|
ParkInLavZ2 = EgtClamp( ParkInLavZ2, MinZ2, MaxZ2)
|
|
ParkX3 = EgtClamp( ParkX3, MinX3, MaxX3)
|
|
ParkZ3 = EgtClamp( ParkZ3, MinZ3, MaxZ3)
|
|
Head2Y = DeltaTabY - Delta2TabY
|
|
Head2Z = DeltaTabZ - Delta2TabZ
|
|
Head3Y = DeltaTabY - Delta3TabY
|
|
Head3Z = DeltaTabZ - Delta3TabZ
|
|
end
|
|
end
|
|
end
|
|
SecondSaw = ( SecondSaw and Tc2Active)
|
|
local vtOffset23KW = Vector3d( 0, 0, EgtIf( Motors23KW, 37, 0))
|
|
|
|
EmtGeneral {
|
|
File='Essetre-PF1500MAXrl-3T.nge',
|
|
Offset = Vector3d(0.0,2497,-2193.0),
|
|
AxisMaxAdjust = 300,
|
|
AxisMaxRotAdj = 0.5,
|
|
ExitMaxAdjust = 300,
|
|
ExitMaxRotAdj = 0.5,
|
|
AngDeltaMinForHome = 80,
|
|
Special = 'Common_PF1250.mlse',
|
|
Processor = 'Common_PF1250.mlpe'}
|
|
-- in base alla corsa macchina, si carica la rulliera di carico/scarico appropriata
|
|
local sGeomConvoyer = EgtIf( MaxY1 > 6500, '_8M', '_5M')
|
|
local sBaseAux = {'BASE/SOLID', 'BASE/CONVOYER'..sGeomConvoyer, 'BASE/COLLISION', 'BASE/TC1', 'BASE/TCR', 'BASE/TC3'}
|
|
if Tc2Active then table.insert( sBaseAux, 5, 'BASE/TC2') end
|
|
if TcSpecialTools then table.insert( sBaseAux, 'BASE/TC4') end
|
|
if SecondChain then table.insert( sBaseAux, 'BASE/TC5') end
|
|
if TcAggreBladeUnder then table.insert( sBaseAux, 'BASE/TCS') end
|
|
local BaseId = EmtBase {
|
|
Name = 'Base',
|
|
Geo = 'BASE/GEO',
|
|
Aux = sBaseAux}
|
|
local X1Id = EmtAxis {
|
|
Name = 'X1',
|
|
Parent = 'Base',
|
|
Token = 'X',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d(207.0,-300.0,104.0),
|
|
Stroke = {MinX1, MaxX1},
|
|
Home = ParkX1,
|
|
Invert = true,
|
|
Geo = 'X1_AXIS/GEO',
|
|
Aux = {'X1_AXIS/SOLID', 'X1_AXIS/COLLISION'}}
|
|
-- *** Testa 1 ***
|
|
local Z1Id = EmtAxis {
|
|
Name = 'Z1',
|
|
Parent = 'X1',
|
|
Token = 'Z',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d(0.0,-140.1,563.0),
|
|
Stroke = {MinZ1, MaxZ1},
|
|
Home = ParkZ1,
|
|
Geo = 'Z1_AXIS/GEO',
|
|
Aux = {'Z1_AXIS/SOLID', 'Z1_AXIS/COLLISION'}}
|
|
EmtAxis {
|
|
Name = 'C1',
|
|
Parent = 'Z1',
|
|
Token = 'C',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d(0.0,0.0,503.0),
|
|
Stroke = {MinC1, MaxC1},
|
|
Home = ParkC1,
|
|
Geo = EgtIf( Motors23KW, 'C1_AXIS_23KW/GEO', 'C1_AXIS/GEO'),
|
|
Aux = {EgtIf( Motors23KW, 'C1_AXIS_23KW/SOLID', 'C1_AXIS/SOLID'), EgtIf( Motors23KW, 'C1_AXIS_23KW/COLLISION', 'C1_AXIS/COLLISION')}}
|
|
EmtAxis {
|
|
Name = 'B1',
|
|
Parent = 'C1',
|
|
Token = 'B',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = X_AX(),
|
|
Pos = Point3d(-108.4,0.0,MillOffs),
|
|
Stroke = {MinB1, MaxB1},
|
|
Home = ParkB1,
|
|
Geo = EgtIf( Motors23KW, 'B1_AXIS_23KW/GEO', 'B1_AXIS/GEO'),
|
|
Aux = {EgtIf( Motors23KW, 'B1_AXIS_23KW/SOLID', 'B1_AXIS/SOLID'), EgtIf( Motors23KW, 'B1_AXIS_23KW/COLLISION', 'B1_AXIS/COLLISION')}}
|
|
-- Frese
|
|
local H11Id = EmtHead {
|
|
Name = 'H11',
|
|
Parent = 'B1',
|
|
HSet = 'H11',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d(0,0,0),
|
|
TDir = Z_AX(),
|
|
ADir = -Y_AX(),
|
|
Rot1W = 0.2,
|
|
Rot2Stroke = { MinB1, MaxB1},
|
|
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
|
Geo = 'H11_HEAD/GEO'}
|
|
-- Lama
|
|
if FirstSaw then
|
|
local H12Id = EmtHead {
|
|
Name = 'H12',
|
|
Parent = 'B1',
|
|
HSet = 'H11',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( SawOffsX, SawOffsY, SawOffsZ),
|
|
TDir = Vector3d( 0, sin( SawB1Offs), cos( SawB1Offs)),
|
|
ADir = -X_AX(),
|
|
Rot1W = 0.5,
|
|
Rot2Stroke = { MinB1b, MaxB1b},
|
|
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
|
Geo = 'H12_HEAD/GEO'}
|
|
EgtSetInfo( H12Id, 'ZMAXONROT', '1,190')
|
|
end
|
|
-- Lama 2
|
|
if SecondSaw then
|
|
local H16Id = EmtHead {
|
|
Name = 'H16',
|
|
Parent = 'B1',
|
|
HSet = 'H11',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( Saw2OffsX, Saw2OffsY, Saw2OffsZ),
|
|
TDir = Vector3d( 0, -sin( Saw2B1Offs), cos( Saw2B1Offs)),
|
|
ADir = X_AX(),
|
|
Rot1W = 0.5,
|
|
Rot2Stroke = { MinB1b, MaxB1b},
|
|
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
|
Geo = 'H16_HEAD/GEO'}
|
|
EgtSetInfo( H16Id, 'ZMAXONROT', '1,190')
|
|
end
|
|
-- Sega a catena
|
|
EmtAxis {
|
|
Name = 'A1',
|
|
Parent = 'B1',
|
|
Token = '**',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( 0, 0, 0),
|
|
Stroke = { 0, 270},
|
|
Home = 0,
|
|
Geo = 'A1_AXIS/GEO'}
|
|
local H13Id = EmtHead {
|
|
Name = 'H13',
|
|
Parent = 'A1',
|
|
HSet = 'H11',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d(0,0,-ChSawLen),
|
|
TDir = -X_AX(),
|
|
ADir = Z_AX(),
|
|
Rot1W = 0.2,
|
|
Rot2Stroke = { -90.1, 90.1},
|
|
SolCh = MCH_SCC.ADIR_NEAR,
|
|
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
|
Geo = 'H13_HEAD/GEO'}
|
|
EgtSetInfo( H13Id, 'ZSAFEDELTA', '60')
|
|
EgtSetInfo( H13Id, 'ZMAXONROT', '1,80')
|
|
|
|
-- Eventuale rinvio angolare
|
|
if DrillingAggregate then
|
|
local H14Id = EmtHead {
|
|
Name = 'H14',
|
|
Parent = 'A1',
|
|
HSet = 'H11',
|
|
Type = MCH_HT.MULTI,
|
|
ExitNbr = 6,
|
|
Pos1 = Point3d( 0, 0, -206),
|
|
TDir1 = Z_AX(),
|
|
Pos2 = Point3d( -40, 0, -206),
|
|
TDir2 = Z_AX(),
|
|
Pos3 = Point3d( -80, 0, -206),
|
|
TDir3 = Z_AX(),
|
|
Pos4 = Point3d( 40, 0, -206),
|
|
TDir4 = Z_AX(),
|
|
Pos5 = Point3d( 80, 0, -206),
|
|
TDir5 = Z_AX(),
|
|
Pos6 = Point3d( 120, 0, -206),
|
|
TDir6 = Z_AX(),
|
|
ADir = X_AX(),
|
|
Rot1W = 0.2,
|
|
Rot2Stroke = { -91, 90},
|
|
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
|
Geo = 'H14_HEAD/GEO',
|
|
Aux = {'H14_HEAD/SOLID', 'H14_HEAD/COLLISION'}}
|
|
end
|
|
|
|
-- *** Testa 3 ***
|
|
local X3Id = EmtAxis {
|
|
Name = 'X3',
|
|
Parent = 'Base',
|
|
Token = 'X',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d( 207, -300, 104),
|
|
Stroke = {MinX3, MaxX3},
|
|
Home = ParkX3,
|
|
Invert = true,
|
|
Geo = 'X3_AXIS/GEO',
|
|
Aux = {'X3_AXIS/SOLID', 'X3_AXIS/COLLISION'}}
|
|
local Z3Id = EmtAxis {
|
|
Name = 'Z3',
|
|
Parent = 'X3',
|
|
Token = 'Z',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( 0, -140, 563),
|
|
Stroke = {MinZ3, MaxZ3},
|
|
Home = ParkZ3,
|
|
Geo = 'Z3_AXIS/GEO',
|
|
Aux = {'Z3_AXIS/SOLID', 'Z3_AXIS/COLLISION'}}
|
|
local C3Id = EmtAxis {
|
|
Name = 'C3',
|
|
Parent = 'Z3',
|
|
Token = 'C',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d( Head3X+163, Head3Y, 503.0),
|
|
Stroke = {MinC3, MaxC3},
|
|
Home = 0,
|
|
Geo = 'C3_AXIS/GEO',
|
|
Aux = {'C3_AXIS/SOLID', 'C3_AXIS/COLLISION'}}
|
|
local B3Id = EmtAxis {
|
|
Name = 'B3',
|
|
Parent = 'C3',
|
|
Token = 'B',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = -Y_AX(),
|
|
Pos = Point3d( 0, -163, Head3Z),
|
|
Stroke = {MinB3, MaxB3},
|
|
Home = ParkB3,
|
|
Geo = 'B3_AXIS/GEO',
|
|
Aux = {'B3_AXIS/SOLID', 'B3_AXIS/COLLISION'}}
|
|
local vtMoveX3 = Vector3d( 0, Head3Y, 0)
|
|
EgtMove( EgtGetFirstNameInGroup( X3Id, 'SOLID'), vtMoveX3, GDB_RT.GLOB)
|
|
local vtMoveZ3 = Vector3d( 0, Head3Y, Head3Z -109.25)
|
|
EgtMove( EgtGetFirstNameInGroup( Z3Id, 'SOLID'), vtMoveZ3, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( Z3Id, 'COLLISION'), vtMoveZ3, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( C3Id, 'SOLID'), vtMoveZ3, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( C3Id, 'COLLISION'), vtMoveZ3, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( B3Id, 'SOLID'), vtMoveZ3, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( B3Id, 'COLLISION'), vtMoveZ3, GDB_RT.GLOB)
|
|
-- Frese
|
|
local H31Id = EmtHead {
|
|
Name = 'H38',
|
|
Parent = 'B3',
|
|
HSet = 'H38',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( Head3X, Head3Y, Head3Z),
|
|
TDir = X_AX(),
|
|
ADir = -Y_AX(),
|
|
Rot1W = 0.2,
|
|
Rot2Stroke = {MinB3, MaxB3},
|
|
OthColl = {'B3/SOLID', 'C3/SOLID'},
|
|
Geo = 'H38_HEAD/GEO'}
|
|
-- *** Testa 2 ***
|
|
local Z2Id = EmtAxis {
|
|
Name = 'Z2',
|
|
Parent = 'Base',
|
|
Token = 'Z',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d(291.0,-866,-2858.3),
|
|
Stroke = {MinZ2, MaxZ2},
|
|
Home = ParkZ2,
|
|
Invert = true,
|
|
Geo = 'Z2_AXIS/GEO',
|
|
Aux = {'Z2_AXIS/SOLID', 'Z2_AXIS/COLLISION'}}
|
|
local X2Id = EmtAxis {
|
|
Name = 'X2',
|
|
Parent = 'Z2',
|
|
Token = 'X',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d( 115.8, 4452.9, -2840),
|
|
Stroke = {MinX2, MaxX2},
|
|
Home = ParkX2,
|
|
Geo = 'X2_AXIS/GEO',
|
|
Aux = {'X2_AXIS/SOLID', 'X2_AXIS/COLLISION'}}
|
|
local C2Id = EmtAxis {
|
|
Name = 'C2',
|
|
Parent = 'X2',
|
|
Token = 'C',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = -Z_AX(),
|
|
Pos = Point3d( Head2X, Head2Y, Head2Z-480),
|
|
Stroke = {MinC2, MaxC2},
|
|
Home = ParkC2,
|
|
Geo = EgtIf( Motors23KW, 'C2_AXIS_23KW/GEO', 'C2_AXIS/GEO'),
|
|
Aux = {EgtIf( Motors23KW, 'C2_AXIS_23KW/SOLID', 'C2_AXIS/SOLID'), EgtIf( Motors23KW, 'C2_AXIS_23KW/COLLISION', 'C2_AXIS/COLLISION')}}
|
|
local B2Id = EmtAxis {
|
|
Name = 'B2',
|
|
Parent = 'C2',
|
|
Token = 'B',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = X_AX(),
|
|
Pos = Point3d( Head2X-110, Head2Y, Head2Z-Mill2Offs),
|
|
Stroke = {MinB2, MaxB2},
|
|
Home = ParkB2,
|
|
Geo = EgtIf( Motors23KW, 'B2_AXIS_23KW/GEO', 'B2_AXIS/GEO'),
|
|
Aux = {EgtIf( Motors23KW, 'B2_AXIS_23KW/SOLID', 'B2_AXIS/SOLID'), EgtIf( Motors23KW, 'B2_AXIS_23KW/COLLISION', 'B2_AXIS/COLLISION')}}
|
|
EmtAxis {
|
|
Name = 'A2',
|
|
Parent = 'B2',
|
|
Token = '**',
|
|
Type = MCH_AT.ROTARY,
|
|
Dir = -Z_AX(),
|
|
Pos = Point3d( Head2X, Head2Y, Head2Z),
|
|
Stroke = { 0, 270},
|
|
Home = 0,
|
|
Geo = 'A2_AXIS/GEO'}
|
|
|
|
local vtMoveZ2 = Vector3d( 0, 0, Head2Z + 1844.0)
|
|
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), vtMoveZ2 - vtOffset23KW, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'COLLISION'), vtMoveZ2 - vtOffset23KW, GDB_RT.GLOB)
|
|
local vtMoveX2 = Vector3d( 0, Head2Y - 4822.9, Head2Z + 1844.0)
|
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMoveX2 - vtOffset23KW, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMoveX2 - vtOffset23KW, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( C2Id, 'SOLID'), vtMoveX2, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( C2Id, 'COLLISION'), vtMoveX2, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( B2Id, 'SOLID'), vtMoveX2, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( B2Id, 'COLLISION'), vtMoveX2, GDB_RT.GLOB)
|
|
-- Frese
|
|
local H21Id = EmtHead {
|
|
Name = 'H21',
|
|
Parent = 'B2',
|
|
HSet = 'H21',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( Head2X, Head2Y, Head2Z),
|
|
TDir = -Z_AX(),
|
|
Rot1W = 0.2,
|
|
Rot2Stroke = { MinB2, MaxB2},
|
|
OthColl = {'B2/SOLID', 'C2/SOLID'},
|
|
Geo = 'H21_HEAD/GEO'}
|
|
EgtSetInfo( H21Id, 'ABOVE', '0')
|
|
EgtSetInfo( H21Id, 'ZHOMEDOWN', '1')
|
|
-- Lama
|
|
if TcAggreBladeUnder then
|
|
local H22Id = EmtHead {
|
|
Name = 'H22',
|
|
Parent = 'A2',
|
|
HSet = 'H21',
|
|
Type = MCH_HT.STD,
|
|
Pos = Point3d( SawUnderOffsX+Head2X, SawUnderOffsY+Head2Y, SawUnderOffsZ+Head2Z),
|
|
TDir = Vector3d( 0, sin( SawUnderB2Offs), -cos( SawUnderB2Offs)),
|
|
ADir = Y_AX(),
|
|
Rot1W = 0.5,
|
|
Rot2Stroke = { MinB2b, MaxB2b},
|
|
OthColl = {'B2/SOLID', 'C2/SOLID'},
|
|
Geo = 'H22_HEAD/GEO'}
|
|
EgtSetInfo( H22Id, 'ABOVE', '0')
|
|
EgtSetInfo( H22Id, 'ZHOMEDOWN', '1')
|
|
end
|
|
-- *** Carrelli ***
|
|
-- Morse
|
|
local Y1Id = EmtAxis {
|
|
Name = 'Y1',
|
|
Parent = 'Base',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = -X_AX(),
|
|
Pos = Point3d(-865.7,2626.8,-866.0),
|
|
Stroke = { MinY1, MaxY1},
|
|
Home = ParkY1,
|
|
Geo = 'Y1_AXIS/GEO',
|
|
Aux = 'Y1_AXIS/SOLID'}
|
|
local PY1Id = EmtAxis {
|
|
Name = 'PY1',
|
|
Parent = 'Y1',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d(-469.6,2367.5,-751.6),
|
|
Stroke = {0, MaxHoOpen},
|
|
Home = MaxHoOpen,
|
|
Geo = 'PY1_AXIS/GEO',
|
|
Aux = 'PY1_AXIS/SOLID'}
|
|
local Y2Id = EmtAxis {
|
|
Name = 'Y2',
|
|
Parent = 'Base',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = -X_AX(),
|
|
Pos = Point3d(865.7,2626.8,-866.0),
|
|
Stroke = { MinY2, MaxY2},
|
|
Home = ParkY2,
|
|
Geo = 'Y2_AXIS/GEO',
|
|
Aux = 'Y2_AXIS/SOLID'}
|
|
local PY2Id = EmtAxis {
|
|
Name = 'PY2',
|
|
Parent = 'Y2',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d(469.6,2367.5,-751.6),
|
|
Stroke = {0, MaxHoOpen},
|
|
Home = MaxHoOpen,
|
|
Geo = 'PY2_AXIS/GEO',
|
|
Aux = 'PY2_AXIS/SOLID'}
|
|
-- Rulli
|
|
local V1Id = EmtAxis {
|
|
Name = 'V1',
|
|
Parent = 'Base',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = -X_AX(),
|
|
Pos = Point3d(-875.5,1072.0,-1509.1),
|
|
Stroke = { MinV1, MaxV1},
|
|
Home = ParkV1,
|
|
Geo = 'V1_AXIS/GEO',
|
|
Aux = {'V1_AXIS/SOLID', 'V1_AXIS/COLLISION'}}
|
|
local PV1Id = EmtAxis {
|
|
Name = 'PV1',
|
|
Parent = 'V1',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d(-194.0,2364.7,-879.1),
|
|
Stroke = {0, MaxHoOpen},
|
|
Home = MaxHoOpen,
|
|
Geo = 'PV1_AXIS/GEO',
|
|
Aux = 'PV1_AXIS/SOLID'}
|
|
local QV1Id = EmtAxis {
|
|
Name = 'QV1',
|
|
Parent = 'V1',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d(-287.0,2481.0,-943.0),
|
|
Stroke = {0, MaxVeOpen},
|
|
Home = MaxVeOpen,
|
|
Geo = 'QV1_AXIS/GEO',
|
|
Aux = 'QV1_AXIS/SOLID'}
|
|
local V2Id = EmtAxis {
|
|
Name = 'V2',
|
|
Parent = 'Base',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = -X_AX(),
|
|
Pos = Point3d(875.5,1072.0,-1509.1),
|
|
Stroke = { MinV2, MaxV2},
|
|
Home = ParkV2,
|
|
Geo = 'V2_AXIS/GEO',
|
|
Aux = {'V2_AXIS/SOLID', 'V2_AXIS/COLLISION'}}
|
|
local PV2Id = EmtAxis {
|
|
Name = 'PV2',
|
|
Parent = 'V2',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Y_AX(),
|
|
Pos = Point3d(194.0,2364.7,-879.1),
|
|
Stroke = {0, MaxHoOpen},
|
|
Home = MaxHoOpen,
|
|
Geo = 'PV2_AXIS/GEO',
|
|
Aux = 'PV2_AXIS/SOLID'}
|
|
local QV2Id = EmtAxis {
|
|
Name = 'QV2',
|
|
Parent = 'V2',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = Z_AX(),
|
|
Pos = Point3d(287.0,2481.0,-943.0),
|
|
Stroke = {0, MaxVeOpen},
|
|
Home = MaxVeOpen,
|
|
Geo = 'QV2_AXIS/GEO',
|
|
Aux = 'QV2_AXIS/SOLID'}
|
|
-- *** Tavola ***
|
|
EmtAxis {
|
|
Name = 'T',
|
|
Parent = 'Base',
|
|
--Token = '**',
|
|
Type = MCH_AT.LINEAR,
|
|
Dir = - X_AX(),
|
|
Pos = Point3d(0.0,2450.0,-958.0),
|
|
Stroke = {-30000, 30000},
|
|
Home = LoadT,
|
|
Geo = 'T_AXIS/GEO'}
|
|
EmtTable {
|
|
Name = 'Tab',
|
|
Parent = 'T',
|
|
Type = MCH_TT.FLAT,
|
|
Ref1 = Point3d( - DimTabX, DeltaTabY, DeltaTabZ),
|
|
Geo = 'TABLE/GEO',
|
|
Aux = 'TABLE/SOLID'}
|
|
-- *** ToolChanger ***
|
|
local ptTc1 = Point3d( 150, 351, -221 + ( DeltaTabZ - DeltaRulliTraveZ + 55))
|
|
local vtDt1 = Vector3d( 0, 0, - 102.5)
|
|
EmtTcPos {
|
|
Name = 'T1',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + EgtIf( FirstSaw, Vector3d( SawOffsX, SawOffsZ, 0), V_NULL()),
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T1'}
|
|
EmtTcPos {
|
|
Name = 'T2',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T2'}
|
|
EmtTcPos {
|
|
Name = 'T3',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + 2 * vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T3'}
|
|
EmtTcPos {
|
|
Name = 'T4',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + 3 * vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T4'}
|
|
EmtTcPos {
|
|
Name = 'T5',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + 4 * vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T5'}
|
|
EmtTcPos {
|
|
Name = 'T6',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + 5 * vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T6'}
|
|
EmtTcPos {
|
|
Name = 'T7',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + 6 * vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T7'}
|
|
EmtTcPos {
|
|
Name = 'T8',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + 7 * vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T8'}
|
|
EmtTcPos {
|
|
Name = 'T9',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + 8 * vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T9'}
|
|
EmtTcPos {
|
|
Name = 'T10',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + 9 * vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T10'}
|
|
EmtTcPos {
|
|
Name = 'T11',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + 10 * vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T11'}
|
|
EmtTcPos {
|
|
Name = 'T12',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + 11 * vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T12'}
|
|
EmtTcPos {
|
|
Name = 'T13',
|
|
Parent = 'Base',
|
|
Pos = ptTc1 + 12 * vtDt1,
|
|
TDir = Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T13'}
|
|
|
|
if Tc2Active then
|
|
local ptTc2 = Point3d( 150, 5018.75, -221 + ( DeltaTabZ - DeltaRulliTraveZ + 55))
|
|
local vtDt2 = Vector3d( 0, 0, - 102.5)
|
|
EmtTcPos {
|
|
Name = 'T21',
|
|
Parent = 'Base',
|
|
Pos = ptTc2 + EgtIf( SecondSaw, Vector3d( -Saw2OffsX, -Saw2OffsZ, 0), V_NULL()),
|
|
TDir = -Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T21'}
|
|
EmtTcPos {
|
|
Name = 'T22',
|
|
Parent = 'Base',
|
|
Pos = ptTc2 + vtDt2,
|
|
TDir = -Y_AX(),
|
|
ADir = -X_AX(),
|
|
Geo = 'BASE/T22'}
|
|
EmtTcPos {
|
|
Name = 'T23',
|
|
Parent = 'Base',
|
|
Pos = ptTc2 + 2 * vtDt2,
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T23'}
|
|
EmtTcPos {
|
|
Name = 'T24',
|
|
Parent = 'Base',
|
|
Pos = ptTc2 + 3 * vtDt2,
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T24'}
|
|
EmtTcPos {
|
|
Name = 'T25',
|
|
Parent = 'Base',
|
|
Pos = ptTc2 + 4 * vtDt2,
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T25'}
|
|
EmtTcPos {
|
|
Name = 'T26',
|
|
Parent = 'Base',
|
|
Pos = ptTc2 + 5 * vtDt2,
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T26'}
|
|
EmtTcPos {
|
|
Name = 'T27',
|
|
Parent = 'Base',
|
|
Pos = ptTc2 + 6 * vtDt2,
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T27'}
|
|
EmtTcPos {
|
|
Name = 'T28',
|
|
Parent = 'Base',
|
|
Pos = ptTc2 + 7 * vtDt2,
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T28'}
|
|
EmtTcPos {
|
|
Name = 'T29',
|
|
Parent = 'Base',
|
|
Pos = ptTc2 + 8 * vtDt2,
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T29'}
|
|
EmtTcPos {
|
|
Name = 'T30',
|
|
Parent = 'Base',
|
|
Pos = ptTc2 + 9 * vtDt2,
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T30'}
|
|
end
|
|
local ptTc3 = Point3d( 600, 1031, -200.8 + ( DeltaTabZ - DeltaRulliTraveZ + 55))
|
|
EmtTcPos {
|
|
Name = 'T101',
|
|
Parent = 'Base',
|
|
Pos = ptTc3,
|
|
TDir = -X_AX(),
|
|
ADir = Z_AX(),
|
|
Geo = 'BASE/T101'}
|
|
local ptTc4 = Point3d( 750, 1411, -200.8 + ( DeltaTabZ - DeltaRulliTraveZ + 55))
|
|
EmtTcPos {
|
|
Name = 'T111',
|
|
Parent = 'Base',
|
|
Pos = ptTc4,
|
|
TDir = -X_AX(),
|
|
ADir = Z_AX(),
|
|
Geo = 'BASE/T111'}
|
|
local ptTc5 = Point3d( 750, 1811, -321 + ( DeltaTabZ - DeltaRulliTraveZ + 55))
|
|
EmtTcPos {
|
|
Name = 'T121',
|
|
Parent = 'Base',
|
|
Type = MCH_HT.MULTI,
|
|
ExitNbr = 6,
|
|
Pos1 = ptTc5 + Vector3d( 0, 0, 0),
|
|
TDir1 = Z_AX(),
|
|
Pos2 = ptTc5 + Vector3d( -40, 0, 0),
|
|
TDir2 = Z_AX(),
|
|
Pos3 = ptTc5 + Vector3d( -80, 0, 0),
|
|
TDir3 = Z_AX(),
|
|
Pos4 = ptTc5 + Vector3d( 40, 0, 0),
|
|
TDir4 = Z_AX(),
|
|
Pos5 = ptTc5 + Vector3d( 80, 0, 0),
|
|
TDir5 = Z_AX(),
|
|
Pos6 = ptTc5 + Vector3d( 120, 0, 0),
|
|
TDir6 = Z_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T121',
|
|
Aux = 'BASE/T121_HS'}
|
|
local ptTcS = Point3d( -1, 369.75, -1675 + ( DeltaTabZ - DeltaRulliTraveZ + 55))
|
|
EmtTcPos {
|
|
Name = 'T201',
|
|
Parent = 'Base',
|
|
Pos = ptTcS + EgtIf( TcAggreBladeUnder, Vector3d( 0, SawUnderOffsY, SawUnderOffsZ), V_NULL()),
|
|
TDir = -Z_AX(),
|
|
ADir = Y_AX(),
|
|
Geo = 'BASE/T201'}
|
|
local ptTcR = Point3d( -0.5, 5202, -1973 + ( DeltaTabZ - DeltaRulliTraveZ + 55))
|
|
EmtTcPos {
|
|
Name = 'T220',
|
|
Parent = 'Base',
|
|
Pos = ptTcR + VectorFromSpherical( 324.3, -30, 0),
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T220'}
|
|
EmtTcPos {
|
|
Name = 'T221',
|
|
Parent = 'Base',
|
|
Pos = ptTcR + VectorFromSpherical( 324.3, -60, 0),
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T221'}
|
|
EmtTcPos {
|
|
Name = 'T222',
|
|
Parent = 'Base',
|
|
Pos = ptTcR + VectorFromSpherical( 324.3, -90, 0),
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T222'}
|
|
EmtTcPos {
|
|
Name = 'T223',
|
|
Parent = 'Base',
|
|
Pos = ptTcR + VectorFromSpherical( 324.3, -120, 0),
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T223'}
|
|
EmtTcPos {
|
|
Name = 'T224',
|
|
Parent = 'Base',
|
|
Pos = ptTcR + VectorFromSpherical( 324.3, -150, 0),
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T224'}
|
|
EmtTcPos {
|
|
Name = 'T225',
|
|
Parent = 'Base',
|
|
Pos = ptTcR + VectorFromSpherical( 324.3, -180, 0),
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T225'}
|
|
EmtTcPos {
|
|
Name = 'T226',
|
|
Parent = 'Base',
|
|
Pos = ptTcR + VectorFromSpherical( 324.3, -210, 0),
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T226'}
|
|
EmtTcPos {
|
|
Name = 'T227',
|
|
Parent = 'Base',
|
|
Pos = ptTcR + VectorFromSpherical( 324.3, -240, 0),
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T227'}
|
|
EmtTcPos {
|
|
Name = 'T228',
|
|
Parent = 'Base',
|
|
Pos = ptTcR + VectorFromSpherical( 324.3, -270, 0),
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T228'}
|
|
EmtTcPos {
|
|
Name = 'T229',
|
|
Parent = 'Base',
|
|
Pos = ptTcR + VectorFromSpherical( 324.3, -300, 0),
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T229'}
|
|
EmtTcPos {
|
|
Name = 'T230',
|
|
Parent = 'Base',
|
|
Pos = ptTcR + VectorFromSpherical( 324.3, -330, 0),
|
|
TDir = -Y_AX(),
|
|
ADir = X_AX(),
|
|
Geo = 'BASE/T230'}
|
|
|
|
-- Aggiusto posizioni geometriche
|
|
local vtMovB = Vector3d( 0, 0, ( DeltaTabZ - DeltaRulliTraveZ + 55))
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'COLLISION'), vtMovB, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'SIGN') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC1') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC2') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC3') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
|
if TcSpecialTools then EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC4') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB) end
|
|
if SecondChain then EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC5') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB) end
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TCR') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
|
if TcSpecialTools then EgtMove( EgtGetFirstNameInGroup( BaseId, 'TCS') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB) end
|
|
if TcSpecialTools then EgtMove( EgtGetFirstNameInGroup( BaseId, 'T121') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB) end
|
|
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMovB, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( Z1Id, 'SOLID'), vtOffset23KW, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( Z1Id, 'COLLISION'), vtOffset23KW, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( X3Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( X3Id, 'COLLISION'), vtMovB, GDB_RT.GLOB)
|
|
local vtMove = Vector3d( 0, ( DeltaTabY - 1915.5), ( DeltaTabZ + 1321.0))
|
|
EgtMove( EgtGetFirstNameInGroup( BaseId, 'CONVOYER'..sGeomConvoyer), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( Y1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( PY1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( Y2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( PY2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( V1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( V1Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( PV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( QV1Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( V2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( V2Id, 'COLLISION'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( PV2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
EgtMove( EgtGetFirstNameInGroup( QV2Id, 'SOLID'), vtMove, GDB_RT.GLOB)
|
|
local vtMoveColl = Vector3d( 0, 0, MaxZ1Blade)
|
|
EgtMove( EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( BaseId, 'COLLISION'), 'CEIL'), vtMoveColl, GDB_RT.GLOB)
|
|
|
|
-- Assegno identificativi alle spie delle morse
|
|
PY1LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( Y1Id, 'SOLID') or GDB_ID.NULL, 'Light')
|
|
PY2LightId = EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( Y2Id, 'SOLID') or GDB_ID.NULL, 'Light')
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzioni richiamate per modificare i dati macchina in casi particolari
|
|
--function OnSetTable()
|
|
--end
|
|
|
|
---------------------------------------------------------------------
|
|
function OnSetHead()
|
|
-- se testa H11 (fresa)
|
|
if EMC.HEAD == 'H11' then
|
|
local nTc = GetTcForTopHeadTool( EMC.TCPOS)
|
|
if nTc ~= 2 then
|
|
EmtModifyAxisHome( 'X1', ParkX1)
|
|
else
|
|
EmtModifyAxisHome( 'X1', ParkTc2X1)
|
|
end
|
|
EmtModifyAxisStroke( 'Z1', {MinZ1, MaxZ1})
|
|
if EMC.TOTLEN < LongTool then
|
|
EmtModifyAxisHome( 'Z1', ParkZ1)
|
|
EmtModifyAxisStroke( 'C1', {MinC1, MaxC1})
|
|
EmtModifyAxisHome( 'C1', ParkC1)
|
|
EmtModifyAxisHome( 'B1', ParkB1)
|
|
else
|
|
EmtModifyAxisHome( 'Z1', MaxZ1)
|
|
if nTc ~= 2 then
|
|
EmtModifyAxisStroke( 'C1', { ParkLongTc1C1 - 20, ParkLongTc1C1 + 20})
|
|
EmtModifyAxisHome( 'C1', ParkLongTc1C1)
|
|
else
|
|
EmtModifyAxisStroke( 'C1', { ParkLongTc2C1 - 20, ParkLongTc2C1 + 20})
|
|
EmtModifyAxisHome( 'C1', ParkLongTc2C1)
|
|
end
|
|
EmtModifyAxisHome( 'B1', ParkLongB1)
|
|
end
|
|
EmtModifyAxisDirection( 'B1', X_AX())
|
|
-- se testa H12 (lama)
|
|
elseif EMC.HEAD == 'H12' then
|
|
EmtModifyAxisHome( 'X1', ParkX1)
|
|
EmtModifyAxisHome( 'Z1', ParkZ1)
|
|
EmtModifyAxisStroke( 'Z1', {MinZ1, MaxZ1Blade})
|
|
EmtModifyAxisStroke( 'C1', {MinC1, MaxC1})
|
|
EmtModifyAxisHome( 'C1', ParkC1)
|
|
EmtModifyAxisHome( 'B1', ParkB1)
|
|
EmtModifyAxisDirection( 'B1', Vector3d( cos( SawC1Offs), -sin( SawC1Offs), 0))
|
|
-- se testa H13 (sega a catena)
|
|
elseif EMC.HEAD == 'H13' then
|
|
-- aggiustamenti per distanza
|
|
local dDist = EgtIf( EMC.DIST and abs( EMC.DIST) > 1, EMC.DIST, ChSawLen)
|
|
EMC.EXIT = EMC.EXIT or 1
|
|
EmtModifyExitPosition( EMC.HEAD, EMC.EXIT, Point3d( 0, 0, -dDist))
|
|
local vtMove = Point3d( 0, 0, -dDist) - Point3d( EMC.EXITPOS)
|
|
local ExitId = EgtGetFirstNameInGroup( EgtGetHeadId( EMC.HEAD), 'T'..tostring( EMC.EXIT))
|
|
EgtMove( ExitId, vtMove)
|
|
-- recupero il valore dell'asse virtuale bloccato A
|
|
local CSawPosA = GetCurrChainSawingVirtualAxis()
|
|
EmtModifyAxisHome( 'X1', ParkCSawX1)
|
|
EmtModifyAxisHome( 'Z1', GetChainSawZHomeFromVirtualAxis( CSawPosA, EMC.TOTLEN))
|
|
EmtModifyAxisStroke( 'Z1', {MinZ1, MaxZ1})
|
|
EmtModifyAxisStroke( 'C1', {MinC1, MaxC1})
|
|
EmtModifyAxisHome( 'C1', GetChainSawCHomeFromVirtualAxis( CSawPosA, EMC.TOTLEN))
|
|
EmtModifyAxisHome( 'B1', EgtIf( EMC.TOTLEN < MinLengthLongCSaw, ParkCSawB1, ParkLongCSawB1))
|
|
EmtModifyAxisDirection( 'B1', X_AX())
|
|
-- se testa H14 (aggregato forature multiplo)
|
|
elseif EMC.HEAD == 'H14' then
|
|
-- recupero il valore dell'asse virtuale bloccato A
|
|
local MultiDrillPosA = GetCurrMultiDrillVirtualAxis()
|
|
EmtModifyAxisHome( 'X1', ParkMultiDrillX1)
|
|
EmtModifyAxisHome( 'Z1', ParkMultiDrillZ1)
|
|
EmtModifyAxisStroke( 'Z1', {MinZ1, MaxZ1})
|
|
EmtModifyAxisStroke( 'C1', {MinC1, MaxC1})
|
|
EmtModifyAxisHome( 'C1', GetMultiDrillCHomeFromVirtualAxis( MultiDrillPosA, EMC.TOTLEN))
|
|
EmtModifyAxisHome( 'B1', EgtIf( EMC.TOTLEN < MinLengthLongCSaw, ParkCSawB1, ParkLongCSawB1))
|
|
EmtModifyAxisDirection( 'B1', X_AX())
|
|
-- se testa H16 ( seconda lama)
|
|
elseif EMC.HEAD == 'H16' then
|
|
EmtModifyAxisHome( 'X1', ParkTc2X1)
|
|
EmtModifyAxisHome( 'Z1', ParkZ1)
|
|
EmtModifyAxisStroke( 'Z1', {MinZ1, MaxZ1Blade})
|
|
EmtModifyAxisStroke( 'C1', {MinC1, MaxC1})
|
|
EmtModifyAxisHome( 'C1', ParkC1)
|
|
EmtModifyAxisHome( 'B1', ParkB1)
|
|
EmtModifyAxisDirection( 'B1', Vector3d( cos( Saw2C1Offs), sin( Saw2C1Offs), 0))
|
|
elseif EMC.HEAD == 'H21' then
|
|
if not EMC.TOTDIAM or EMC.TOTDIAM > 300 then
|
|
EmtModifyAxisStroke( 'B2', {MinB2b, MaxB2b})
|
|
else
|
|
EmtModifyAxisStroke( 'B2', {MinB2, MaxB2})
|
|
end
|
|
elseif EMC.HEAD == 'H38' then
|
|
;
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione che riconosce TC per utensili testa sopra
|
|
function GetTcForTopHeadTool( sTcPos)
|
|
if sTcPos == 'T1' or sTcPos == 'T2' or sTcPos == 'T3' or sTcPos == 'T4' or sTcPos == 'T5' or
|
|
sTcPos == 'T6' or sTcPos == 'T7' or sTcPos == 'T8' or sTcPos == 'T9' or
|
|
sTcPos == 'T10' or sTcPos == 'T11' or sTcPos == 'T12' or sTcPos == 'T13' or
|
|
sTcPos == 'T101' or sTcPos == 'T121' or sTcPos == 'T111' then
|
|
return 1
|
|
elseif sTcPos == 'T21' or sTcPos == 'T22' or sTcPos == 'T23' or sTcPos == 'T24' or sTcPos == 'T25' or
|
|
sTcPos == 'T26' or sTcPos == 'T27' or sTcPos == 'T28' or sTcPos == 'T29' or sTcPos == 'T30' then
|
|
return 2
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
function GetHeadSet( sHead)
|
|
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H14' or sHead == 'H16' then
|
|
return 1
|
|
elseif sHead == 'H21' or sHead == 'H22' then
|
|
return 2
|
|
elseif sHead == 'H39' or sHead == 'H38' then
|
|
return 3
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
function GetHeadSetFromTcPos( sTcPos)
|
|
local TCPOS_1A = { 'T1', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', 'T11', 'T12', 'T13'} -- CU montante DX
|
|
local TCPOS_1B = { 'T101', 'T121', 'T111'} -- CU sotto traversa
|
|
local TCPOS_1C = { 'T21', 'T22', 'T23', 'T24', 'T25', 'T26', 'T27', 'T28', 'T29', 'T30'} -- CU montante sinistro
|
|
local TCPOS_2A = { 'T220', 'T221', 'T222', 'T223', 'T224', 'T225', 'T226', 'T227', 'T228', 'T229', 'T230'} -- CU margherita testa 2
|
|
local TCPOS_2B = { 'T201'}
|
|
local TCPOS_3 = { 'T301'} -- CU lama su aggregato testa 2
|
|
for _, sVal in ipairs( TCPOS_1A) do
|
|
if sVal == sTcPos then return 1, 1 end
|
|
end
|
|
for _, sVal in ipairs( TCPOS_1B) do
|
|
if sVal == sTcPos then return 1, 2 end
|
|
end
|
|
for _, sVal in ipairs( TCPOS_1C) do
|
|
if sVal == sTcPos then return 1, 3 end
|
|
end
|
|
for _, sVal in ipairs( TCPOS_2A) do
|
|
if sVal == sTcPos then return 2, 1 end
|
|
end
|
|
for _, sVal in ipairs( TCPOS_2B) do
|
|
if sVal == sTcPos then return 2, 2 end
|
|
end
|
|
for _, sVal in ipairs( TCPOS_3) do
|
|
if sVal == sTcPos then return 3, 1 end
|
|
end
|
|
return 0, 0
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione che ritorna bool per dire se esiste o meno al testa richiesta
|
|
function IsHeadExisting( nHeadSet)
|
|
if nHeadSet == 1 then
|
|
return H11Id ~= nil
|
|
elseif nHeadSet == 2 then
|
|
return H21Id ~= nil
|
|
elseif nHeadSet == 3 then
|
|
return H31Id ~= nil
|
|
else
|
|
return ''
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione che ritorna il nome della testa in base alla posizione utensile (ATT: deve rispecchiare il setup)
|
|
function GetAdjHeadFromTcPos( nHeadSet, sTcPos)
|
|
if nHeadSet == 1 then
|
|
-- seconda lama
|
|
if SecondSaw and sTcPos == 'T21' then
|
|
return 'H16'
|
|
-- utensili speciali
|
|
elseif TcSpecialTools and sTcPos == 'T121' then
|
|
if DrillingAggregate then
|
|
return 'H14'
|
|
else
|
|
return 'H11'
|
|
end
|
|
-- motoseghe
|
|
elseif sTcPos == 'T101' or sTcPos == 'T111' then
|
|
return 'H13'
|
|
-- utensili standard o prima lama
|
|
else
|
|
return EgtIf( sTcPos == 'T1', 'H12', 'H11')
|
|
end
|
|
elseif nHeadSet == 2 then
|
|
-- lama su aggregato da sotto
|
|
if TcAggreBladeUnder and sTcPos == 'T201' then
|
|
return 'H22'
|
|
-- utensili standard da sotto
|
|
else
|
|
return 'H21'
|
|
end
|
|
elseif nHeadSet == 3 then
|
|
return 'H38'
|
|
else
|
|
return ''
|
|
end
|
|
end
|
|
---------------------------------------------------------------------
|
|
-- Funzione che riconosce testa per sega a catena
|
|
function HeadIsChainSaw( sHead)
|
|
return ( sHead == 'H13' or sHead == 'H15')
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
--- FUNZIONI PER MOTOSEGA -------------------------------------------
|
|
---------------------------------------------------------------------
|
|
function GetCurrChainSawingVirtualAxis()
|
|
-- recupero il valore dell'asse virtuale bloccato A
|
|
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
|
if not sVal or sVal == '' then
|
|
if EMC then
|
|
sVal = EMC.BLOCKEDAXIS or 'A1=0'
|
|
else
|
|
sVal = 'A1=0'
|
|
end
|
|
end
|
|
local dPosA = tonumber( sVal:sub( 4)) or 0
|
|
return dPosA
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione che calcola la posizione Home di Z per la sega a catena dal valore dell'asse virtuale
|
|
function GetChainSawZHomeFromVirtualAxis( dPosA, dCSawLength)
|
|
-- se A=0 -> T101 -> HomeZ = -400
|
|
if abs( dPosA) < 0.1 then
|
|
if dCSawLength >= MinLengthLongCSaw then
|
|
EmtSetLastError( 1200, 'ChainSaw too long: orientation forbidden')
|
|
end
|
|
return ParkCSaw0Z1
|
|
-- altrimenti A=-90 -> T102 o A=90 -> T104 -> HomeZ = -100
|
|
else
|
|
if dCSawLength >= MinLengthLongCSaw then
|
|
return ParkLongCSawZ1
|
|
else
|
|
return ParkCSawZ1
|
|
end
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione che calcola l'angolo Home di C per la sega a catena dal valore dell'asse virtuale
|
|
---------------------------------------------------------------------
|
|
function GetChainSawCHomeFromVirtualAxis( dPosA, dCSawLength)
|
|
-- se A=0 -> T101 -> HomeC = 0
|
|
if abs( dPosA) < 0.1 then
|
|
return ParkCSaw0C1
|
|
-- altrimenti A=90 -> T104 -> HomeC = -90
|
|
else
|
|
if dCSawLength >= MinLengthLongCSaw then
|
|
return ParkLongCSawC1
|
|
else
|
|
return ParkCSawC1
|
|
end
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione che calcola l'angolo Home di C per la lama su aggregato dal valore dell'asse virtuale
|
|
function GetSawCHomeFromVirtualAxis( dPosA)
|
|
-- se A2=0 -> 201 -> HomeC = -90
|
|
if abs( dPosA) < 0.1 then
|
|
return ParkSaw0C2
|
|
-- altrimenti A2=90 -> T204 -> HomeC = -90
|
|
else
|
|
return ParkSawC2
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
--- FUNZIONI PER AGGREGATO FORATORE MULTIPLO ------------------------
|
|
---------------------------------------------------------------------
|
|
---------------------------------------------------------------------
|
|
function GetCurrMultiDrillVirtualAxis()
|
|
-- recupero il valore dell'asse virtuale bloccato A
|
|
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
|
|
if not sVal or sVal == '' then
|
|
if EMC then
|
|
sVal = EMC.BLOCKEDAXIS or 'A1=0'
|
|
else
|
|
sVal = 'A1=0'
|
|
end
|
|
end
|
|
local dPosA = tonumber( sVal:sub( 4)) or 0
|
|
return dPosA
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione che calcola l'angolo Home di C per l'aggregato foratore mutliplo dal valore dell'asse virtuale
|
|
---------------------------------------------------------------------
|
|
function GetMultiDrillCHomeFromVirtualAxis( dPosA)
|
|
-- se A1=0 -> T121 -> HomeC = 0
|
|
if abs( dPosA) < 0.1 then
|
|
return ParkMultiDrill0C1
|
|
-- altrimenti A1=90 -> T124 -> HomeC = -90
|
|
else
|
|
return ParkMultiDrillC1
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione che ritorna ZExtra partendo dalla testa e dall'angolo verticale
|
|
function GetZExtra( sHead, dAngV)
|
|
-- se testa standard
|
|
if sHead == 'H11' then
|
|
if abs( dAngV) < 30.1 then
|
|
return 400
|
|
elseif abs( dAngV) < 45.1 then
|
|
return 300
|
|
elseif abs( dAngV) < 60.1 then
|
|
return 200
|
|
elseif abs( dAngV) < 90.1 then
|
|
return 10
|
|
else
|
|
return 0
|
|
end
|
|
-- se aggregato lama
|
|
elseif sHead == 'H12' or sHead == 'H16' then
|
|
if abs( dAngV) < 30.1 then
|
|
return 400
|
|
elseif abs( dAngV) < 45.1 then
|
|
return 300
|
|
elseif abs( dAngV) < 60.1 then
|
|
return 200
|
|
elseif abs( dAngV) < 90.1 then
|
|
return 10
|
|
else
|
|
return 0
|
|
end
|
|
-- se aggregato foratore multiplo
|
|
elseif sHead == 'H14' then
|
|
if abs( dAngV) < 30.1 then
|
|
return 400
|
|
elseif abs( dAngV) < 45.1 then
|
|
return 300
|
|
elseif abs( dAngV) < 60.1 then
|
|
return 200
|
|
elseif abs( dAngV) < 90.1 then
|
|
return 10
|
|
else
|
|
return 0
|
|
end
|
|
-- altri casi
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione per impostare spia stato morsa carrello Y1
|
|
function SetPY1Light( bClosed)
|
|
if not PY1LightId then return end
|
|
EgtSetColor( PY1LightId, EgtIf( bClosed, 'RED', 'LIME'))
|
|
if bClosed then
|
|
EgtSetInfo( PY1LightId, 'On', '1')
|
|
else
|
|
EgtRemoveInfo( PY1LightId, 'On')
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione per leggere lo stato della morsa carrello Y1
|
|
function GetPY1Light()
|
|
if not PY1LightId then return false end
|
|
return ( EgtGetInfo( PY1LightId, 'On') == '1')
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione per impostare spia stato morsa carrello Y2
|
|
function SetPY2Light( bClosed)
|
|
if not PY2LightId then return end
|
|
EgtSetColor( PY2LightId, EgtIf( bClosed, 'RED', 'LIME'))
|
|
if bClosed then
|
|
EgtSetInfo( PY2LightId, 'On', '1')
|
|
else
|
|
EgtRemoveInfo( PY2LightId, 'On')
|
|
end
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione per leggere lo stato della morsa carrello Y2
|
|
function GetPY2Light()
|
|
if not PY2LightId then return false end
|
|
return ( EgtGetInfo( PY2LightId, 'On') == '1')
|
|
end
|
|
|
|
|
|
---------------------------------------------------------------------
|
|
-- Funzione per resettare tutte le attivazioni della macchina
|
|
function OnResetMachine()
|
|
EmtUnlinkAllRawPartsFromGroups()
|
|
EmtUnlinkAllFixturesFromGroups()
|
|
SetPY1Light( false)
|
|
SetPY2Light( 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
|