376 lines
12 KiB
Plaintext
376 lines
12 KiB
Plaintext
-- Descrizione macchina Essetre-90480032 by Egalware s.r.l. 2024/09/23
|
|
-- Macchina Wall.
|
|
-- 2023/10/10 ver 2.5j1 DS Prima versione.
|
|
-- 2023/10/12 ver 2.5j2 DS Sistemazioni per lama con carter.
|
|
-- 2024/08/06 ver 2.6h1 AV Carter lama disegnato anche in NGE. E' possibile utilizzare il ToolHolder dedicato, o attivarlo da configurazione con variabile "Carter_Blade"
|
|
-- 2024/08/09 ver 2.6h2 AV Tolta chiamata alla GetEN, sostituita con GetEE in risalita ZMAX se EMT.ADIR[3] > 0.708
|
|
-- 2024/08/20 ver 2.6h3 DS Sistemazioni varie per sega a catena.
|
|
|
|
require( 'EmtGenerator')
|
|
EgtEnableDebug( false)
|
|
|
|
PP_VER = '2.6k1'
|
|
PP_NVER = '2.6.11.1'
|
|
MIN_MACH_VER = '2.6h1'
|
|
|
|
-- Parametri macchina
|
|
NumericalControl = 'NUM' -- NUM o TPA
|
|
MinY = 0.0
|
|
MaxY = 14500.0
|
|
MinX1 = -4875.0
|
|
MaxX1 = 0.0
|
|
ParkTSpecX1 = -2400
|
|
ParkSawX1 = -700
|
|
MinZ1 = -1335.0
|
|
MaxZ1 = 0.0
|
|
ParkSawZ1 = -300
|
|
MinB1 = -135.0
|
|
MaxB1 = 135.0
|
|
MinC1 = -275.0
|
|
MaxC1 = 275.0
|
|
ParkC1 = 0
|
|
ParkB1 = 0
|
|
ParkSawC1 = -90
|
|
ParkSawB1 = -90
|
|
MillOffs = 202.0
|
|
ChSawLen = 96.0
|
|
Orig2DeltaX = 0
|
|
Orig2DeltaY = -3500
|
|
Orig2DeltaZ = 0
|
|
Orig3DeltaX = 13570
|
|
Orig3DeltaY = 0
|
|
Orig3DeltaZ = 0
|
|
Orig4DeltaX = 13570
|
|
Orig4DeltaY = -3500
|
|
Orig4DeltaZ = 0
|
|
DimTabX = 13570.0
|
|
DimTabY = 3500.0
|
|
DeltaTabX = 1889.65
|
|
DeltaTabY = -690.0 - DimTabY
|
|
DeltaTabZ = -960.0
|
|
CoeffVM = 0.5
|
|
|
|
-- Aggiornamento con dati da TechnoEssetre7
|
|
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480032.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_X or MinX1
|
|
MaxX1 = MchOffs.MAX_X or MaxX1
|
|
MinZ1 = MchOffs.MIN_Z or MinZ1
|
|
MaxZ1 = MchOffs.MAX_Z or MaxZ1
|
|
MinB1 = MchOffs.MIN_B or MinB1
|
|
MaxB1 = MchOffs.MAX_B or MaxB1
|
|
MinC1 = MchOffs.MIN_C or MinC1
|
|
MaxC1 = MchOffs.MAX_C or MaxC1
|
|
MillOffs = MchOffs.PIVOT_MILL or MillOffs
|
|
if MchOffs.OFFSET_ZERO3_Y then DimTabX = - MchOffs.OFFSET_ZERO3_Y end
|
|
if MchOffs.OFFSET_ZERO2_X then DimTabY = - MchOffs.OFFSET_ZERO2_X end
|
|
if MchOffs.ZERO_Y_MILL then DeltaTabX = - MchOffs.ZERO_Y_MILL end
|
|
if MchOffs.ZERO_X_MILL then DeltaTabY = ( MchOffs.ZERO_X_MILL - DimTabY) end
|
|
DeltaTabZ = MchOffs.ZERO_Z_MILL or DeltaTabZ
|
|
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_Y_SAW then SawDeltaX = - ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_SAW) end
|
|
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_SAW then SawDeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_SAW) end
|
|
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_Z_SAW then SawDeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_Z_SAW) end
|
|
if MchOffs.OFFSET_ZERO2_Y then Orig2DeltaX = -MchOffs.OFFSET_ZERO2_Y end
|
|
if MchOffs.OFFSET_ZERO2_X then Orig2DeltaY = MchOffs.OFFSET_ZERO2_X end
|
|
if MchOffs.OFFSET_ZERO2_Z then Orig2DeltaZ = MchOffs.OFFSET_ZERO2_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
|
|
end
|
|
end
|
|
|
|
EmtGeneral {
|
|
File='Essetre-90480032.nge',
|
|
Offset = Vector3d( -640.35, -2440.00, -1660.0),
|
|
AxisMaxAdjust = 250,
|
|
ExitMaxAdjust = 250,
|
|
AngDeltaMinForHome = 155,
|
|
Special = 'Essetre-WALL.mlse',
|
|
Processor = 'Essetre-WALL.mlpe'}
|
|
EmtBase {
|
|
Name = 'Base',
|
|
Geo='BASE/GEO'}
|
|
-- Tavola
|
|
local TabId = EmtTable {
|
|
Name = 'Tab',
|
|
Parent = 'Base',
|
|
Type = MCH_TT.FLAT,
|
|
Ref1 = Point3d( DeltaTabX, DeltaTabY, DeltaTabZ),
|
|
Scale = {DimTabX/13570, DimTabY/3500, 1},
|
|
Geo = 'TABLE/GEO',
|
|
Aux={'BASE/LOAD', 'BASE/MODS', 'BASE/REF', 'BASE/COLLISION'}}
|
|
EgtSetMode( EgtGetFirstNameInGroup( TabId, 'LOAD'), GDB_MD.HIDDEN)
|
|
EgtSetMode( EgtGetFirstNameInGroup( TabId, 'MODS'), GDB_MD.HIDDEN)
|
|
EgtSetMode( EgtGetFirstNameInGroup( TabId, 'REF'), GDB_MD.HIDDEN)
|
|
-- Traversa
|
|
local YAXId = 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'}}
|
|
local H1Id = 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', {100, 20})
|
|
-- ToolChanger
|
|
local ptTcA = Point3d( -340.6,30.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'}
|
|
EmtTcPos {
|
|
Name = 'T101',
|
|
Parent = 'Y',
|
|
Pos = Point3d(-568.3,-707.0,9-92.8),
|
|
TDir = X_AX(),
|
|
ADir = Z_AX(),
|
|
Geo = 'Y_AXIS/TC1'}
|
|
EmtTcPos {
|
|
Name = 'T203',
|
|
Parent = 'Y',
|
|
Pos = Point3d(532.15,-10.0,-628.15),
|
|
TDir = -X_AX(),
|
|
ADir = Z_AX(),
|
|
Geo = 'Y_AXIS/TC2'}
|
|
|
|
---------------------------------------------------------------------
|
|
-- 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, -EMC.DIST) - 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', { MinC1, MaxC1})
|
|
EmtModifyAxisHome( 'C1', GetChainSawCHomeFromVirtualAxis( CSawPosA))
|
|
EmtModifyAxisStroke( 'B1', { MinB1, MaxB1})
|
|
EmtModifyAxisHome( 'B1', ParkB1)
|
|
-- se utensile di grande diametro su testa fresa
|
|
elseif EMC.HEAD == 'H1' and EMC.TOTDIAM > 600 then
|
|
EmtModifyAxisHome( 'X1', ParkSawX1)
|
|
EmtModifyAxisHome( 'Z1', ParkSawZ1)
|
|
EmtModifyAxisStroke( 'C1', { -180.1, 0.1})
|
|
EmtModifyAxisHome( 'C1', ParkSawC1)
|
|
EmtModifyAxisStroke( 'B1', { -90.1, 0.1})
|
|
EmtModifyAxisHome( 'B1', ParkSawB1)
|
|
-- altri casi su testa fresa
|
|
elseif EMC.HEAD == 'H1' then
|
|
EmtModifyAxisHome( 'X1', MaxX1)
|
|
EmtModifyAxisHome( 'Z1', MaxZ1)
|
|
EmtModifyAxisStroke( 'C1', { MinC1, MaxC1})
|
|
EmtModifyAxisHome( 'C1', ParkC1)
|
|
EmtModifyAxisStroke( 'B1', { MinB1, MaxB1})
|
|
EmtModifyAxisHome( 'B1', ParkB1)
|
|
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 -125
|
|
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
|