Files
Essetre-WALL_XS0014/Essetre-WALL_XS0014.mlde
luca.mazzoleni 909d0ed709 - aggiunto YAML per compilazione e comunicazione versioni a LiMan
- in mlde aggiunta PP_NVER, versione in formato numerico
- tutte le chiamate a EgtGetSourceDir() sostituite con EgtGetCurrMachineDir()
2024-09-23 12:48:08 +02:00

433 lines
14 KiB
Plaintext

-- Descrizione macchina Essetre-WallXS0014 by EgalTech s.r.l. 2024/09/23
-- Macchina Wall.
-- 2023/06/27 v.2.5f1 DS Prima versione partende da WallXS standard.
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '2.6i1'
PP_NVER = '2.6.9.1'
-- Parametri macchina
NumericalControl = 'TPA' -- NUM o TPA
MinY = 0.0
MaxY = 22000.0
MinX = -3900.0
MaxX = 45.0
MinZ = -900.0
MaxZ = 0.0
MinB = -120.0
MaxB = 120.0
MinC = -360.0
MaxC = 360.0
MillOffs = 92.5
ChainSaw = 0
SawOffsX = 0.0
SawOffsY = 111.0
SawOffsZ = -150.0
ChSawLen = 90.0
Nail11 = 1
Nail11DeltaX = 330.0
Nail11DeltaY = 272.6
Nail11DeltaZ = -76.5
Nail12 = 1
Nail12DeltaX = 330.0
Nail12DeltaY = -272.6
Nail12DeltaZ = -76.5
Orig2DeltaX = 0
Orig2DeltaY = -3500
Orig2DeltaZ = 0
Orig3DeltaX = 9000
Orig3DeltaY = 0
Orig3DeltaZ = 0
Orig4DeltaX = 9000
Orig4DeltaY = -3500
Orig4DeltaZ = 0
Orig5DeltaX = 11640
Orig5DeltaY = 0
Orig5DeltaZ = 0
Orig6DeltaX = 11640
Orig6DeltaY = -3500
Orig6DeltaZ = 0
Orig7DeltaX = 20640
Orig7DeltaY = 0
Orig7DeltaZ = 0
Orig8DeltaX = 20640
Orig8DeltaY = -3500
Orig8DeltaZ = 0
DimTabX = 20640.0
DimTabY = 3500.0
DeltaTabX = 970.0
DeltaTabY = -3690.0
DeltaTabZ = -606.0 + MillOffs -- -513.5
CoeffVM = 0.75
-- Aggiornamento con dati da TechnoEssetre7
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-Wall_XS0014.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
MinX = MchOffs.MIN_X or MinX
MaxX = MchOffs.MAX_X or MaxX
MinZ = MchOffs.MIN_Z or MinZ
MaxZ = MchOffs.MAX_Z or MaxZ
MinB = MchOffs.MIN_B or MinB
MaxB = MchOffs.MAX_B or MaxB
MinC = MchOffs.MIN_C or MinC
MaxC = MchOffs.MAX_C or MaxC
MillOffs = MchOffs.PIVOT or MillOffs
if MchOffs.ZERO_Y then DeltaTabX = -MchOffs.ZERO_Y end
if MchOffs.ZERO_X then DeltaTabY = MchOffs.ZERO_X - DimTabY end
if MchOffs.ZERO_Z then DeltaTabZ = MchOffs.ZERO_Z + MillOffs end
ChainSaw = ( MchOffs.CHAIN_SAW or 0)
Nail11 = ( MchOffs.NAIL11 or 0)
if Nail11 ~= 0 and MchOffs.ZERO_Y and MchOffs.ZERO_NAIL11_Y then Nail11DeltaX = - ( MchOffs.ZERO_Y - MchOffs.ZERO_NAIL11_Y) end
if Nail11 ~= 0 and MchOffs.ZERO_X and MchOffs.ZERO_NAIL11_X then Nail11DeltaY = ( MchOffs.ZERO_X - MchOffs.ZERO_NAIL11_X) end
if Nail11 ~= 0 and MchOffs.ZERO_Z and MchOffs.ZERO_NAIL11_Z then Nail11DeltaZ = ( MchOffs.ZERO_Z + MillOffs - MchOffs.ZERO_NAIL11_Z) end
Nail12 = ( MchOffs.NAIL12 or 0)
if Nail12 ~= 0 and MchOffs.ZERO_Y and MchOffs.ZERO_NAIL12_Y then Nail12DeltaX = - ( MchOffs.ZERO_Y - MchOffs.ZERO_NAIL12_Y) end
if Nail12 ~= 0 and MchOffs.ZERO_X and MchOffs.ZERO_NAIL12_X then Nail12DeltaY = ( MchOffs.ZERO_X - MchOffs.ZERO_NAIL12_X) end
if Nail12 ~= 0 and MchOffs.ZERO_Z and MchOffs.ZERO_NAIL12_Z then Nail12DeltaZ = ( MchOffs.ZERO_Z + MillOffs - MchOffs.ZERO_NAIL12_Z) end
if MchOffs.OFFSET_ZERO3_Y then Orig3DeltaX = -MchOffs.OFFSET_ZERO3_Y end
if MchOffs.OFFSET_ZERO3_X then Orig3DeltaY = MchOffs.OFFSET_ZERO3_X end
if MchOffs.OFFSET_ZERO3_Z then Orig3DeltaZ = MchOffs.OFFSET_ZERO3_Z end
if MchOffs.OFFSET_ZERO4_Y then Orig4DeltaX = -MchOffs.OFFSET_ZERO4_Y end
if MchOffs.OFFSET_ZERO4_X then Orig4DeltaY = MchOffs.OFFSET_ZERO4_X end
if MchOffs.OFFSET_ZERO4_Z then Orig4DeltaZ = MchOffs.OFFSET_ZERO4_Z end
if MchOffs.OFFSET_ZERO11_Y then Orig5DeltaX = -MchOffs.OFFSET_ZERO11_Y end
if MchOffs.OFFSET_ZERO11_X then Orig5DeltaY = MchOffs.OFFSET_ZERO11_X end
if MchOffs.OFFSET_ZERO11_Z then Orig5DeltaZ = MchOffs.OFFSET_ZERO11_Z end
if MchOffs.OFFSET_ZERO12_Y then Orig6DeltaX = -MchOffs.OFFSET_ZERO12_Y end
if MchOffs.OFFSET_ZERO12_X then Orig6DeltaY = MchOffs.OFFSET_ZERO12_X end
if MchOffs.OFFSET_ZERO12_Z then Orig6DeltaZ = MchOffs.OFFSET_ZERO12_Z end
if MchOffs.OFFSET_ZERO13_Y then Orig7DeltaX = -MchOffs.OFFSET_ZERO13_Y end
if MchOffs.OFFSET_ZERO13_X then Orig7DeltaY = MchOffs.OFFSET_ZERO13_X end
if MchOffs.OFFSET_ZERO13_Z then Orig7DeltaZ = MchOffs.OFFSET_ZERO13_Z end
if MchOffs.OFFSET_ZERO14_Y then Orig8DeltaX = -MchOffs.OFFSET_ZERO14_Y end
if MchOffs.OFFSET_ZERO14_X then Orig8DeltaY = MchOffs.OFFSET_ZERO14_X end
if MchOffs.OFFSET_ZERO14_Z then Orig8DeltaZ = MchOffs.OFFSET_ZERO14_Z end
end
end
-- Spostamenti delle chiodatrici rispetto al disegno
local Nail11OffsX = Nail11DeltaX - 330.0
local Nail11OffsY = Nail11DeltaY - 272.6
local Nail11OffsZ = Nail11DeltaZ + 76.5
local Nail12OffsX = Nail12DeltaX - 330.0
local Nail12OffsY = Nail12DeltaY + 272.6
local Nail12OffsZ = Nail12DeltaZ + 76.5
EmtGeneral {
File='Essetre-WALL_XS0014.nge',
Offset = Vector3d( 5470.0, -2000.0, -1243.5),
AxisMaxAdjust = 3250,
ExitMaxAdjust = 3250,
Special = 'Essetre-WALL_XS.mlse',
Processor = 'Essetre-WALL_XS.mlpe'}
local BaseId = EmtBase {
Name = 'Base',
Geo='BASE/GEO',
Aux={'BASE/SOLID', 'BASE/COLLISION'}}
local vtMove = Vector3d( DeltaTabX - 970.0, DeltaTabY + 3690.0, DeltaTabZ + 513.5)
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
local YId = 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'}}
-- Testa cambia utensili
EmtAxis {
Name = 'X',
Parent = 'Y',
Token = 'X',
Type = MCH_AT.LINEAR,
Dir = Y_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinX, MaxX},
Home = ( MinX + MaxX) / 2,
Geo = 'X_AXIS/GEO',
Aux = {'X_AXIS/SOLID'}}
EmtAxis {
Name = 'Z',
Parent = 'X',
Token = 'Z',
Type = MCH_AT.LINEAR,
Dir = Z_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinZ, MaxZ},
Home = 0,
Geo = 'Z_AXIS/GEO',
Aux = {'Z_AXIS/SOLID'}}
-- Chiodatrici
local H11Id, H12Id
if Nail11 ~= 0 then
H11Id = EmtHead {
Name = 'H11',
Parent = 'Z',
HSet = 'H11',
Type = MCH_HT.STD,
Pos = Point3d( Nail11DeltaX, Nail11DeltaY, Nail11DeltaZ),
TDir = Z_AX(),
Geo = 'H11_HEAD/GEO',
Aux = {'H11_HEAD/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( H11Id, 'SOLID'), Vector3d( Nail11OffsX, Nail11OffsY, Nail11OffsZ), GDB_RT.GLOB)
end
if Nail12 ~= 0 then
H12Id = EmtHead {
Name = 'H12',
Parent = 'Z',
HSet = 'H12',
Type = MCH_HT.STD,
Pos = Point3d( Nail12DeltaX, Nail12DeltaY, Nail12DeltaZ),
TDir = Z_AX(),
Geo = 'H12_HEAD/GEO',
Aux = {'H12_HEAD/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( H12Id, 'SOLID'), Vector3d( Nail12OffsX, Nail12OffsY, Nail12OffsZ), GDB_RT.GLOB)
end
-- Assi rotanti
EmtAxis {
Name = 'C',
Parent = 'Z',
Token = 'C',
Type = MCH_AT.ROTARY,
Dir = Z_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinC, MaxC},
Home = 0,
Geo = 'C_AXIS/GEO',
Aux = {'C_AXIS/SOLID', 'C_AXIS/COLLISION'}}
EmtAxis {
Name = 'B',
Parent = 'C',
Token = 'B',
Type = MCH_AT.ROTARY,
Dir = -X_AX(),
Pos = Point3d( 0, 0, MillOffs),
Stroke = {MinB, MaxB},
Home = 0,
Geo = 'B_AXIS/GEO',
Aux = {'B_AXIS/SOLID', 'B_AXIS/COLLISION'}}
-- Testa principale
EmtHead {
Name = 'H1',
Parent = 'B',
HSet = 'H1',
Type = MCH_HT.STD,
Pos = Point3d( 0, 0, 0),
TDir = Z_AX(),
ADir = Y_AX(),
Rot1W = 0.1,
OthColl = {'B/SOLID', 'C/SOLID'},
Geo = 'H1_HEAD/GEO'}
-- Lama su aggregato
local H2Id = EmtHead {
Name = 'H2',
Parent = 'B',
HSet = 'H1',
Type = MCH_HT.STD,
Pos = Point3d( SawOffsX, SawOffsY, SawOffsZ),
TDir = Z_AX(),
ADir = -Y_AX(),
Rot1W = 0.1,
OthColl = {'B/SOLID', 'C/SOLID'},
Geo = 'H2_HEAD/GEO'}
EgtSetInfo( H2Id, 'Gearbox', 1)
-- Sega a catena
if ChainSaw ~= 0 then
EmtAxis {
Name = 'A1',
Parent = 'B',
Token = '**',
Type = MCH_AT.ROTARY,
Dir = Z_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = { 0, 270},
Home = 180,
Geo = 'A_AXIS/GEO'}
local H3Id = EmtHead {
Name = 'H3',
Parent = 'A1',
HSet = 'H1',
Type = MCH_HT.STD,
Pos = Point3d( 0, 0, -ChSawLen),
TDir = -X_AX(),
ADir = Z_AX(),
Rot1W = 0.1,
SolCh = MCH_SCC.ADIR_NEAR,
OthColl = {'B/SOLID', 'C/SOLID'},
Geo = 'H3_HEAD/GEO'}
EgtSetInfo( H3Id, 'ZSAFEDELTA', 60)
end
-- ToolChanger
local ptTc1 = Point3d( 18.0 + ( DeltaTabX - 970.0), -2687.9 + ( DeltaTabY + 3690.0), -691.5 + ( DeltaTabZ + 513.5))
local ptTc = ptTc1 + 22 * Z_AX()
EmtTcPos {
Name = 'T1',
Parent = 'Base',
Pos = ptTc1 + Vector3d( SawOffsX, SawOffsY, SawOffsZ),
TDir = Z_AX(),
ADir = -Y_AX(),
Geo = 'BASE/T1'}
EmtTcPos {
Name = 'T2',
Parent = 'Base',
Pos = ptTc + 600 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T2'}
EmtTcPos {
Name = 'T3',
Parent = 'Base',
Pos = ptTc + 800 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T3'}
EmtTcPos {
Name = 'T4',
Parent = 'Base',
Pos = ptTc + 1000 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T4'}
EmtTcPos {
Name = 'T5',
Parent = 'Base',
Pos = ptTc + 1200 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T5'}
EmtTcPos {
Name = 'T6',
Parent = 'Base',
Pos = ptTc + 1400 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T6'}
EmtTcPos {
Name = 'T7',
Parent = 'Base',
Pos = ptTc + 1600 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T7'}
if ChainSaw ~= 0 then
EmtTcPos {
Name = 'T8',
Parent = 'Base',
Pos = ptTc + 1800 * Y_AX() - ChSawLen * Z_AX(),
TDir = -X_AX(),
ADir = Z_AX(),
Geo = 'BASE/T8CS'}
else
EmtTcPos {
Name = 'T8',
Parent = 'Base',
Pos = ptTc + 1800 * Y_AX(),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'BASE/T8'}
end
EmtTcPos {
Name = 'T9',
Parent = 'Y',
Pos = Point3d( 0, -3825, -791.5),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/T9'}
EmtTcPos {
Name = 'T10',
Parent = 'Y',
Pos = Point3d( 0, -55, -791.5),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/T10'}
---------------------------------------------------------------------
-- Funzioni richiamate per modificare i dati macchina in casi particolari
--function OnSetTable()
--end
---------------------------------------------------------------------
local function MoveGroup( nGrpId, vtVers, dPos, bLoc)
local dVal = EgtGetInfo( nGrpId or GDB_ID.NULL, 'Val')
if not dVal then return end
if abs( dPos - dVal) > GEO.EPS_SMALL then
local nRT = EgtIf( bLoc, GDB_RT.LOC, GDB_RT.GLOB)
EgtMove( nGrpId, ( dPos - dVal) * vtVers, nRT)
EgtSetInfo( nGrpId, 'Val', dPos)
end
end
---------------------------------------------------------------------
function OnSetHead()
if H11Id then
local dPos = EgtIf( EMC.HEAD == 'H11', 0, 650)
MoveGroup( EgtGetFirstNameInGroup( H11Id, 'SOLID'), Z_AX(), dPos, true)
MoveGroup( EgtGetFirstNameInGroup( H11Id, 'T1'), Z_AX(), dPos, true)
end
if H12Id then
local dPos = EgtIf( EMC.HEAD == 'H12', 0, 650)
MoveGroup( EgtGetFirstNameInGroup( H12Id, 'SOLID'), Z_AX(), dPos, true)
MoveGroup( EgtGetFirstNameInGroup( H12Id, 'T1'), Z_AX(), dPos, true)
end
if EMC.HEAD == 'H11' or EMC.HEAD == 'H12' then
EmtModifyAxisHome( 'B', 90)
EgtResetAxisPos( 'B')
else
if EMC.HEAD == 'H3' then
-- aggiustamenti per 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))
local vtMove = Point3d( 0, 0, -dDist) - Point3d( EMC.EXITPOS)
local ExitId = EgtGetFirstNameInGroup( EgtGetHeadId( EMC.HEAD), 'T'..tostring( EMC.EXIT))
EgtMove( ExitId, vtMove)
end
EmtModifyAxisHome( 'B', 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