Files
essetre-90480030/Essetre-90480030.mlde

688 lines
21 KiB
Plaintext

-- Descrizione macchina Essetre-90480030 by Egalware s.r.l. 2024/09/23
-- Macchina Wall.
-- 2023/07/10 ver 2.5g1 DS Eliminata gestione MoveZup per sega a catena in mlse (dannosa).
-- 2023/09/09 ver 2.5i1 DS Correzioni a simulazione per lavorazioni in doppio.
-- 2023/10/26 ver 2.5j1 In file ini invertite denominazioni testa principale 5 assi e secondaria.
-- 2023/10/26 ver 2.5j2 In file nge invertito testo con nomenclatura H1 e H7 (ora H1=2 e H7=1) per rispettare quella di Essetre.
-- 2023/10/27 ver 2.5j3 In generazione gestito correttamente l'output del parametro EN (differente tra G102 e G101/G103).
-- 2023/11/08 ver 2.5k1 Piccoli aggiustamenti com 90480024.
-- 2023/11/09 ver 2.5k2 Z motosega portata a -150mm.
-- Gestione rimozione VMILL in caso di RemoveScrap manuale e pezzi non separati
-- 2023/11/14 ver 2.5k3 Solidi di collisione per teste 2 e 3 ora ingranditi di 4 anziché 5 mm.
-- 2023/12/22 ver 2.5l1 Corretto movimento home assi rotanti motosega prima di scaricare. Si ruota quando si è a parcheggio. Quota -3800 (ex. -4200).
-- 2024/05/27 ver 2.6e1 La posizione della cuffia di aspirazione considera un eventuale sottopezzo
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '2.6e1'
PP_NVER = '2.6.9.1'
MIN_MACH_VER = '2.5j1'
-- Parametri macchina
NumericalControl = 'NUM' -- NUM o TPA
MinY = 0.0
MaxY = 18200.0
MinX1 = -6685.0
MaxX1 = -770.0
ParkTSpecX1 = -3800
MinZ1 = -1585.0
MaxZ1 = 0.0
MinB1 = -135.0
MaxB1 = 135.0
MinC1 = -275.0
MaxC1 = 275.0
MillOffs = 202.0
ChSawLen = 96.0
MinX2 = -7455.0
MaxX2 = -1540.0
MinZ2 = -1180.0
MaxZ2 = 0.0
MinB2 = 0.0
MaxB2 = 90.0
MinC2 = -275.0
MaxC2 = 275.0
SawDeltaX = 347.5
SawDeltaY = 0.0
SawDeltaZ = -115.0
SawOffs = 163.5
MinX3 = -5915.0
MaxX3 = 0.0
ParkTSpecX3 = -3000
MinZ3 = -1585.0
MaxZ3 = 0.0
MinB3 = -135.0
MaxB3 = 135.0
MinC3 = -275.0
MaxC3 = 275.0
Mill3DeltaX = 0.0
Mill3DeltaY = 0.0
Mill3DeltaZ = 0.0
Mill3Offs = 202.0
MinDeltaX1X3 = 770
MinDistToolX1X3 = 40
DimTabX = 16800.0
DimTabY = 3500.0
DeltaTabX = -( -17639.65 + DimTabX)
DeltaTabY = -5490.0
DeltaTabZ = -960.0
CoeffVM = 0.5
-- Aggiornamento con dati da TechnoEssetre7
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480030.data"
local sData = EgtGetCurrMachineDir().."\\Wall\\Ts3Data.lua"
if EgtExistsFile( sTs3Data) then
EgtCopyFile( sTs3Data, sData)
local sTs3DataOld = sTs3Data..'.old'
EgtEraseFile( sTs3DataOld)
EgtRenameFile( sTs3Data, sTs3DataOld)
end
if EgtExistsFile( sData) then
local Machine = dofile( sData)
if Machine and Machine.Offsets then
local MchOffs = Machine.Offsets
NumericalControl = EgtIf( MchOffs.TIPO_CN ~= 1, 'NUM', 'TPA')
if MchOffs.MAX_Y then MinY = -MchOffs.MAX_Y end
if MchOffs.MIN_Y then MaxY = -MchOffs.MIN_Y end
MinX1 = MchOffs.MIN_X2 or MinX1
MaxX1 = MchOffs.MAX_X2 or MaxX1
MinZ1 = MchOffs.MIN_Z2 or MinZ1
MaxZ1 = MchOffs.MAX_Z2 or MaxZ1
MinB1 = MchOffs.MIN_B2 or MinB1
MaxB1 = MchOffs.MAX_B2 or MaxB1
MinC1 = MchOffs.MIN_C2 or MinC1
MaxC1 = MchOffs.MAX_C2 or MaxC1
MinX2 = MchOffs.MIN_U or MinX2
MaxX2 = MchOffs.MAX_U or MaxX2
MinZ2 = MchOffs.MIN_W or MinZ2
MaxZ2 = MchOffs.MAX_W or MaxZ2
MinB2 = MchOffs.MIN_V or MinB2
MaxB2 = MchOffs.MAX_V or MaxB2
MinC2 = MchOffs.MIN_A or MinC2
MaxC2 = MchOffs.MAX_A or MaxC2
MinX3 = MchOffs.MIN_X or MinX3
MaxX3 = MchOffs.MAX_X or MaxX3
MinZ3 = MchOffs.MIN_Z or MinZ3
MaxZ3 = MchOffs.MAX_Z or MaxZ3
MinB3 = MchOffs.MIN_B or MinB3
MaxB3 = MchOffs.MAX_B or MaxB3
MinC3 = MchOffs.MIN_C or MinC3
MaxC3 = MchOffs.MAX_C or MaxC3
MillOffs = MchOffs.PIVOT_MILL2 or MillOffs
SawOffs = MchOffs.PIVOT_SAW or SawOffs
Mill3Offs = MchOffs.PIVOT_MILL or Mill3Offs
if MchOffs.ZERO_Y_MILL2 then DeltaTabX = -( MchOffs.ZERO_Y_MILL2 + DimTabX) end
DeltaTabY = MchOffs.ZERO_X_MILL2 or DeltaTabY
DeltaTabZ = MchOffs.ZERO_Z_MILL2 or DeltaTabZ
if MchOffs.ZERO_Y_MILL2 and MchOffs.ZERO_Y_SAW then SawDeltaX = - ( MchOffs.ZERO_Y_MILL2 - MchOffs.ZERO_Y_SAW) end
if MchOffs.ZERO_X_MILL2 and MchOffs.ZERO_X_SAW then SawDeltaY = ( MchOffs.ZERO_X_MILL2 - MchOffs.ZERO_X_SAW) end
if MchOffs.ZERO_Z_MILL2 and MchOffs.ZERO_Z_SAW then SawDeltaZ = ( MchOffs.ZERO_Z_MILL2 - MchOffs.ZERO_Z_SAW) end
if MchOffs.ZERO_Y_MILL2 and MchOffs.ZERO_Y_MILL then Mill3DeltaX = - ( MchOffs.ZERO_Y_MILL2 - MchOffs.ZERO_Y_MILL) end
if MchOffs.ZERO_X_MILL2 and MchOffs.ZERO_X_MILL then Mill3DeltaY = ( MchOffs.ZERO_X_MILL2 - MchOffs.ZERO_X_MILL) end
if MchOffs.ZERO_Z_MILL2 and MchOffs.ZERO_Z_MILL then Mill3DeltaZ = ( MchOffs.ZERO_Z_MILL2 - MchOffs.ZERO_Z_MILL) end
end
end
-- Spostamenti della lama rispetto al disegno
local SawOffsX = SawDeltaX - 347.5
local SawOffsY = SawDeltaY - 0
local SawOffsZ = SawDeltaZ + 115.0
-- Spostamenti della terza testa rispetto al disegno
local Mill3OffsX = Mill3DeltaX - 0
local Mill3OffsY = Mill3DeltaY - 0
local Mill3OffsZ = Mill3DeltaZ - 0
EmtGeneral {
File='Essetre-90480030.nge',
Offset = Vector3d( -640.35, -3740.00, -1660.0),
AxisMaxAdjust = 250,
ExitMaxAdjust = 250,
Special = 'Essetre-WALL.mlse',
Processor = 'Essetre-WALL.mlpe'}
local BaseId = EmtBase {
Name = 'Base',
Geo='BASE/GEO',
Aux={'BASE/LOAD', 'BASE/MOD01', 'BASE/MOD02', 'BASE/MOD03', 'BASE/MOD04', 'BASE/MOD05', 'BASE/MOD06', 'BASE/MOD07', 'BASE/REF', 'BASE/COLLISION'}}
local vtMove = Vector3d( DeltaTabX - 839.65, DeltaTabY + 5490.0, DeltaTabZ + 960)
EgtMove( BaseId, vtMove, GDB_RT.GLOB)
-- Tavola
EmtTable {
Name = 'Tab',
Parent = 'Base',
Type = MCH_TT.FLAT,
Ref1 = Point3d( DeltaTabX, DeltaTabY, DeltaTabZ),
Geo = 'TABLE/GEO'}
-- Traversa
EmtAxis {
Name = 'Y',
Parent = 'Base',
Invert = true,
Type = MCH_AT.LINEAR,
Dir = X_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinY, MaxY},
Home = 0,
Geo = 'Y_AXIS/GEO',
Aux = {'Y_AXIS/SOLID', 'Y_AXIS/TC', 'Y_AXIS/COLLISION'}}
-- Testa 1 per frese
EmtAxis {
Name = 'X1',
Parent = 'Y',
Token = 'X',
Type = MCH_AT.LINEAR,
Dir = Y_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinX1, MaxX1},
Home = MaxX1,
Geo = 'X1_AXIS/GEO',
Aux = {'X1_AXIS/SOLID', 'X1_AXIS/COLLISION'}}
EmtAxis {
Name = 'Z1',
Parent = 'X1',
Token = 'Z',
Type = MCH_AT.LINEAR,
Dir = Z_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinZ1, MaxZ1},
Home = 0,
Geo = 'Z1_AXIS/GEO',
Aux = {'Z1_AXIS/SOLID'}}
EmtAxis {
Name = 'C1',
Parent = 'Z1',
Token = 'C',
Type = MCH_AT.ROTARY,
Dir = Z_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinC1, MaxC1},
Home = 0,
Geo = 'C1_AXIS/GEO',
Aux = {'C1_AXIS/SOLID', 'C1_AXIS/COLLISION'}}
EmtAxis {
Name = 'B1',
Parent = 'C1',
Token = 'B',
Type = MCH_AT.ROTARY,
Dir = -X_AX(),
Pos = Point3d( 0, 0, MillOffs),
Stroke = {MinB1, MaxB1},
Home = 0,
Geo = 'B1_AXIS/GEO',
Aux = {'B1_AXIS/SOLID', 'B1_AXIS/COLLISION'}}
EmtHead {
Name = 'H1',
Parent = 'B1',
HSet = 'H1',
Type = MCH_HT.STD,
Pos = Point3d( 0, 0, 0),
TDir = Z_AX(),
ADir = Y_AX(),
Rot1W = 0.1,
OthColl = {'B1/SOLID', 'C1/SOLID'},
Geo = 'H1_HEAD/GEO'}
-- 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 = 180,
Geo = 'A1_AXIS/GEO'}
local H3Id = EmtHead {
Name = 'H3',
Parent = 'A1',
HSet = 'H1',
Type = MCH_HT.STD,
Pos = Point3d( 0, 0, -ChSawLen),
TDir = Y_AX(),
ADir = Z_AX(),
Rot1W = 0.1,
SolCh = MCH_SCC.ADIR_NEAR,
OthColl = {'B1/SOLID', 'C1/SOLID'},
Geo = 'H3_HEAD/GEO'}
EgtSetInfo( H3Id, 'ZSAFEDELTA', 120)
-- Testa per Lama
local X2Id = EmtAxis {
Name = 'X2',
Parent = 'Y',
Token = 'X',
Type = MCH_AT.LINEAR,
Dir = Y_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinX2, MaxX2},
Home = MinX2,
Geo = 'X2_AXIS/GEO',
Aux = {'X2_AXIS/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, 0), GDB_RT.GLOB)
local Z2Id = EmtAxis {
Name = 'Z2',
Parent = 'X2',
Token = 'Z',
Type = MCH_AT.LINEAR,
Dir = Z_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinZ2, MaxZ2},
Home = 0,
Geo = 'Z2_AXIS/GEO',
Aux = {'Z2_AXIS/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( Z2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
local C2Id = EmtAxis {
Name = 'C2',
Parent = 'Z2',
Token = 'C',
Type = MCH_AT.ROTARY,
Dir = Z_AX(),
Pos = Point3d( SawDeltaX, SawDeltaY, 0),
Stroke = {MinC2, MaxC2},
Home = 0,
Geo = 'C2_AXIS/GEO',
Aux = {'C2_AXIS/SOLID', 'C2_AXIS/COLLISION'}}
EgtMove( EgtGetFirstNameInGroup( C2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( C2Id, 'COLLISION'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
local B2Id = EmtAxis {
Name = 'B2',
Parent = 'C2',
Token = 'B',
Type = MCH_AT.ROTARY,
Dir = -X_AX(),
Pos = Point3d( SawDeltaX, SawDeltaY, SawDeltaZ + SawOffs),
Stroke = {MinB2, MaxB2},
Home = 90,
Geo = 'B2_AXIS/GEO',
Aux = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION'}}
EgtMove( EgtGetFirstNameInGroup( B2Id, 'SOLID'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( B2Id, 'COLLISION'), Vector3d( SawOffsX, SawOffsY, SawOffsZ), GDB_RT.GLOB)
local H2Id = EmtHead {
Name = 'H2',
Parent = 'B2',
HSet = 'H2',
Type = MCH_HT.STD,
Pos = Point3d( SawDeltaX, SawDeltaY, SawDeltaZ),
TDir = Z_AX(),
ADir = -Y_AX(),
Rot1W = 0.2,
OthColl = {'B2/SOLID', 'C2/SOLID'},
Geo = 'H2_HEAD/GEO'}
-- Testa 3 per frese
local X3Id = EmtAxis {
Name = 'X3',
Parent = 'Y',
Token = 'X',
Type = MCH_AT.LINEAR,
Dir = Y_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinX3, MaxX3},
Home = MaxX3,
Geo = 'X3_AXIS/GEO',
Aux = {'X3_AXIS/SOLID', 'X3_AXIS/COLLISION'}}
EgtMove( EgtGetFirstNameInGroup( X3Id, 'SOLID'), Vector3d( Mill3OffsX, Mill3OffsY, 0), GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( X3Id, 'COLLISION'), Vector3d( Mill3OffsX, Mill3OffsY, 0), GDB_RT.GLOB)
local Z3Id = EmtAxis {
Name = 'Z3',
Parent = 'X3',
Token = 'Z',
Type = MCH_AT.LINEAR,
Dir = Z_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinZ3, MaxZ3},
Home = 0,
Geo = 'Z3_AXIS/GEO',
Aux = {'Z3_AXIS/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( Z3Id, 'SOLID'), Vector3d( Mill3OffsX, Mill3OffsY, Mill3OffsZ), GDB_RT.GLOB)
local C3Id = EmtAxis {
Name = 'C3',
Parent = 'Z3',
Token = 'C',
Type = MCH_AT.ROTARY,
Dir = Z_AX(),
Pos = Point3d( Mill3DeltaX, Mill3DeltaY, 0),
Stroke = {MinC3, MaxC3},
Home = 0,
Geo = 'C3_AXIS/GEO',
Aux = {'C3_AXIS/SOLID', 'C3_AXIS/COLLISION'}}
EgtMove( EgtGetFirstNameInGroup( C3Id, 'SOLID'), Vector3d( Mill3OffsX, Mill3OffsY, Mill3OffsZ), GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( C3Id, 'COLLISION'), Vector3d( Mill3OffsX, Mill3OffsY, Mill3OffsZ), GDB_RT.GLOB)
local B3Id = EmtAxis {
Name = 'B3',
Parent = 'C3',
Token = 'B',
Type = MCH_AT.ROTARY,
Dir = -X_AX(),
Pos = Point3d( Mill3DeltaX, Mill3DeltaY, Mill3DeltaZ + Mill3Offs),
Stroke = {MinB3, MaxB3},
Home = 0,
Geo = 'B3_AXIS/GEO',
Aux = {'B3_AXIS/SOLID', 'B3_AXIS/COLLISION'}}
EgtMove( EgtGetFirstNameInGroup( B3Id, 'SOLID'), Vector3d( Mill3OffsX, Mill3OffsY, Mill3OffsZ), GDB_RT.GLOB)
EgtMove( EgtGetFirstNameInGroup( B3Id, 'COLLISION'), Vector3d( Mill3OffsX, Mill3OffsY, Mill3OffsZ), GDB_RT.GLOB)
EmtHead {
Name = 'H7',
Parent = 'B3',
HSet = 'H7',
Type = MCH_HT.STD,
Pos = Point3d( Mill3DeltaX, Mill3DeltaY, Mill3DeltaZ),
TDir = Z_AX(),
ADir = Y_AX(),
Rot1W = 0.1,
OthColl = {'B3/SOLID', 'C3/SOLID'},
Geo = 'H7_HEAD/GEO'}
-- ToolChanger
local ptTcA = Point3d( -340.6,-1270.0,-29.8)
EmtTcPos {
Name = 'T10',
Parent = 'Y',
Pos = ptTcA,
TDir = -Y_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA1'}
EmtTcPos {
Name = 'T11',
Parent = 'Y',
Pos = ptTcA - 120 * Z_AX(),
TDir = -Y_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA2'}
EmtTcPos {
Name = 'T12',
Parent = 'Y',
Pos = ptTcA - 240 * Z_AX(),
TDir = -Y_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA3'}
EmtTcPos {
Name = 'T13',
Parent = 'Y',
Pos = ptTcA - 360 * Z_AX(),
TDir = -Y_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA4'}
EmtTcPos {
Name = 'T14',
Parent = 'Y',
Pos = ptTcA - 480 * Z_AX(),
TDir = -Y_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA5'}
EmtTcPos {
Name = 'T15',
Parent = 'Y',
Pos = ptTcA - 600 * Z_AX(),
TDir = -Y_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA6'}
EmtTcPos {
Name = 'T16',
Parent = 'Y',
Pos = ptTcA - 720 * Z_AX(),
TDir = -Y_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA7'}
EmtTcPos {
Name = 'T17',
Parent = 'Y',
Pos = ptTcA - 840 * Z_AX(),
TDir = -Y_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA8'}
EmtTcPos {
Name = 'T18',
Parent = 'Y',
Pos = ptTcA - 960 * Z_AX(),
TDir = -Y_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TA9'}
local ptTcB = Point3d( -490.6,-5426.7,17.0)
EmtTcPos {
Name = 'T1',
Parent = 'Y',
Pos = ptTcB,
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TB1'}
EmtTcPos {
Name = 'T2',
Parent = 'Y',
Pos = ptTcB + 120 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TB2'}
EmtTcPos {
Name = 'T3',
Parent = 'Y',
Pos = ptTcB + 240 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TB3'}
EmtTcPos {
Name = 'T4',
Parent = 'Y',
Pos = ptTcB + 360 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TB4'}
EmtTcPos {
Name = 'T5',
Parent = 'Y',
Pos = ptTcB + 480 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TB5'}
EmtTcPos {
Name = 'T6',
Parent = 'Y',
Pos = ptTcB + 600 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TB6'}
EmtTcPos {
Name = 'T7',
Parent = 'Y',
Pos = ptTcB + 720 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TB7'}
EmtTcPos {
Name = 'T8',
Parent = 'Y',
Pos = ptTcB + 840 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TB8'}
EmtTcPos {
Name = 'T9',
Parent = 'Y',
Pos = ptTcB + 960 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TB9'}
EmtTcPos {
Name = 'T101',
Parent = 'Y',
Pos = Point3d(-568.3,-2007.0,9-92.8),
TDir = X_AX(),
ADir = Z_AX(),
Geo = 'Y_AXIS/TC1'}
EmtTcPos {
Name = 'T201',
Parent = 'Y',
Pos = Point3d(-926.3,-2570.0,25),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TC2'}
EmtTcPos {
Name = 'T202',
Parent = 'Y',
Pos = Point3d(-926.3,-3200.0,25),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TC3'}
EmtTcPos {
Name = 'T203',
Parent = 'Y',
Pos = Point3d(-926.3,-3830.0,25),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TC4'}
local ptTcD = Point3d( -340.6,-6212.0,-29.8)
EmtTcPos {
Name = 'T20',
Parent = 'Y',
Pos = ptTcD,
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'Y_AXIS/TD1'}
EmtTcPos {
Name = 'T21',
Parent = 'Y',
Pos = ptTcD - 120 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'Y_AXIS/TD2'}
EmtTcPos {
Name = 'T22',
Parent = 'Y',
Pos = ptTcD - 240 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'Y_AXIS/TD3'}
EmtTcPos {
Name = 'T23',
Parent = 'Y',
Pos = ptTcD - 360 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'Y_AXIS/TD4'}
EmtTcPos {
Name = 'T24',
Parent = 'Y',
Pos = ptTcD - 480 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'Y_AXIS/TD5'}
EmtTcPos {
Name = 'T25',
Parent = 'Y',
Pos = ptTcD - 600 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'Y_AXIS/TD6'}
EmtTcPos {
Name = 'T26',
Parent = 'Y',
Pos = ptTcD - 720 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'Y_AXIS/TD7'}
EmtTcPos {
Name = 'T27',
Parent = 'Y',
Pos = ptTcD - 840 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'Y_AXIS/TD8'}
EmtTcPos {
Name = 'T28',
Parent = 'Y',
Pos = ptTcD - 960 * Z_AX(),
TDir = Y_AX(),
ADir = -X_AX(),
Geo = 'Y_AXIS/TD9'}
---------------------------------------------------------------------
-- Funzioni richiamate per modificare i dati macchina in casi particolari
--function OnSetTable()
--end
---------------------------------------------------------------------
function OnSetHead()
-- se sega a catena
if EMC.HEAD == 'H3' then
-- gestione distanza da naso mandrino
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
-- gestione assi
local sVal = EgtGetMachiningParam( MCH_MP.BLOCKEDAXIS)
local CSawPosA = EgtGetVal( sVal, 'A1', 'd') or 180
EmtModifyAxisHome( 'X1', ParkTSpecX1)
EmtModifyAxisHome( 'Z1', GetChainSawZHomeFromVirtualAxis( CSawPosA))
EmtModifyAxisStroke( 'C1', { -91, 195})
EmtModifyAxisHome( 'C1', GetChainSawCHomeFromVirtualAxis( CSawPosA))
EmtModifyAxisStroke( 'B1', { MinB1, MaxB1})
-- se utensile di grande diametro su testa centrale
elseif EMC.HEAD == 'H1' and EMC.TOTDIAM > 400 then
EmtModifyAxisHome( 'X1', MaxX1)
EmtModifyAxisHome( 'Z1', MaxZ1)
EmtModifyAxisStroke( 'C1', { -180.1, 0.1})
EmtModifyAxisHome( 'C1', 0)
EmtModifyAxisStroke( 'B1', { -90.1, 0.1})
-- altri casi su testa centrale
elseif EMC.HEAD == 'H1' then
EmtModifyAxisHome( 'X1', MaxX1)
EmtModifyAxisHome( 'Z1', MaxZ1)
EmtModifyAxisStroke( 'C1', { MinC1, MaxC1})
EmtModifyAxisHome( 'C1', 0)
EmtModifyAxisStroke( 'B1', { MinB1, MaxB1})
-- se utensile di grande diametro su testa destra
elseif EMC.HEAD == 'H7' and EMC.TOTDIAM > 400 then
EmtModifyAxisHome( 'X3', MaxX3)
EmtModifyAxisHome( 'Z3', MaxZ3)
EmtModifyAxisStroke( 'C3', { -180.1, 0.1})
EmtModifyAxisHome( 'C3', 0)
EmtModifyAxisStroke( 'B3', { -90.1, 0.1})
-- altri casi su testa destra
elseif EMC.HEAD == 'H7' then
EmtModifyAxisHome( 'X3', MaxX3)
EmtModifyAxisHome( 'Z3', MaxZ3)
EmtModifyAxisStroke( 'C3', { MinC3, MaxC3})
EmtModifyAxisHome( 'C3', 0)
EmtModifyAxisStroke( 'B3', { MinB3, MaxB3})
end
end
---------------------------------------------------------------------
-- Funzione che calcola la posizione Home di Z per la sega a catena dal valore dell'asse virtuale
function GetChainSawZHomeFromVirtualAxis( dPosA)
-- quota fissa
return -150
end
---------------------------------------------------------------------
-- Funzione che calcola l'angolo Home di C per la sega a catena dal valore dell'asse virtuale
function GetChainSawCHomeFromVirtualAxis( dPosA)
-- se A=180 -> T104 -> HomeC = -90
if abs( dPosA - 180) < 0.1 then
return -90
-- altrimenti A=90 -> T101 -> HomeC = 0
else
return 0
end
end
---------------------------------------------------------------------
-- Funzione per resettare tutte le attivazioni della macchina
function OnResetMachine()
EmtUnlinkAllRawPartsFromGroups()
EmtUnlinkAllFixturesFromGroups()
-- 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