primo commit

This commit is contained in:
luca.mazzoleni
2024-09-18 18:33:14 +02:00
commit d268322e55
53 changed files with 3154 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
; Commento per evitare BOM con UTF-8
[General]
Material=Beam
[Tools]
Drillbit=1
Sawblade=1
Mill=1
Mortise=1
Chisel=0
DrillMaker=MakeWoodDrill.lua
SawbladeMaker=MakeSawblade.lua
MillMaker=MakeWoodCylMill.lua
MortiseMaker=MakeMortise.lua
ChiselMaker=MakeChisel.lua
Active=1
[ToolHolder]
H1.1=Standard.nge
H1.1:MILL_NOTIP=MillNoTip.nge
H2.1=SawOnH2.nge
H3.1=ChainSaw.nge
[Machinings]
Drilling=1
Sawing=1
Milling=1
Pocketing=1
Mortising=1
Chiseling=0
SawRoughing=0
SawFinishing=0
[Machining]
InitScript=InitMach.lua
ExitScript=ExitMach.lua
[Disposition]
;InitScript=InitDisp.lua
[Heads]
; 5 axis head
H1=6608
; 5 axis saw
H2=6615
; Chainsaw
H3=6616
; Horizontal drill
H5=6621
[SetUp]
Default=Standard
[Estimations]
Enable=1
WinPlace=0,514,138,628,810
[VMill]
Enable=1
Save=0
+489
View File
@@ -0,0 +1,489 @@
-- Descrizione macchina Essetre-90480026 by EgalTech s.r.l. 2023/03/16
-- Macchina Wall.
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '2.5c5'
-- Parametri macchina
NumericalControl = 'NUM' -- NUM o TPA
MinY = 0.0
MaxY = 30000.0
MinX1 = -5400.0
MaxX1 = 100.0
MinZ1 = -1570.0
MaxZ1 = 0.0
MinB1 = -127.0
MaxB1 = 127.0
MinC1 = -275.0
MaxC1 = 275.0
MillOffs = 202.0
ChSawLen = 101.0
MinX2 = -6080.0
MaxX2 = -770.0
MinZ2 = -1180.0
MaxZ2 = 0.0
MinB2 = 0.0
MaxB2 = 90.0
MinC2 = -275.0
MaxC2 = 275.0
MinX3 = 370
MaxX3 = 2300
HomeX3 = 2300
MinZ3 = 0
MaxZ3 = 500
SawDeltaX = 347.5
SawDeltaY = 0.0
SawDeltaZ = -117.9
SawOffs = 163.5
NailDeltaX = 457.7
NailDeltaY = 152.5
NailDeltaZ = -499
DrillDeltaX = -306.35
DrillDeltaY = -1131.785
DrillDeltaZ = -971.0
DimTabX = 31200.0
DimTabY = 3500.0
DeltaTabX = 1019.6
DeltaTabY = -1294.3 - DimTabY
DeltaTabZ = -1090.0
CoeffVM = 0.75
-- Aggiornamento con dati da TechnoEssetre7
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480023_MW.data"
local sData = EgtGetSourceDir().."\\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
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
MillOffs = MchOffs.PIVOT_MILL or MillOffs
SawOffs = MchOffs.PIVOT_SAW or SawOffs
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.ZERO_Y_MILL and MchOffs.ZERO_Y_NAIL then NailDeltaX = - ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_NAIL) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_NAIL then NailDeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_NAIL) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_Z_NAIL then NailDeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_Z_NAIL) end
if MchOffs.ZERO_Y_MILL and MchOffs.ZERO_Y_DRILL then DrillDeltaX = - ( MchOffs.ZERO_Y_MILL - MchOffs.ZERO_Y_DRILL) end
if MchOffs.ZERO_X_MILL and MchOffs.ZERO_X_DRILL then DrillDeltaY = ( MchOffs.ZERO_X_MILL - MchOffs.ZERO_X_DRILL) end
if MchOffs.ZERO_Z_MILL and MchOffs.ZERO_Z_DRILL then DrillDeltaZ = ( MchOffs.ZERO_Z_MILL - MchOffs.ZERO_Z_DRILL) end
end
end
-- Posizione media asse X
MidX1 = ( MinX1 + MaxX1) / 2
-- Spostamenti della lama rispetto al disegno
local SawOffsX = SawDeltaX - 347.5
local SawOffsY = SawDeltaY - 0
local SawOffsZ = SawDeltaZ + 117.9
-- Spostamenti del chiodatore rispetto al disegno
local NailOffsX = NailDeltaX - 383.8
local NailOffsY = NailDeltaY - 170.0
local NailOffsZ = NailDeltaZ - 37.0
-- Spostamenti del foratore rispetto al disegno
local DrillOffsX = DrillDeltaX + 306.35
local DrillOffsY = DrillDeltaY + 1131.785
local DrillOffsZ = DrillDeltaZ + 971.0
EmtGeneral {
File='Essetre-90480023_MW.nge',
Offset = Vector3d( -640.35, -3620.00, -1710.0),
AxisMaxAdjust = 250,
ExitMaxAdjust = 250,
ExitMaxRotAdj = 91,
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/MOD08', 'BASE/MOD09',
'BASE/MOD10', 'BASE/MOD11', 'BASE/MOD12', 'BASE/MOD13', 'BASE/REF', 'BASE/COLLISION'}}
local vtMove = Vector3d( DeltaTabX - 1019.6, DeltaTabY + 4794.3, DeltaTabZ + 1090)
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', 'Y_AXIS/TC', 'Y_AXIS/DRILL_BASE', 'Y_AXIS/COLLISION'}}
EgtMove( EgtGetFirstNameInGroup( YId, 'DRILL_BASE'), Vector3d( DrillOffsX, DrillOffsY, DrillOffsZ), GDB_RT.GLOB)
-- Testa 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'}}
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'}}
-- Chiodatrice
local H14Id = EmtHead {
Name = 'H14',
Parent = 'Z1',
HSet = 'H14',
Type = MCH_HT.STD,
Pos = Point3d( NailDeltaX, NailDeltaY, NailDeltaZ),
TDir = Z_AX(),
Geo = 'H14_HEAD/GEO',
Aux = {'H14_HEAD/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( H14Id, 'SOLID'), Vector3d( NailOffsX, NailOffsY, NailOffsZ), GDB_RT.GLOB)
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', 60)
-- 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'}
-- Foratore
local Z3Id = EmtAxis {
Name = 'Z3',
Parent = 'Y',
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( DrillOffsX, DrillOffsY, DrillOffsZ), GDB_RT.GLOB)
local X3Id = EmtAxis {
Name = 'X3',
Parent = 'Z3',
Token = 'X',
Type = MCH_AT.LINEAR,
Dir = Y_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = {MinX3, MaxX3},
Home = HomeX3,
Geo = 'X3_AXIS/GEO',
Aux = {'X3_AXIS/SOLID'}}
EgtMove( EgtGetFirstNameInGroup( X3Id, 'SOLID'), Vector3d( DrillOffsX, DrillOffsY, DrillOffsZ), GDB_RT.GLOB)
local H5Id = EmtHead {
Name = 'H5',
Parent = 'X3',
HSet = 'H5',
Type = MCH_HT.STD,
Pos = Point3d( DrillDeltaX, DrillDeltaY, DrillDeltaZ),
TDir = Y_AX(),
Geo = 'H5_HEAD/GEO'}
EgtSetInfo( H5Id, 'ABOVE', '0')
-- ToolChanger
local ptTcB = Point3d( -494.6,-4556.6,14.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,-1312.4,9-92.8),
TDir = X_AX(),
ADir = Z_AX(),
Geo = 'Y_AXIS/TC1'}
EmtTcPos {
Name = 'T201',
Parent = 'Y',
Pos = Point3d(-926.3,-1855.0,28),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TC2'}
EmtTcPos {
Name = 'T202',
Parent = 'Y',
Pos = Point3d(-926.3,-2555.0,28),
TDir = Z_AX(),
ADir = X_AX(),
Geo = 'Y_AXIS/TC3'}
---------------------------------------------------------------------
-- 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()
-- impostazioni assi
if EMC.HEAD == 'H1' then
EmtModifyAxisHome( 'X1', MaxX1)
EmtModifyAxisHome( 'Z1', MaxZ1)
EmtModifyAxisHome( 'C1', 0)
EmtModifyAxisHome( 'B1', 0)
elseif EMC.HEAD == 'H3' then
EmtModifyAxisHome( 'X1', MidX1)
EmtModifyAxisHome( 'Z1', -250)
EmtModifyAxisHome( 'C1', 90)
EmtModifyAxisHome( 'B1', 0)
elseif EMC.HEAD == 'H14' then
EmtModifyAxisHome( 'X1', MaxX1)
EmtModifyAxisHome( 'Z1', MaxZ1)
EmtModifyAxisHome( 'C1', 90)
EmtModifyAxisHome( 'B1', 90)
end
-- abilitazione/disabilitazione graffatrice
local dPos = EgtIf( EMC.HEAD == 'H14', 0, 680)
MoveGroup( EgtGetFirstNameInGroup( H14Id, 'SOLID'), Z_AX(), dPos, true)
MoveGroup( EgtGetFirstNameInGroup( H14Id, 'T1'), Z_AX(), dPos, true)
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
Binary file not shown.
+742
View File
@@ -0,0 +1,742 @@
-- Processore macchina Essetre-WALL by EgalTech s.r.l. 2023/03/14
-- Con controllo numerico NUM
-- 2023/03/13 DS Prima versione.
-- Variabili di modulo
local MLE_INFO = 'Essetre-WALL.NUM.mlpe ver.'..PP_VER..' by EgalTech s.r.l.'
local TEST_USE = false
---------------------------------------------------------------------
-- *** GENERATION ***
---------------------------------------------------------------------
function OnStart()
EMT.USETO1 = false -- abilitazione uso origine tavola
EMT.MODAL = true -- abilitazione emissione modale
EMT.INCHES = false -- unità di misura mm/inches
EMT.NUM = false -- abilitazione numerazione linee
--EMT.Nt = 'N' -- token per la numerazione di linea
--EMT.LINENBR = 0 -- numero di linea
--EMT.LINEINC = 1 -- incremento numerazione linee
--EMT.Ft = 'F' -- token per feed
--EMT.St = 'S' -- token per speed
EMT.FMAXPINZE = 154000 -- feed massima pinze
end
---------------------------------------------------------------------
function OnEnd()
-- Ripristino fase iniziale come corrente
EgtSetCurrPhase( 1)
end
---------------------------------------------------------------------
function OnProgramStart()
-- Info da gruppo BtlInfo (se mancano prova dal gruppo di lavoro corrente)
local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or EgtGetCurrMachGroup() or GDB_ID.NULL
EMT.ORIG = EgtGetInfo( BtlInfoId, 'REFPOS', 'i') or 1
EMT.LOAD90 = EgtGetInfo( BtlInfoId, 'LOAD90', 'i') or 0
-- Intestazioni
if not TEST_USE then
EMT.PRODID = EgtGetInfo( BtlInfoId, 'PRODID', 'i') or 0
EMT.PATTID = EgtGetInfo( BtlInfoId, 'PATTID', 'i') or 0
end
if EMT.PATTID and EMT.PATTID > 0 then
EmtOutput( '%' .. tostring( EMT.PATTID) .. '.0')
else
EmtOutput( '%40.0')
end
if EMT.INFO then
EmtOutput( '('..EMT.INFO..')')
else
EmtOutput( '(Program Start)')
end
EmtOutput( '('.. MLE_INFO..')')
-- Se modalità test vado in posizione sicura
if TEST_USE then
EmtOutput( 'G77 H9000 N1000 N2000')
end
-- Parametri macchina
local sOut = 'G114'..' EA'..EgtNumToString( DeltaTabY - SawDeltaY + DimTabY, -2)..' EB'..EgtNumToString( -DeltaTabX + SawDeltaX, -2)..
' EC'..EgtNumToString( DeltaTabZ - SawDeltaZ, -2)..' ED'..EgtNumToString( SawOffs, -2)..' EE'..EgtNumToString( 0, -2)..
' EF'..EgtNumToString( DeltaTabY + DimTabY, -2)..' EG'..EgtNumToString( -DeltaTabX, -2)..
' EH'..EgtNumToString( DeltaTabZ, -2)..' EI'..EgtNumToString( MillOffs, -2)..
' EL'..EgtNumToString( DeltaTabY - NailDeltaY + DimTabY, -2)..' EM'..EgtNumToString( -DeltaTabX + NailDeltaX, -2)..
' EN'..EgtNumToString( DeltaTabZ - NailDeltaZ, -2)..' EO'..EgtNumToString( DeltaTabY - DrillDeltaY + DimTabY, -2)..
' EP'..EgtNumToString( -DeltaTabX + DrillDeltaX, -2)..' EQ'..EgtNumToString( DeltaTabZ - DrillDeltaZ, -2)
EmtOutput( sOut)
-- Indice lavorazione
EMT.CNT = 0
-- Non effettuate lavorazioni con sega a catena sul fianco
EMT.CSAWFIRST = true
-- Non effettuata pausa per rimozione sfridi
EMT.SCRAPFIRST = true
-- Cerco primo utensile su testa 1
EMT.TOOL_1, EMT.TLEN_1 = FindFirstToolOnHead( 'H1')
end
---------------------------------------------------------------------
function OnProgramEnd()
EmtOutput( '( *** Program End *** )')
EmitCount()
-- Dichiarazione conclusione pezzi
if EMT.PRODID then
local PartId = EgtGetFirstPartInRawPart( EMT.RAWID)
while PartId do
local CutId = EgtGetInfo( PartId, 'CUTID', 'i') or 0
local sOut = 'G126 EA'..tostring( EMT.PRODID)..' EB'..tostring( EMT.PATTID)..' EC'..tostring( CutId)..' ED2'
EmtOutput( sOut)
PartId = EgtGetNextPartInRawPart( PartId)
end
end
-- Arresto mandrino
EmtOutput( 'M05 E80000=1')
-- Tipo di scarico
if not TEST_USE then
EmtOutput( '(M12 $PRESS START FOR CLEANING)')
EmtOutput( 'M27 E30057=0')
end
-- Se modalità test, termino il programma
if TEST_USE then
EmtOutput( 'M02')
end
end
---------------------------------------------------------------------
function OnToolData()
-- emissione dati utensile (esclusa lama e sega a catena)
if EMT.HEAD == 'H1' then
-- cerco posizione di attrezzaggio del primo utensile di lavorazione
if EMT.TOOL == EMT.TOOL_1 and EMT.TLEN_1 < 215.5 then
EMT.TCPOS_1 = EMT.TCPOS
end
-- emissione dati sega a catena
elseif EMT.HEAD == 'H3' then
;
end
end
---------------------------------------------------------------------
function OnDispositionStart()
--EmtOutput( '(Disposition '..EMT.DISPIND..' = '..EMT.DISPID..')')
EMT.OPEISDISP = true
end
---------------------------------------------------------------------
function OnDispositionEnd()
-- Se prima disposizione
if EMT.PHASE == 1 then
-- Dimensioni grezzo
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
EMT.LP = b3Raw:getDimX()
EMT.HP = b3Raw:getDimY()
EMT.SP = b3Raw:getDimZ()
EmtOutput( 'E30050='..EgtNumToString( 1000 * EMT.HP, 0)..
' E30051='..EgtNumToString( 1000 * EMT.LP, 0)..
' E30052='..EgtNumToString( 1000 * EMT.SP, 0))
-- Posizione cuffia
local dHCuff = b3Raw:getDimZ() + 32
EmtOutput( 'E30039=' .. EgtNumToString( dHCuff * 1000, 0))
-- Eventuale salto a lavorazione in corso
EmtOutput( 'G79 NE80000')
-- Lancio del carico
EmitCount()
if not TEST_USE then
EmtOutput( 'M26 E30054=' .. EgtIf( EMT.LOAD90 == 1, '5', '1'))
end
-- Dichiarazione inizio lavorazione pezzi
if EMT.PRODID then
EmitCount()
local PartId = EgtGetFirstPartInRawPart( EMT.RAWID)
while PartId do
local CutId = EgtGetInfo( PartId, 'CUTID', 'i') or 0
local sOut = 'G126 EA'..tostring( EMT.PRODID)..' EB'..tostring( EMT.PATTID)..' EC'..tostring( CutId)..' ED1'
EmtOutput( sOut)
PartId = EgtGetNextPartInRawPart( PartId)
end
end
end
EMT.OPEISDISP = false
end
---------------------------------------------------------------------
function OnTableData()
end
---------------------------------------------------------------------
function OnFixtureData()
end
---------------------------------------------------------------------
function OnRawMoveData()
end
---------------------------------------------------------------------
function OnToolSelect()
-- se utensile definito (non definito per disposizioni con movimento)
if EMT.TOOL ~= '' then
-- verifiche su utensile
local sTool = EgtTdbGetToolFromUUID( EgtGetMachiningParam( MCH_MP.TUUID) or "")
if sTool ~= EMT.TOOL then EmtSetLastError( 1213, 'Tool name mismatch') end
-- predefinite EMT.TCPOS EMT.HEAD EMT.EXIT
EMT.TOOLTYPE = EgtTdbGetCurrToolParam( MCH_TP.TYPE)
EMT.TOOLSEL = EMT.TCPOS..' M06'
EMT.TDIAM = EgtTdbGetCurrToolParam( MCH_TP.DIAM)
EMT.TTOTDIAM = EgtTdbGetCurrToolParam( MCH_TP.TOTDIAM)
EMT.TLEN = EgtTdbGetCurrToolParam( MCH_TP.LEN)
EMT.TTOTLEN = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
end
end
---------------------------------------------------------------------
function OnToolDeselect()
end
---------------------------------------------------------------------
function OnMachiningStart()
--EMT.MCHLIBNAME = EgtGetMachiningParam( MCH_MP.NAME)
EMT.MCHNAME = EgtGetOperationName( EMT.MCHID)
EMT.MCHTYPE = EgtGetMachiningParam(MCH_MP.TYPE)
-- non ancora iniziata la lavorazione
EMT.MCHFIRST = true
-- primo posizionamento sempre in globale
EMT.REFLOC = nil
EMT.IPLGL = false
end
---------------------------------------------------------------------
function OnMachiningEnd()
if not EMT.ZMAX and not IsNailingHead( EMT.HEAD) then
EmtOutput( 'G103'..GetET()..' E80000='..tostring( EMT.CNT + 1))
end
EMT.PREVTOOL = EMT.TOOL
end
---------------------------------------------------------------------
function OnPathStart()
-- reset valori precedenti (per forzare emissione di tutti gli assi del 1° movimento)
EmtResetPrev()
end
---------------------------------------------------------------------
function OnPathEnd()
if IsNailingHead( EMT.HEAD) then
local dStep = GetValNotes( EgtGetMachiningParam( MCH_MP.USERNOTES), 'Par', 'd') or 100
local dSafeZ = max( EgtGetMachiningParam( MCH_MP.STARTPOS), 10) or 20
--local dSafeZ = EgtMdbGetGeneralParam( MCH_GP.SAFEZ)
local sEB = ' EB0'
if EMT.TO_ZMAX then
sEB = ' EB1'
EMT.TO_ZMAX = nil
end
EmtOutput( 'G124 X'..EmtLenToString( EMT.NAIL_START_L1, 3)..' Y'..EmtLenToString( EMT.NAIL_START_L2, 3)..' Z'..EmtLenToString( EMT.NAIL_START_L3, 3)..
' B'..EmtLenToString( EMT.NAIL_END_L1, 3)..' C'..EmtLenToString( EMT.NAIL_END_L2, 3)..' EA'..EmtLenToString( dStep, 3)..' EB1'..
' W'..EmtLenToString( dSafeZ, 3)..EMT.NAIL_END)
end
end
---------------------------------------------------------------------
function OnRapid()
-- se primo movimento della lavorazione, gestione speciale
if EMT.MCHFIRST and not EMT.OPEISDISP then
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
EmtOutput( '( *** '..EMT.MCHNAME..'/'..EMT.TOOL..' *** )')
EmitCount()
-- se lavorazione con sega a catena
if EMT.HEAD == 'H3' then
-- se prima lavorazione sui fianchi con sega a catena
if EMT.CSAWFIRST and string.sub( EMT.MCHNAME, 1, 5) == 'Csaw_' then
EMT.CSAWFIRST = false
-- eventuale pausa per rimozione sfridi
if EMT.SCRAPFIRST then
EMT.SCRAPFIRST = false
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
local ParkY = min( -( b3Raw:getMin():getX() - 2000), -MinY)
EmtOutput( 'G104 Y' .. EmtLenToString( ParkY, 3) .. ' ET1' .. GetEF())
end
-- pre-posizionamento
EmitCount()
EmtResetPrev()
local sOut = 'G101' .. EmtGetAxis( 'R1')
local sET = GetET()
local sEU = GetEU()
local sEF = GetEF()
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
local sEL = ' EL' .. EmtLenToString( ChSawLen, 3)
local sER = ' ER' .. EmtLenToString( EMT.TLEN, 3)
sOut = sOut .. sET .. sEU .. sEF .. sEM .. sES .. sEL .. sER
EmtOutput( sOut)
end
-- altrimenti verifico se necessaria pausa
else
if EMT.SCRAPFIRST and EgtExistsInfo( EMT.MCHID, 'MOVE_AFTER') then
EMT.SCRAPFIRST = false
-- pausa per rimozione sfridi
local b3Raw = EgtGetRawPartBBox( EMT.RAWID)
local ParkY = min( -( b3Raw:getMin():getX() - 2000), -MinY)
EmtOutput( 'G104 Y' .. EmtLenToString( ParkY, 3) .. ' ET1' .. GetEF())
end
end
-- primo posizionamento
EmtResetPrev()
if EMT.HEAD ~= 'H5' then
local sOut = 'G101' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L2') .. EmtGetAxis( 'L3') ..
EmtGetAxis( 'R2') .. EmtGetAxis( 'R1')
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' or EMT.HEAD == 'H14' then
sOut = sOut .. ' U' .. EmtLenToString( MinX2, 3) .. ' W0 V90 A0'
elseif EMT.HEAD == 'H2' then
sOut = sOut .. ' U' .. EmtLenToString( MaxX1, 3) .. ' W0 V0 A0'
else
EmtSetLastError( 1211, "Unknown Head : " .. EMT.HEAD)
end
local sET = GetET()
local sEU = GetEU()
local sEF = GetEF()
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ChSawLen), 3)
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
sOut = sOut .. sET .. sEU .. sEF .. sEM .. sES .. sEL .. sER
if not IsNailingHead( EMT.HEAD) then
EmtOutput( sOut)
end
EMT.REFLOC = 0
EMT.MCHFIRST = false
EMT.ZMAX = false
else -- H5 (foratore orizzontale)
-- rinvio l'emissione al prossimo movimento con Z del foro
EMT.FIRST_HDRILL = true
EMT.REFLOC = nil
EMT.MCHFIRST = false
end
-- se standard
elseif EMT.FLAG == 0 or EMT.FLAG == 1 or EMT.FLAG == 2 then
-- se prima emissione di foratura orizzontale
if EMT.FIRST_HDRILL then
EMT.FIRST_HDRILL = false
local sET = GetET()
local sEU = GetEU()
EMT.L1 = -EMT.L1
local sOut = 'G101 X0' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L3')..' U0 V0 W0'..sET..sEU..' EF60000'
EmtOutput( sOut)
EMT.L1 = -EMT.L1
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
EmtResetPrev()
local sEF = ' EF20000'
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sX = ' X40'
local sEX = ' EX0'
sOut = 'G102' .. sX ..' Y0 Z0'..sEX..' EY'..EmtLenToString( EMT.L1)..' EZ'..EmtLenToString( EMT.L3) .. ' EA0 EB0 EC0 ED0' .. sET .. sEU .. sEM .. sEF
EmtOutput( sOut)
EMT.ZMAX = false
-- se necessario, impostazione riferimento locale
elseif EMT.REFLOC == 0 then
-- calcolo per piano generico
CalcInterpPlane()
EMT.REFLOC = 1
-- trasformo i punti nel piano
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
EMT.L1p = nil
EMT.L2p = nil
EMT.L3p = nil
EMT.R1p = nil
EMT.R2p = nil
local sET = GetET()
local sEU = GetEU()
local sEF = ' EF20000'
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ChSawLen), 3)
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
if not IsNailingHead( EMT.HEAD) then
EmtOutput( 'G102'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EmtGetAxis('R2')..EmtGetAxis('R1')..EMT.IPLGLSTR..sET..sEU..sEF..sEM..sES..sEL..sER)
-- emissione movimento
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
EmtGetAxis('R2')..EmtGetAxis('R1')
EmtOutput( sOut)
else
EMT.NAIL_START_L1 = EMT.L1
EMT.NAIL_START_L2 = EMT.L2
EMT.NAIL_START_L3 = EMT.L3
EMT.NAIL_END_L1 = EMT.L1
EMT.NAIL_END_L2 = EMT.L2
EMT.NAIL_END = EMT.IPLGLSTR..sET..sEU..sEF..sEM..sES..sEL..sER
end
else
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
-- emissione movimento
if not IsNailingHead( EMT.HEAD) then
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
EmtGetAxis('R2')..EmtGetAxis('R1')
EmtOutput( sOut)
else
if EMT.L1 then EMT.NAIL_END_L1 = EMT.L1 end
if EMT.L2 then EMT.NAIL_END_L2 = EMT.L2 end
if EMT.L3 and EMT.L3 < EMT.NAIL_START_L3 then
EMT.NAIL_START_L3 = EMT.L3
end
end
end
-- se altrimenti risalita a Z max a fine lavorazione
elseif EMT.FLAG == 3 then
if not IsNailingHead( EMT.HEAD) then
if EMT.REFLOC then
EMT.REFLOC = nil
EMT.IPLGL = false
EmtResetPrev()
-- dichiarazione fine lavorazione
EmtOutput( 'G103'..GetET()..' E80000='..tostring( EMT.CNT + 1))
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
local sOut = 'G101' .. EmtGetAxis( 'L3') .. EmtGetAxis( 'R2') .. EmtGetAxis( 'R1') .. GetET() .. GetEF()
EmtOutput( sOut)
EMT.ZMAX = true
elseif EMT.HEAD == 'H5' then
EmtResetPrev()
EmtOutput( 'G103'..GetET()..' E80000='..tostring( EMT.CNT + 1))
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
EMT.ZMAX = true
end
else
EMT.TO_ZMAX = true
end
-- se altrimenti movimento in Home
elseif EMT.FLAG == 4 then
-- non previsto
-- altrimenti errore
else
EmtSetLastError( 1214, 'Unknown Rapid flag')
end
-- aggiorno valori come precedenti
EmtUpdatePrev()
end
---------------------------------------------------------------------
function OnLinear()
-- se prima emissione di foratura orizzontale
if EMT.FIRST_HDRILL then
EMT.FIRST_HDRILL = false
local sET = GetET()
local sEU = GetEU()
EMT.L1 = -EMT.L1
local sOut = 'G101 X0' .. EmtGetAxis( 'L1') .. EmtGetAxis( 'L3')..' U0 V0 W0'..sET..sEU..' EF60000'
EmtOutput( sOut)
EMT.L1 = -EMT.L1
-- salvo posizione attuale
local OldL1 = EMT.L1
local OldL2 = EMT.L2
local OldL3 = EMT.L3
local OldR1p = EMT.R1p
local OldR2p = EMT.R2p
-- trasformo i punti
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
EmtResetPrev()
local sEF = ' EF20000'
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sX = ' X40'
local sEX = ' EX0'
sOut = 'G102' .. sX ..' Y0 Z0'..sEX..' EY'..EmtLenToString( EMT.L1)..' EZ'..EmtLenToString( EMT.L3) .. ' EA0 EB0 EC0 ED0' .. sET .. sEU .. sEM .. sEF
EmtOutput( sOut)
-- ripristino posizione attuale
EMT.L1 = OldL1
EMT.L2 = OldL2
EMT.L3 = OldL3
EMT.R1p = OldR1p
EMT.R2p = OldR2p
EMT.ZMAX = false
-- se necessario, impostazione riferimento locale
elseif EMT.REFLOC == 0 then
-- calcolo per piano generico
CalcInterpPlane()
EMT.REFLOC = 1
-- salvo posizione attuale
local OldL1 = EMT.L1
local OldL2 = EMT.L2
local OldL3 = EMT.L3
local OldR1p = EMT.R1p
local OldR2p = EMT.R2p
-- imposto posizione precedente
EMT.L1 = EMT.L1o
EMT.L2 = EMT.L2o
EMT.L3 = EMT.L3o
EMT.R1p = nil
EMT.R2p = nil
-- trasformo i punti nel piano
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
local sET = GetET()
local sEU = GetEU()
local sEF = ' EF20000'
local sEM = ' EM'..EgtIf( EMT.S > 0, '3', '4')
local sES = ' ES'..EgtNumToString( abs( EMT.S), 0)
local sEL = ' EL' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TLEN, ChSawLen), 3)
local sER = ' ER' .. EmtLenToString( EgtIf( EMT.HEAD ~= 'H3', EMT.TDIAM / 2, EMT.TLEN), 3)
if not IsNailingHead( EMT.HEAD) then
EmtOutput( 'G102'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EmtGetAxis('R2')..EmtGetAxis('R1')..EMT.IPLGLSTR..sET..sEU..sEF..sEM..sES..sEL..sER)
-- emissione movimento
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
EmtGetAxis('R2')..EmtGetAxis('R1')
EmtOutput( sOut)
else
EMT.NAIL_START_L1 = EMT.L1
EMT.NAIL_START_L2 = EMT.L2
EMT.NAIL_START_L3 = EMT.L3
EMT.NAIL_END_L1 = EMT.L1
EMT.NAIL_END_L2 = EMT.L2
EMT.NAIL_END = EMT.IPLGLSTR..sET..sEU..sEF..sEM..sES..sEL..sER
end
-- ripristino posizione attuale
EMT.L1 = OldL1
EMT.L2 = OldL2
EMT.L3 = OldL3
EMT.R1p = OldR1p
EMT.R2p = OldR2p
end
-- aggiustamento valori
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
if not IsNailingHead( EMT.HEAD) then
-- valori degli assi
local sAxes
if EMT.HEAD ~= 'H5' then
sAxes = EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
EmtGetAxis('R2')..EmtGetAxis('R1')
else
sAxes = EmtGetAxis('L2')
end
-- se nulla da emettere, esco
if #sAxes == 0 then
return
end
-- aggiungo feed
local sFeed = EmtGetFeed()
-- emetto linea
EmtOutput( "G1"..sAxes..sFeed)
-- eventuale gestione fondo foro
if EMT.FLAG == 101 and EMT.HEAD == 'H5' then
EmtOutput( 'M155')
end
else
if EMT.L1 then EMT.NAIL_END_L1 = EMT.L1 end
if EMT.L2 then EMT.NAIL_END_L2 = EMT.L2 end
if EMT.L3 and EMT.L3 < EMT.NAIL_START_L3 then
EMT.NAIL_START_L3 = EMT.L3
end
end
-- aggiorno valori come precedenti
EmtUpdatePrev()
end
---------------------------------------------------------------------
function OnArc()
-- non modale su archi
local dPrevZ = EMT.L3p
EmtResetPrevLinear()
-- aggiustamento valori
MyAdjustLinearAxes()
EmtAdjustRotaryAxes()
if not IsNailingHead( EMT.HEAD) then
-- valori degli assi
local sAxes = EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
EmtGetAxis('R2')..EmtGetAxis('R1')
-- se nulla da emettere, esco
if string.len( sAxes) == 0 then
return
end
-- valori delle coordinate del centro
EmtAdjustCenterAxes()
-- coordinate centro (per ora solo archi nel piano XY)
--local sCen = ' ' .. EMT.C1t .. EmtLenToString(EMT.C1,3) ..
-- ' ' .. EMT.C2t .. EmtLenToString(EMT.C2,3)
-- raggio
local sRad = ' ' .. EMT.RRt .. EmtLenToString(EMT.RR,3)
-- aggiungo feed
local sFeed = EmtGetFeed()
-- tipo arco
local sArc = 'G' .. EgtNumToString(EMT.MOVE,0)
-- se elica, aggiungo il pitch
local sPitch = ''
local dDeltaZ = EMT.L3 - dPrevZ
if abs( dDeltaZ) > GEO.EPS_SMALL then
local dPitch = dDeltaZ * 360.0 / abs( EMT.AC)
sPitch = ' K' .. EmtLenToString( dPitch, 3)
end
-- emetto arco
EmtOutput( sArc..sAxes..sRad..sPitch..sFeed)
else
-- Archi non previsti con chiodature
EmtSetLastError( 1212, 'Arcs non allowed with nailing')
end
-- aggiorno valori come precedenti
EmtUpdatePrev()
end
---------------------------------------------------------------------
function MyAdjustLinearAxes()
if EMT.REFLOC then
local vtDelta = V_NULL()
local vtE = V_NULL()
if EMT.HEAD == 'H1' then
local Len = EMT.TLEN + MillOffs
local LenRef = MillOffs
local vtTool = EgtGetCalcToolDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
vtE = vtTool * Len - Z_AX() * LenRef
elseif EMT.HEAD == 'H2' then
vtDelta = -Vector3d( SawDeltaX, SawDeltaY, SawDeltaZ)
local Len = EMT.TLEN + SawOffs
local LenRef = SawOffs
local vtTool = EgtGetCalcToolDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
vtE = vtTool * Len - Z_AX() * LenRef
elseif EMT.HEAD == 'H3' then
local Len = ChSawLen + MillOffs
local LenRef = MillOffs
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
vtE = vtAux * Len - Z_AX() * LenRef
elseif EMT.HEAD == 'H14' then
vtDelta = -Vector3d( NailDeltaX, NailDeltaY, NailDeltaZ)
vtE = Z_AX() * EMT.TLEN
end
EMT.L1 = EMT.L1 - vtDelta:getX() - vtE:getX()
EMT.L2 = EMT.L2 - vtDelta:getY() - vtE:getY()
EMT.L3 = EMT.L3 - vtDelta:getZ() - DeltaTabZ - vtE:getZ()
elseif EMT.HEAD == 'H5' then
EMT.L1 = EMT.L1 - DeltaTabX + DrillDeltaX
EMT.L2 = EMT.L2 - DeltaTabY + DrillDeltaY - DimTabY - EMT.TLEN
EMT.L3 = EMT.L3 - DeltaTabZ + DrillDeltaZ
end
EmtAdjustLinearAxes()
if not EMT.REFLOC then
EMT.L1 = - EMT.L1
EMT.L1t = 'Y'
EMT.L2t = 'X'
else
EMT.L1t = 'X'
EMT.L2t = 'Y'
end
end
---------------------------------------------------------------------
function CalcInterpPlane()
-- origine del piano
local xS = EMT.START[1]
local yS = EMT.START[2]
local zS = EgtIf( IsNailingHead( EMT.HEAD), EMT.SP, 0)
local ptS = Point3d( xS, yS, zS)
-- calcolo per piano generico
local vtE
if EMT.HEAD == 'H1' then
vtE = EgtGetCalcToolDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
elseif EMT.HEAD == 'H3' then
vtE = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
else
vtE = Z_AX()
end
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' then
EMT.IPLGLFR = Frame3d( ptS, vtE)
else
EMT.IPLGLFR = Frame3d( ptS, Y_AX(), -X_AX(), Z_AX())
end
--EmtOutput( 'IPLGLFR='..tostring(EMT.IPLGLFR))
local _, dAngV, dAngO = SphericalFromVector( vtE)
local dAngO2 = EmtGetAngO2( EMT.IPLGLFR:getVersZ(), EMT.IPLGLFR:getVersX(), dAngV, dAngO)
dAngO = dAngO - 90
while dAngO < 0 do
dAngO = dAngO + 360
end
-- se rotazione solo attorno alla C allora si mette come rotazione finale
if abs( dAngV) < GEO.EPS_ANG_SMALL then
dAngO2 = dAngO2 + dAngO
while dAngO2 >= 360 do
dAngO2 = dAngO2 - 360
end
dAngO = 0
end
-- A seconda del corner di riferimento scelto togliere o meno da EX DimTabY e da EY DimTabX (BL non li usa, TR li richiede entrambi)
local xOut = yS - DeltaTabY - DimTabY
local yOut = - ( xS - DeltaTabX)
local zOut = zS
EMT.IPLGLSTR = ' EX'..EmtLenToString( xOut)..' EY'..EmtLenToString( yOut)..' EZ'..EmtLenToString( zOut)..
' EA0'..' EB'..EgtNumToString( dAngV)..' EC'..EgtNumToString( dAngO)..' ED'..EgtNumToString( dAngO2)
EMT.IPLGL = true
end
---------------------------------------------------------------------
function GetET()
if EMT.HEAD == 'H1' or EMT.HEAD == 'H3' then
return ' ET2'
elseif EMT.HEAD == 'H2' then
return ' ET1'
elseif EMT.HEAD == 'H5' then
return ' ET3'
elseif EMT.HEAD == 'H14' then
return ' ET1'
end
end
---------------------------------------------------------------------
function GetEU()
local sEU
if EMT.HEAD == 'H1' then
sEU = ' EU'..string.sub( EMT.TCPOS, 2)
elseif EMT.HEAD == 'H2' then
sEU = ' EU0'
elseif EMT.HEAD == 'H3' then
if abs( EMT.R3 - 0) < 0.1 then
sEU = ' EU104'
elseif abs( EMT.R3 - 270) < 0.1 then
sEU = ' EU101'
elseif abs( EMT.R3 - 180) < 0.1 then
sEU = ' EU102'
elseif abs( EMT.R3 - 90) < 0.1 then
sEU = ' EU103'
else
EmtSetLastError( 1210, 'Chain saw orientation not allowed')
end
else
sEU = ' EU0'
end
return sEU
end
---------------------------------------------------------------------
function GetEF()
return ' EF60000'
end
---------------------------------------------------------------------
function EmitCount()
EMT.CNT = EMT.CNT + 1
EmtOutput( 'N'..tostring( EMT.CNT)..' E80000='..tostring( EMT.CNT))
end
---------------------------------------------------------------------
function IsNailingHead( sHead)
return ( sHead == 'H14')
end
---------------------------------------------------------------------
function GetValNotes( sNotes, sKey, sType)
local vsChunk = EgtSplitString( sNotes or '', ';')
local dVal
for i = 1, #vsChunk do
local dTmp = EgtGetVal( vsChunk[i], sKey, sType)
if dTmp then dVal = dTmp end
end
return dVal
end
---------------------------------------------------------------------
-- *** END GENERATION ***
---------------------------------------------------------------------
+1077
View File
File diff suppressed because it is too large Load Diff
+67
View File
@@ -0,0 +1,67 @@
-- Special Operations macchina Essetre-WALL by EgalTech s.r.l. 2023/03/14
-- Intestazioni
require( 'EmtGenerator')
EgtEnableDebug( false)
EgtOutLog ( '** Essetre-WALL.mlse '..PP_VER..' **', 1)
---------------------------------------------------------------------
function OnSpecialMoveZup()
-- Inizializzazioni
EMC.MODIF = false
EMC.ERR = 1
-- Se fresa
if EMC.HEAD == 'H1' then
if EMC.L3 > -300 then
EMC.R1 = EgtGetAxisHomePos( 'C1')
EMC.R2 = EgtGetAxisHomePos( 'B1')
EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2)
EMC.MODIF = true
end
-- se altrimenti sega a catena
elseif EMC.HEAD == 'H3' then
local L3New = EMC.L3
local R1New = EMC.R1
local R2New = EMC.R2
if EMC.L3 > -300 then
L3New = min( EMC.L3, -250)
R1New = EgtGetAxisHomePos( 'C1')
R2New = EgtGetAxisHomePos( 'B1')
EMC.MODIF = true
end
if EMC.L2 > -1200 then
R1New = 180
EMC.MODIF = true
elseif EMC.L2 < -4700 then
R1New = 0
EMC.MODIF = true
end
if EMC.MODIF then
EMC.L3 = L3New
EMC.R1 = R1New
EMC.R2 = R2New
EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2, EMC.R3)
end
-- se altrimenti lama
elseif EMC.HEAD == 'H2' then
if EMC.L3 > -200 then
EMC.R1 = EgtGetAxisHomePos( 'C2')
EMC.R2 = EgtGetAxisHomePos( 'B2')
EMC.TDIR = EgtGetCalcToolDirFromAngles( EMC.R1, EMC.R2)
EMC.MODIF = true
end
-- se foratore orizzontale
elseif EMC.HEAD == 'H5' then
;
-- se chiodatrice
elseif EMC.HEAD == 'H14' then
;
-- altrimenti errore
else
error( "Unknown Head")
end
EMC.ERR = 0
end
Binary file not shown.
Binary file not shown.
+36
View File
@@ -0,0 +1,36 @@
-- 2018/11/21 17:30:00
-- Machining Exit for Essetre-FAST machine
-- Intestazioni
require( 'EgtBase')
_ENV = EgtProtectGlobal()
EgtEnableDebug( false)
--------------------------------------------------------------------------------
-- *** Uscita da Lavorazioni ***
-- Nascondo il pezzo così marcato e le geometrie aggiunte, visualizzo il Box
local function ProcessPart( PartId)
-- visualizzo il Box
EgtSetStatus( EgtGetFirstNameInGroup( PartId, 'Box') or GDB_ID.NULL, GDB_ST.ON)
end
-- Disabilito segnalazione modifica progetto
local bEnMod = EgtGetEnableModified()
EgtDisableModified()
-- Processo i pezzi nella radice (già chiusi tutti i gruppi di lavoro)
local PartId = EgtGetFirstPart()
while PartId do
ProcessPart( PartId)
PartId = EgtGetNextPart( PartId)
end
EgtZoom( SCE_ZM.ALL, false)
-- Ripristino segnalazione modifica progetto
if bEnMod then
EgtEnableModified()
end
MACH.ERR = 0
+44
View File
@@ -0,0 +1,44 @@
-- 2018/11/21 16:30:00
-- Machining Init for Essetre-FAST machine
-- Intestazioni
require( 'EgtBase')
_ENV = EgtProtectGlobal()
EgtEnableDebug( false)
--------------------------------------------------------------------------------
-- *** Ingresso in Lavorazioni ***
-- Rendo visibile il pezzo e le geometrie aggiunte, nascondo il Box
local function ProcessPart( PartId)
-- nascondo il Box
EgtSetStatus( EgtGetFirstNameInGroup( PartId, 'Box') or GDB_ID.NULL, GDB_ST.OFF)
end
-- Disabilito segnalazione modifica progetto
local bEnMod = EgtGetEnableModified()
EgtDisableModified()
-- Processo i pezzi nella radice
local PartId = EgtGetFirstPart()
while PartId do
ProcessPart( PartId)
PartId = EgtGetNextPart( PartId)
end
-- Processo i pezzi già nei gruppi di lavoro (quando appena lanciata Process)
local GhostId = EgtGetFirstGhostPart()
while GhostId do
local PartId = EgtGetInfo( GhostId, GDB_SI.SOURCE, 'i')
if PartId then
ProcessPart( PartId)
end
GhostId = EgtGetNextGhostPart( GhostId)
end
-- Ripristino segnalazione modifica progetto
if bEnMod then
EgtEnableModified()
end
MACH.ERR = 0
+208
View File
@@ -0,0 +1,208 @@
-- 2023/03/14
-- Gestione attrezzaggio per Essetre-Wall con caso speciale fresa possibile anche su T101.
-- Intestazioni
require( 'EgtBase')
_ENV = EgtProtectGlobal()
EgtEnableDebug( false)
-- Tavola di passaggio valori
local STU = {}
STU.TUUID = ""
STU.TCPOS = ""
STU.HEAD = ""
STU.GROUP = ""
STU.POS = ""
STU.EXIT = 0
STU.INDEX = 0
STU.HEAD1 = ""
STU.HEAD2 = ""
STU.ISVALID = false
STU.ERR = 0
_G.STU = STU
local INVALIDPOS = ""
local POS = "Pos"
-- Geom Set
local GS = {}
-- Configurazione posizioni
local PositionTable={{Pos = "Pos1", TcPos = "T1", Head = "H1", Group = "G1"},
{Pos = "Pos2", TcPos = "T2", Head = "H1", Group = "G1"},
{Pos = "Pos3", TcPos = "T3", Head = "H1", Group = "G1"},
{Pos = "Pos4", TcPos = "T4", Head = "H1", Group = "G1"},
{Pos = "Pos5", TcPos = "T5", Head = "H1", Group = "G1"},
{Pos = "Pos6", TcPos = "T6", Head = "H1", Group = "G1"},
{Pos = "Pos7", TcPos = "T7", Head = "H1", Group = "G1"},
{Pos = "Pos8", TcPos = "T8", Head = "H1", Group = "G1"},
{Pos = "Pos9", TcPos = "T9", Head = "H1", Group = "G1"},
{Pos = "Pos10", TcPos = "T42", Head = "H2", Group = "G2"},
{Pos = "Pos11", TcPos = "T101", Head = "H3", Group = "G2"},
{Pos = "Pos12", TcPos = "T201", Head = "H1", Group = "G2"},
{Pos = "Pos13", TcPos = "T202", Head = "H1", Group = "G2"},
{Pos = "Pos14", TcPos = "T14", Head = "H14", Group = "G2"},
{Pos = "Pos15", TcPos = "T301", Head = "H5", Group = "G3"}}
local UsePositionHead = false
local function IsInGeomSet( ToolHead, PosHead)
-- speciale per questa macchina
if ToolHead == 'H1' and PosHead == 'H3' then
return true
end
-- standard
for GsIndex = 1, #GS do
local bToolHead = false
local bPosHead = false
for HIndex = 1, #GS[GsIndex] do
if GS[GsIndex][HIndex] == ToolHead then
bToolHead = true
elseif GS[GsIndex][HIndex] == PosHead then
bPosHead = true
end
if bToolHead and bPosHead then
return true
end
end
if bToolHead and bPosHead then
return true
end
end
return false
end
function STU.IsCompatibleHeads()
STU.ISVALID = false
if IsInGeomSet( STU.HEAD1, STU.HEAD2) then
STU.ISVALID = true
else
STU.ISVALID = false
end
end
function STU.GetValidHeadExitForPos()
-- se TUUID non valido restituisco errore
local ToolName = EgtTdbGetToolFromUUID( STU.TUUID)
if ToolName == nill then
STU.ERR = 1
return
end
EgtTdbSetCurrTool( ToolName)
local CurrToolHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
STU.EXIT = EgtTdbGetCurrToolParam( MCH_TP.EXIT)
-- recupero testa predefinita per la posizione corrente
local CurrPosHead
for i = 1, #PositionTable do
if PositionTable[i].TcPos == STU.TCPOS then
CurrPosHead = PositionTable[i].Head
break
end
end
-- verifico se la testa è quella della posizione predefinita
if CurrPosHead == CurrToolHead then
STU.HEAD = CurrToolHead
STU.ERR = 0
return
-- verifico se la testa è compatibile con quella della posizione predefinita
elseif IsInGeomSet( CurrToolHead, CurrPosHead) then
if UsePositionHead then
STU.HEAD = CurrPosHead
STU.ERR = 0
return
else
STU.HEAD = CurrToolHead
STU.ERR = 0
return
end
-- la testa non è compatibile con quella della posizione predefinita
else
STU.HEAD = INVALIDPOS
STU.ERR = 0
return
end
end
function STU.IsValidTcPosFromHead()
STU.ISVALID = false
for i = 1, #PositionTable do
if PositionTable[i].TcPos == STU.TCPOS then
if PositionTable[i].Head == STU.HEAD then
STU.ISVALID = true
STU.ERR = 0
return
elseif IsInGeomSet( STU.HEAD, PositionTable[i].Head) then
STU.ISVALID = true
STU.ERR = 0
return
end
STU.ISVALID = false
STU.ERR = 0
return
end
end
end
function STU.GetTcPosHeadGroupFromPos()
for i = 1, #PositionTable do
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
STU.TCPOS = PositionTable[i].TcPos
STU.HEAD = PositionTable[i].Head
STU.GROUP = PositionTable[i].Group
STU.ERR = 0
return
end
end
STU.TCPOS = INVALIDPOS
STU.HEAD = INVALIDPOS
STU.GROUP = INVALIDPOS
STU.ERR = 1
end
function STU.GetPosFromTcPos()
for i = 1, #PositionTable do
if PositionTable[i].TcPos == STU.TCPOS then
STU.POS = PositionTable[i].Pos
STU.ERR = 0
return
end
end
STU.POS = INVALIDPOS
STU.ERR = 1
end
function STU.GetGroupFromTcPos()
for i = 1, #PositionTable do
if PositionTable[i].TcPos == STU.TCPOS then
STU.GROUP = PositionTable[i].Group
STU.ERR = 0
return
end
end
STU.GROUP = INVALIDPOS
STU.ERR = 1
end
function STU.GetHeadFromPos()
for i = 1, #PositionTable do
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
STU.HEAD = PositionTable[i].Head
STU.ERR = 0
return
end
end
STU.HEAD = INVALIDPOS
STU.ERR = 1
end
function STU.GetTcPosFromPos()
for i = 1, #PositionTable do
if PositionTable[i].Pos == (POS .. tostring(STU.INDEX)) then
STU.TCPOS = PositionTable[i].TcPos
STU.ERR = 0
return
end
end
STU.TCPOS = INVALIDPOS
STU.ERR = 1
end
+17
View File
@@ -0,0 +1,17 @@
; Commento per evitare BOM con UTF-8
[General]
Pos1=T1
Pos2=T2;H1;1/0A54F32E-C48D-45DB-8502-953CA94FD7A0/NUTFRAESER_25x130
Pos3=T3;H1;1/951FD4FC-EB64-44E3-97E0-348DBBD79C68/Smusso45
Pos4=T4;H1;1/8A2B00DE-C8F3-4AE6-8C51-D9D6FAEC36F6/SPIRAL_FREASER_40x160
Pos5=T5;H1;1/294F6AD8-E4BE-41BF-ACDA-A9F812413607/Smusso60
Pos6=T6
Pos7=T7;H1;1/E51AC36C-31A5-4C27-9517-E3E33AED5604/NUTFRAESER_80X305
Pos8=T8;H1;1/23052E85-6EED-4FC8-89CF-92AA95F22D2A/NUTFRAESER_20x130
Pos9=T9
Pos10=T42;H2;1/6CB00A83-DDCD-49E6-A301-E1A0482615CA/Sageblatt_1000
Pos11=T101;H1;1/89157C3F-9444-45CE-91B0-391C8AAD8693/WALZENFRAESER_200
Pos12=T201;H1;1/3AC43952-CC00-44CC-AF54-9C27714C344D/WALZENFRAESER_350X60
Pos13=T202;H1;1/EF2F6C56-D37D-4AF4-9C5E-8802CDF0F276/WALZENFRAESER_350X20
Pos14=T14;H14;1/9580BE15-3B48-4903-BBED-F4F0912E0A28/14
Pos15=T301;H5;1/988C8FE5-70C2-418A-B8EA-53476324D1ED/Bohrer_D35X1800
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
+10
View File
@@ -0,0 +1,10 @@
-- CutData.lua by Egaltech s.r.l. 16/02/2021 11:50:31
-- Gestione dati lavorazioni per Travi
-- Tabella per definizione modulo
local CutData = {
{ On = true, Name = 'Cutting1000', Type = 'Standard'}
}
---------------------------------------------------------------------
return CutData
+12
View File
@@ -0,0 +1,12 @@
-- DrillData.lua by Egaltech s.r.l. 14/03/2023 09:56:29
-- Gestione dati lavorazioni per Travi
-- Tabella per definizione modulo
local DrillData = {
{ On = true, Name = 'DrillD35', Type = 'Drill'},
{ On = true, Name = 'DrillPockD40', Type = 'Pocket'},
{ On = true, Name = 'DrillPockD25', Type = 'Pocket'}
}
---------------------------------------------------------------------
return DrillData
+25
View File
@@ -0,0 +1,25 @@
[Cut]
1=Standard
[Drill]
1=Drill
2=Pocket
[Milling]
1=FreeContour
2=Side
3=SideGroove
4=DtMortise
5=Mark
6=Text
7=CleanCorner60
8=CleanCorner30
9=Nailing
[Pocketing]
1=Pocket
2=OpenPocket
3=Mortise
[Sawing]
1=Sawing
+18
View File
@@ -0,0 +1,18 @@
-- MillingData.lua by Egaltech s.r.l. 14/03/2023 20:41:48
-- Gestione dati lavorazioni per Travi
-- Tabella per definizione modulo
local MillingData = {
{ On = true, Name = 'Spig30x40', Type = 'CleanCorner30'},
{ On = true, Name = 'Spig60x70', Type = 'CleanCorner60'},
{ On = false, Name = 'Milling200x63', Type = 'SideGroove'},
{ On = true, Name = 'Milling200x63', Type = 'Side'},
{ On = true, Name = 'SawM_480', Type = 'SideGroove'},
{ On = true, Name = 'Milling200x63', Type = 'FreeContour'},
{ On = true, Name = 'Milling62x67', Type = 'FreeContour'},
{ On = true, Name = 'Milling25x130', Type = 'FreeContour'},
{ On = true, Name = 'Nailing_14', Type = 'Nailing'}
}
---------------------------------------------------------------------
return MillingData
+14
View File
@@ -0,0 +1,14 @@
-- PocketingData.lua by Egaltech s.r.l. 14/03/2023 20:12:19
-- Gestione dati lavorazioni per Travi
-- Tabella per definizione modulo
local PocketingData = {
{ On = true, Name = 'Svuot200x63', Type = 'OpenPocket'},
{ On = true, Name = 'Svuot62x67', Type = 'OpenPocket'},
{ On = true, Name = 'Svuot62x67', Type = 'Pocket'},
{ On = true, Name = 'Svuot20x50', Type = 'Pocket'},
{ On = true, Name = 'Svuot25x130', Type = 'Pocket'}
}
---------------------------------------------------------------------
return PocketingData
+10
View File
@@ -0,0 +1,10 @@
-- SawingData.lua by Egaltech s.r.l. 12/11/2020 17:56:03
-- Gestione dati lavorazioni per Travi
-- Tabella per definizione modulo
local SawingData = {
{ On = true, Name = 'TaglioCatena', Type = 'Sawing'}
}
---------------------------------------------------------------------
return SawingData
+235
View File
@@ -0,0 +1,235 @@
-- C:\TechnoEssetre7\EgtData\Essetre-90480023_MW.data
local Offsets = {
MIN_X=-5070,
MAX_X=0,
MIN_Y=-30000,
MAX_Y=0,
MIN_Z=-1350,
MAX_Z=0,
MIN_B=-135,
MAX_B=135,
MIN_C=-275,
MAX_C=275,
MIN_U=-5840,
MAX_U=-770,
MIN_W=-1220,
MAX_W=0,
MIN_V=0,
MAX_V=90,
MIN_A=-275,
MAX_A=275,
ZERO_X_SAW=-1273.5,
ZERO_Y_SAW=-788.6,
ZERO_Z_SAW=-1032.6,
PIVOT_SAW=163.5,
ZERO_X_MILL=-1278.2,
ZERO_Y_MILL=-1137.4,
ZERO_Z_MILL=-1115.3,
PIVOT_MILL=208,
INTRULLI=1200,
TYPEWORK=1,
ZERO_X_DRILL=-133,
ZERO_Y_DRILL=-1441,
ZERO_Z_DRILL=0,
ZERO_X_NAIL=-1445,
ZERO_Y_NAIL=-756,
ZERO_Z_NAIL=-1184.4,
DELTA_X=0,
DELTA_Y=0,
DELTA_Z=0,
Zzz=1
}
local Trave = {
XMIN=10,
XMAX=3500,
YMIN=50,
YMAX=30000,
ZMIN=1,
ZMAX=400,
Zzz=1
}
local User = {
VELOCITA_VELOCITARAPIDOFRESE=10000,
VELOCITA_VELOCITA_USCITA_LAMA=20000,
VELOCITA_FEED_ENTRY=5000,
VELOCITA_FEED_EXIT=20000,
NESTING_MATERIAL=1,
NESTING_TYPEEXTERNALOP=1,
NESTING_FROM_BTL=1,
NESTING_ORDINA=1,
NESTING_NOCOMPAT=0,
PROFILES_PROF_SMUSSO=5,
PAUSE_ACTIVE_PAUSE=0,
SAFETY_DISTANCE_ZSAVE=40,
OPTIMIZATIONS_ENABLE_SLICES_F5=0,
OPTIMIZATIONS_LENGTH_MAX_SCRAP_F5=799,
OPTIMIZATIONS_LENGTH_MAX_SCRAP_F5_P5=1350,
OPTIMIZATIONS_ENABLE_SLICES_F6=0,
OPTIMIZATIONS_LENGTH_SLICES=150,
OPTIMIZATIONS_SYMMETRIC_HEADS_PF=0,
OPTIMIZATIONS_RECOVERY_PRINT_ONLY=1,
L056_DISTSICUR=5,
L056_ENTRY_SPLINTER=10,
L056_ACTIVE_AS=1,
L055_ADD_P13=0,
L055_MODSAG=1,
L055_DISTSICUR=20,
L055_ENTRY_SPLINTER=20,
L055_TOLL_W=0,
L055_ACTIVE_AS=1,
L051_FORCE_P4=0,
L050_ATTIVA_CICLO_L050=0,
L050_FORCE_P4=0,
L050_ISOOUTSVUOTA=1,
L050_ADDDEPTH=0,
L050_DIAM_LUNG=1,
L050_USE2HEAD=0,
L053_ISOOUTSVUOTA=2,
L053_DIAM_LUNG=1,
L060_PEN_F2=2,
L060_PEN_F1=2,
L060_ORTHO_WRITER=0,
L060_ORTHO_WRITER_ADD_Y=0,
L060_DISABLE_L060=0,
L060_PEN_POSITION=0,
L101_MANUAL_POSITIONING=0,
L102_MANUAL_POSITIONING=0,
L103_MANUAL_POSITIONING=0,
L103_RID_SCALA_SMUSSO=5,
L103_ADD_WIDTH=0,
L103_ADD_WIDTH_CHAMFER=0,
L106_MANUAL_POSITIONING=0,
L106_RANGE=0,
L106_ADD_WIDTH=0,
L106_ASL=0,
L106_ASL_DEPTH=0,
L138_TOLLERANZA=0,
L052_ATTIVA_CICLO_MASCHIO=2,
L052_RIDLARGL052=0,
L052_REDUCTION=0,
L037_FEED_1=2000,
L037_FEED_2=4000,
L037_FEED_3=3000,
L037_MIN_LENGTH_ROT_AXE_A=130,
L037_TOOL_WIDTH=0,
L034_CHAMFER=0,
L034_FEED_CHAMFER=3000,
L034_PROF_AS=180,
L034_USE_SAW=19,
L034_LENGTH_MIN_DIV=900,
L032_ADD_P13=0,
L032_LENGTH_MIN_DIV=900,
T055_DISTSICURTENON=5,
T055_RIDP11=1,
T055_RIDLARGT055=0,
T055_ACTIVE_AS=1,
T055_ADDP15=0,
T050_REDUCTION=2,
T050_RIDLARGT050=0,
T050_RIDALTET050=0,
T050_FORCE_P4=0,
T050_ATTIVA_CICLO_MASCHIO=0,
T050_FEED_ENTRY=1500,
L040_ADD_P11=1,
L040_ADD_P11_PASS=0,
L040_OFFSET_P1=-1,
L040_OFFSET_P1_MAX_DISTANCE=0,
L040_2_DRILLINGS=0,
L040_TYPEDRILLING=1,
L040_USE2HEAD=0,
L017_ATTIVA_CICLO_MASCHIO=0,
L017_USAMORTASA_TURN=0,
L017_USAMORTASA=0,
L017_USE_SAW=0,
L017_GLOBAL_CUT=0,
L017_P7MAGG90=0,
L017_DIAM_LUNG=1,
L012_ENABLE_180=0,
L012_LIM=1,
L012_WORK_F1=0,
L012_MM_WORK_F1=0,
L012_LENGTH_MIN_DIV=900,
L012_USCITA_COMPLUVIO=0,
L012_ALT_MAX_LAMA=361,
L010_ENABLE_180=0,
L010_LIM=0,
L010_MM_SLICES=150,
L010_LONGITUDINAL_CYCLE=0,
L010_LENGTH_MIN_DIV=900,
L010_ALT_MAX_LAMA=361,
L016_CYCLE_ZPASS=0,
L016_USAMORTASA=0,
L016_LENGTH_MIN_DIV=2000,
L020_DIAM_HOLE=0,
L020_OFFSET_P1=0,
L020_MANUAL_POSITIONING=0,
L020_DIAM_HOLE_INV=0,
L020_DOUBLE_HOLE=1,
L020_ANTISCHEGGIA_LAMA=0,
L020_ALTMAXLAMA=360,
L030_NO_CAT_FIN=1,
L030_AUM_DIM=0,
L030_USE_ONLY_MILLER=0,
L030_PAUSE_PARETI=2,
L030_DELTA_PORTALE=500,
L030_ANTISCHEGGIA_FRESA=0,
L030_ANTISCHEGGIA_LAMA=0,
L030_ANTISCHEGGIA_LIMITE_MINIMO=0,
L030_USE_BIG_MILLER=1,
L030_MAX_HAUTEUR_OUTIL_203=350,
L030_MAX_LARGEUR_OUTIL_203=250,
L030_OFFSET_P1_OUTIL_203=0,
L030_SORMONTO_TASCA=0,
L030_ATTIVA_CICLO_FEMMINA=0,
L030_DISTANCE_FOR_TOOL_TYPE_4=135,
L030_USE_SAW_P4_12=16,
L030_LENGTH_MIN_DIV=900,
L030_OFFSETPIANOCATENA=15,
T010_TYPECUT=0,
T010_LENGHT_SLICES=400,
T010_ADD_EXIT_ORIZZ=26,
T010_ADD_EXIT=26,
T010_DISTSICURCUT=15,
T010_ADD_EXIT_DOLAMA=10,
T010_TRONCA_DOPPIA_PENDENZA=0,
T010_TRONCATURA_CON_G107=1,
T010_DISABILITA_TRONCATURA=0,
T010_DOUBLE_CUT_HALF=0,
T010_ALT_CAMBIO_TRONCATURA_FAST=360,
T010_NO_START_X=0,
T010_DIST_INF_HEAD=110,
T010_ADD_ENTRY_CUT=20,
T010_USACATENA=1,
T010_ALTCATENA=362,
T010_USA_TRUCIOLATORE=1,
T010_OFFSETPIANOCATENA=20,
T010_DISABLE_MILLING_AFTER_DIVISION=0,
T010_SAFETY_DISTANCE=5,
T010_ROT_C_SAW=700,
T010_FEED_ENTRY_SAW=4900,
T010_USASEMPRECATENA=0,
T010_T010ORIZZFINITURA=0,
T010_TAGLLAT=0,
P010_DEPTH=6,
P011_DISTSICURTENON=5,
P011_RIDLARGT055=0,
P011_RIDP11=2,
P011_ACTIVE_AS=1,
L038_ACTIVE_CUT=1,
L036_LENGTH_MIN_DIV=900,
T138_OFFSETTIMBERLAKE=0,
WUP_LAVSOLOEST=1,
T030_LENGTH_MIN_DIV=500,
T030_ANGMAXINF=15,
L013_LENGTH_MIN_DIV=2000,
P003_ALT_MAX_LAMA=440,
P003_OFFSETPIANOCATENA=0,
T080_ALTCATENA=399,
Zzz=1
}
local Machine = { Offsets=Offsets, Trave=Trave, User=User}
return Machine
+81
View File
@@ -0,0 +1,81 @@
-- WallData.lua by Egaltech s.r.l. 2023/03/16
-- Raccolta dati generali per Pareti
EgtOutLog( ' 90480023_MW-WallData started', 1)
-- Tabella per definizione modulo
local WallData = {
MIN_LENGTH = 100, -- lunghezza minima del grezzo
MIN_WIDTH = 100, -- larghezza minima del grezzo
MIN_HEIGHT = 10, -- altezza minima del grezzo
MAX_LENGTH = 18000, -- lunghezza massima del grezzo
MAX_WIDTH = 4900, -- larghezza massima del grezzo
MAX_HEIGHT = 400, -- altezza massima del grezzo
STD_RAW_LENGTH = 10000, -- lunghezza standard del grezzo
STD_RAW_WIDTH = 4000, -- larghezza standard del grezzo
OVM_HEAD = 60, -- sovramateriale testa
OVM_MID = 50, -- sovramateriale intermedio
COLL_SIC = 5, -- distanza di sicurezza per collisioni
CUT_SIC = 20, -- distanza di sicurezza per tagli
CUT_EXTRA = 3, -- affondamento extra standard per tagli di lama e fresature
CUT_EXTRA_MIN = 0, -- affondamento extra ridotto per tagli di lama e fresature
NZ_MINA = 0.5, -- componente limite in Z normale di una faccia (-30deg)
NZ_MINB = -0.4, -- componente limite in Z normale di un insieme di facce (-23deg)
DRILL_TOL = 0.5, -- tolleranza tra diametro foro e diametro punta
DRILL_VZ_MIN = 0.5, -- componente limite in Z del versore di un foro
DRILL_VX_MAX = 0.866, -- componente limite in X del versore di un foro sulle facce laterali
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
HOR_DRILL_Y_SPLIT = -6000, -- quota di split dei fori orizzontali speciali lungo Y (quota di metà tavola)
HOR_DRILL_Y_TABLE = 3500, -- dimensione di riferimento tavola in Y per fori orizzontali speciali lungo Y
HOR_DRILL_YNEG_MAXMIN = -3994.3, -- massimo minimo in Y per fori da Y negativo
HOR_DRILL_LEN = 1500, -- lunghezza della punta per fori orizzontali speciali lungo Y
HOR_DRILL_DIAM = 35, -- diametro della punta per fori orizzontali speciali lungo Y
HOR_DRILL_5AX = false, -- abilita lavorazione dei fori orizzontali (default true)
MINRAWY_HOR_DRILL = 3500, -- dimensione y minima del grezzo per fori orizzontali in vista
MAX_CLEAN_CRN30 = 60, -- massimo spessore per pulitura angolo con fresa 30deg
MAX_CLEAN_CRN60 = 200, -- massimo spessore per pulitura angolo con fresa 70deg
MIN_DIM_ALLOW_CLEAN = 200, -- apertura minima per lavorazione pulitura spigolo
MILL_MAX_DEPTH_AS_MAT = false, -- massimo affondamento frese uguale ad altezza tagliente (max materiale)
MAXDIAM_POCK_CORNER= 81, -- diametro massimo utensile ammesso per tasche con angoli interni
CHECK_MIN_Z_SAW = true, -- controlla la quota minima della lama rispetto alla tavola (default true)
MIN_Z_SAW = -5, -- quota minima rispetto alla tavola (default 0)
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
DELTA_X = 0, -- offset in X dal corner di riferimento
DELTA_Y = 0, -- offset in Y dal corner di riferimento
DELTA_Z = 0, -- offset in Z dalla tavola
SIMUL_VIEW_DIR = 3, -- direzione di vista predefinita per la simulazione (1=NW, 2=SW, 3=NE, 4=SE)
ORIG_CORNER = 'TL', -- angolo tavola per origine di battuta (BR (defualt), TR, BL, TL)
NESTING_CORNER = 'TL', -- angolo di origine del grezzo per posizionamento pezzi (BR (defualt), TR, BL, TL)
}
-- Aggiornamento con dati da TechnoEssetre7
local sTs3Data = EgtGetStringFromIni( 'Wall', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-90480026.data"
local sData = EgtGetSourceDir().."\\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 then
if Machine.Offsets then
WallData.DELTA_X = Machine.Offsets.DELTA_Y or WallData.DELTA_X
WallData.DELTA_Y = Machine.Offsets.DELTA_X or WallData.DELTA_Y
WallData.DELTA_Z = Machine.Offsets.DELTA_Z or WallData.DELTA_Z
end
if Machine.Trave then
WallData.MIN_LENGTH = Machine.Trave.YMIN or BeamData.MIN_LENGTH
WallData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
WallData.MIN_HEIGHT = Machine.Trave.ZMIN or BeamData.MIN_HEIGHT
WallData.MAX_LENGTH = Machine.Trave.YMAX or BeamData.MAX_LENGTH
WallData.MAX_WIDTH = Machine.Trave.XMAX or BeamData.MAX_WIDTH
WallData.MAX_HEIGHT = Machine.Trave.ZMAX or BeamData.MAX_HEIGHT
end
end
end
---------------------------------------------------------------------
return WallData
+9
View File
@@ -0,0 +1,9 @@
-- %TABLE_NAME%.lua by Egaltech s.r.l. %DATE_TIME%
-- Gestione dati lavorazioni per Travi
-- Tabella per definizione modulo
local %TABLE_NAME% = {
}
---------------------------------------------------------------------
return %TABLE_NAME%