20 Commits

Author SHA1 Message Date
luca.mazzoleni b7edad0235 in WallData modificato PANELSAW_TYPE 2025-09-16 12:11:22 +02:00
luca.mazzoleni 6bcd42654a - cambio versione 2025-09-11 12:28:42 +02:00
luca.mazzoleni b523286d37 - in WallData aggiunta costante PANELSAW_TYPE per scegliere il tipo di export per sezionatrice 2025-09-11 12:28:11 +02:00
luca.mazzoleni ef5d3ed40b Merge branch 'main' of https://gitlab.steamware.net/egalware-machines/masterwood/Masterwood-TF600KST 2025-08-25 16:51:52 +02:00
luca.mazzoleni 22c8363684 - in WallData aggiunto parametro ENABLE_SIMPLE_NESTING per nesting cabinet
- eliminati file non git
2025-08-25 16:51:48 +02:00
Dario Sassi 9c1256940d Masterwood-TF600KST 2.7h1 :
- modifiche per evitare collisioni in simulazione con gruppo a forare.
2025-08-22 17:41:20 +02:00
luca.mazzoleni d60c926b73 - in WallData MIN_HEIGHT portata a 7. Versione non cambiata 2025-07-17 15:26:18 +02:00
luca.mazzoleni a48ddc8eb0 - in WallData update dimensioni pezzo min/max 2025-07-17 09:51:15 +02:00
luca.mazzoleni 169aa72a0c - in ini macchina settata per usare la spunta invece del db setup 2025-06-17 15:30:36 +02:00
luca.mazzoleni 86f71435c6 - update corse e dimensioni massime 2025-06-17 11:23:55 +02:00
luca.mazzoleni 822f03ed17 update gitignore 2025-06-17 09:29:38 +02:00
Dario Sassi ec18dcbedc Masterwood-TF600KST 2.7f2 :
- in forature multiple vengono ora esclusi dalla generazione i fori non lavorati.
2025-06-09 11:55:43 +02:00
luca.mazzoleni c672f65ca4 - update ini per copia part program da interfaccia 2025-06-04 10:57:05 +02:00
andrea.villa b479f99f05 Corretto nome asse Z per calcolo tempi 2025-04-28 16:03:08 +02:00
luca.mazzoleni 04137978fc - aggiunta cartella per script Wall
- in ini settato setup standard
2025-04-28 15:25:04 +02:00
Dario Sassi cce6a8654c Masterwood-TF600KST :
- sistemazione a gruppo a forare da sotto
- diverse piccole migliorie.
2025-04-16 11:13:11 +02:00
Dario Sassi 7d0a0388f8 Masterwood-TF600KST :
- aggiornata minima versione MachKernel richiesta.
2025-04-15 20:13:50 +02:00
Dario Sassi c1d868cb43 Masterwood-TF600KST :
- modifiche per rendere standard la generazione del partprogram.
2025-04-15 19:54:09 +02:00
Dario Sassi eb6587f5f8 Masterwood-TF600KST :
- spostato COLL_SAFE_DIST in mlde come per altre macchine.
2025-04-14 19:32:12 +02:00
Dario Sassi 4fb25dcf52 Masterwood-TF600KST 2.7d3 :
- modificata simulazione con teste da sotto
- sistemata simulazione gruppi a forare
- sistemata generazione forature e fresature da sotto.
2025-04-14 19:25:17 +02:00
12 changed files with 267 additions and 135 deletions
+10 -1
View File
@@ -1,8 +1,17 @@
/Tools
/Machinings
/SetUp
/Beam/Ts3Data.bak
/Beam/CutData.lua
/Beam/DrillData.lua
/Beam/MillingData.lua
/Beam/PocketingData.lua
/Beam/SawingData.lua
/Beam/SawingData.lua
/Beam/Ts3Data.lua
/Wall/Ts3Data.bak
/Wall/CutData.lua
/Wall/DrillData.lua
/Wall/MillingData.lua
/Wall/PocketingData.lua
/Wall/SawingData.lua
/Wall/Ts3Data.lua
+5
View File
@@ -1,6 +1,9 @@
; Commento per evitare BOM con UTF-8
[General]
Material=Wood
Supervisor=0
SaveCncPath=C:\Tf600ISO
SaveExt=mpr
[Tools]
Drillbit=1
@@ -12,9 +15,11 @@ DrillMaker=MakeWoodDrill.lua
SawbladeMaker=MakeSawblade.lua
MillMaker=MakeWoodCylMill.lua
ChiselMaker=MakeChisel.lua
Active=1
[ToolHolder]
H11.1=HSK-F63_MillWeld12.nge
H21.1=HSK-F63_Std.nge
[Machinings]
Drilling=1
+43 -42
View File
@@ -1,14 +1,15 @@
-- Descrizione macchina Masterwood TF600KST 2025/04/10
-- Descrizione macchina Masterwood TF600KST 2025/08/22
-- by EgalWare s.r.l.
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '2.7d2'
MIN_MACH_VER = '2.7a1'
PP_VER = '2.7i1'
MIN_MACH_VER = '2.7d2'
-- DATI MACCHINA --
NumericalControl = 'woodWOP'
COLL_SAFE_DIST = 3
-- DATI TAVOLA --
TabX = 0
@@ -18,7 +19,7 @@ TabZ = 0
----------------------------------------------------
-------------------- CORSE ASSI --------------------
----------------------------------------------------
XAxisStroke = {-2000, 2000}
XAxisStroke = {-3000, 3000}
XAxisHome = 0
YAxisStroke = {-2000, 2000}
Z11AxisStroke = {-700, 700}
@@ -37,27 +38,27 @@ H12PosY = 0
H12PosZ = 0
H12Pos = H11Pos + Vector3d( H12PosX, H12PosY, H12PosZ)
-- teste gruppo a forare sopra
MDRILLTOP = { { Pos = H12Pos + Vector3d( 0, 0, 0), Ex=1, St=60}, -- uscita 1
{ Pos = H12Pos + Vector3d( 32, 0, 0), Ex=2, St=60}, -- uscita 2
{ Pos = H12Pos + Vector3d( 64, 0, 0), Ex=3, St=60}, -- uscita 3
{ Pos = H12Pos + Vector3d( 96, 0, 0), Ex=4, St=60}, -- uscita 4
{ Pos = H12Pos + Vector3d( 128, 0, 0), Ex=5, St=60}, -- uscita 5
{ Pos = H12Pos + Vector3d( 160, 0, 0), Ex=6, St=60}, -- uscita 6
{ Pos = H12Pos + Vector3d( 192, -32, 0), Ex=7, St=60}, -- uscita 7
{ Pos = H12Pos + Vector3d( 192, -64, 0), Ex=8, St=60}, -- uscita 8
{ Pos = H12Pos + Vector3d( 192, -96, 0), Ex=9, St=60}, -- uscita 9
{ Pos = H12Pos + Vector3d( 192, -160, 0), Ex=10, St=60}, -- uscita 10
{ Pos = H12Pos + Vector3d( 192, -192, 0), Ex=11, St=60}, -- uscita 11
{ Pos = H12Pos + Vector3d( 192, -224, 0), Ex=12, St=60}, -- uscita 12
{ Pos = H12Pos + Vector3d( 192, -256, 0), Ex=13, St=60}, -- uscita 13
{ Pos = H12Pos + Vector3d( 48, -80, 0), Ex=14, St=60}, -- uscita 14
{ Pos = H12Pos + Vector3d( 80, -80, 0), Ex=15, St=60}, -- uscita 15
{ Pos = H12Pos + Vector3d( 22, 96, 0), Ex=16, St=60}, -- uscita 16
{ Pos = H12Pos + Vector3d( 22, 64, 0), Ex=17, St=60}, -- uscita 17
{ Pos = H12Pos + Vector3d( 48, -186, 0), Ex=18, St=60}, -- uscita 18
{ Pos = H12Pos + Vector3d( 60, -186, 0), Ex=19, St=60}, -- uscita 19
{ Pos = H12Pos + Vector3d( 128, 96, 0), Ex=20, St=60}, -- uscita 20
{ Pos = H12Pos + Vector3d( 128, 64, 0), Ex=21, St=60}, -- uscita 21
MDRILLTOP = { { Pos = H12Pos + Vector3d( 0, 0, 0), Ex=1, St=90}, -- uscita 1
{ Pos = H12Pos + Vector3d( 32, 0, 0), Ex=2, St=90}, -- uscita 2
{ Pos = H12Pos + Vector3d( 64, 0, 0), Ex=3, St=90}, -- uscita 3
{ Pos = H12Pos + Vector3d( 96, 0, 0), Ex=4, St=90}, -- uscita 4
{ Pos = H12Pos + Vector3d( 128, 0, 0), Ex=5, St=90}, -- uscita 5
{ Pos = H12Pos + Vector3d( 160, 0, 0), Ex=6, St=90}, -- uscita 6
{ Pos = H12Pos + Vector3d( 192, -32, 0), Ex=7, St=90}, -- uscita 7
{ Pos = H12Pos + Vector3d( 192, -64, 0), Ex=8, St=90}, -- uscita 8
{ Pos = H12Pos + Vector3d( 192, -96, 0), Ex=9, St=90}, -- uscita 9
{ Pos = H12Pos + Vector3d( 192, -160, 0), Ex=10, St=90}, -- uscita 10
{ Pos = H12Pos + Vector3d( 192, -192, 0), Ex=11, St=90}, -- uscita 11
{ Pos = H12Pos + Vector3d( 192, -224, 0), Ex=12, St=90}, -- uscita 12
{ Pos = H12Pos + Vector3d( 192, -256, 0), Ex=13, St=90}, -- uscita 13
{ Pos = H12Pos + Vector3d( 48, -80, 0), Ex=14, Tw=18, St=60}, -- uscita 14
{ Pos = H12Pos + Vector3d( 80, -80, 0), Ex=15, Tw=19, St=60}, -- uscita 15
{ Pos = H12Pos + Vector3d( 22, 96, 0), Ex=16, Tw=20, St=60}, -- uscita 16
{ Pos = H12Pos + Vector3d( 22, 64, 0), Ex=17, Tw=21, St=60}, -- uscita 17
{ Pos = H12Pos + Vector3d( 48, -186, 0), Ex=18, Tw=14, St=60}, -- uscita 18
{ Pos = H12Pos + Vector3d( 60, -186, 0), Ex=19, Tw=15, St=60}, -- uscita 19
{ Pos = H12Pos + Vector3d( 128, 96, 0), Ex=20, Tw=16, St=60}, -- uscita 20
{ Pos = H12Pos + Vector3d( 128, 64, 0), Ex=21, Tw=17, St=60} -- uscita 21
}
-- testa 5 assi sotto
H21Pos = Vector3d( 0, 0, 0)
@@ -196,7 +197,7 @@ EmtHead {
TDir20 = -X_AX(),
Pos21 = MDRILLTOP[21].Pos,
TDir21 = -X_AX(),
ADir = X_AX(),
ADir = VectorFromPolar( 1, 45),
Geo = 'H12_HEAD/GEO',
Aux = {'H12_HEAD/SOLID', 'H12_HEAD/SOL_T1', 'H12_HEAD/SOL_T2', 'H12_HEAD/SOL_T3', 'H12_HEAD/SOL_T4', 'H12_HEAD/SOL_T5',
'H12_HEAD/SOL_T6', 'H12_HEAD/SOL_T7', 'H12_HEAD/SOL_T8', 'H12_HEAD/SOL_T9', 'H12_HEAD/SOL_T10', 'H12_HEAD/SOL_T11',
@@ -210,7 +211,7 @@ EmtAxis {
Dir = Z_AX(),
Pos = Point3d(0, 0, 0),
Stroke = Z21AxisStroke,
Home = 650,
Home = -650,
Geo = 'Z21_AXIS/GEO',
Aux = 'Z21_AXIS/SOLID'}
local H21Id = EmtHead {
@@ -231,7 +232,7 @@ EmtAxis {
Dir = Z_AX(),
Pos = Point3d( 0, 0, 0),
Stroke = Z22AxisStroke,
Home = 400,
Home = -400,
Geo = 'Z22_AXIS/GEO',
Aux = 'Z22_AXIS/SOLID'}
local H22Id = EmtHead {
@@ -239,7 +240,7 @@ local H22Id = EmtHead {
Parent = 'Z22',
HSet = 'H22',
Type = MCH_HT.MULTI,
SelType = MCH_SLT.ONEEXIT, -- MCH_SLT.MULTIEXITS,
SelType = MCH_SLT.MULTIEXITS,
ExitNbr = 9,
Pos1 = MDRILLBOTT[1].Pos,
TDir1 = -Z_AX(),
@@ -294,26 +295,23 @@ end
---------------------------------------------------------------------
function OnActivateDrillingUnit()
-- assegno dati testa
local nHeadId = EMC.HEADID
-- sistemo dati uscite attive
local vbExit = {}
for i = 1, #( EMC.DRACEX or {}) do
vbExit[EMC.DRACEX[i]] = true
end
if EMC.HEADID == EgtGetHeadId( 'H12') then
if EgtGetName( EMC.HEADID) == 'H12' then
-- ciclo su tutte le uscite della testa
for nExit = 1, #MDRILLTOP do
-- eventuale gemello
local nTwin = MDRILLTOP[nExit].Tw or 0
-- nome e identificativo della geometria dell'uscita
local sExit = 'T' .. EgtNumToString( nExit, 0)
local nExitId = EgtGetFirstNameInGroup( nHeadId, sExit)
local nExitId = EgtGetFirstNameInGroup( EMC.HEADID, sExit)
-- recupero la geometria associata all'uscita
local sStem = 'SOL_' .. sExit
local nStemId = EgtGetFirstNameInGroup( nHeadId, sStem)
local nStemId = EgtGetFirstNameInGroup( EMC.HEADID, sStem)
-- determino la posizione
local dPos = EgtIf( vbExit[nExit] or vbExit[nTwin], 0, MDRILLTOP[nExit].St)
-- eseguo posizionamento
@@ -324,24 +322,24 @@ function OnActivateDrillingUnit()
end
end
if EMC.HEADID == EgtGetHeadId( 'H22') then
if EgtGetName( EMC.HEADID) == 'H22' then
-- ciclo su tutte le uscite della testa
for nExit = 1, #MDRILLBOTT do
-- eventuale gemello
local nTwin = MDRILLBOTT[nExit].Tw or 0
-- nome e identificativo della geometria dell'uscita
local sExit = 'T' .. EgtNumToString( nExit, 0)
local nExitId = EgtGetFirstNameInGroup( nHeadId, sExit)
local nExitId = EgtGetFirstNameInGroup( EMC.HEADID, sExit)
-- recupero la geometria associata all'uscita
local sStem = 'SOL_' .. sExit
local nStemId = EgtGetFirstNameInGroup( nHeadId, sStem)
local nStemId = EgtGetFirstNameInGroup( EMC.HEADID, sStem)
-- determino la posizione
local dPos = EgtIf( vbExit[nExit] or vbExit[nTwin], 0, MDRILLBOTT[nExit].St)
-- eseguo posizionamento
if nStemId then
MoveGroup( nStemId, Z_AX(), dPos)
MoveGroup( nStemId, -Z_AX(), dPos)
end
MoveGroup( nExitId, Z_AX(), dPos)
MoveGroup( nExitId, -Z_AX(), dPos)
end
end
@@ -349,11 +347,14 @@ end
---------------------------------------------------------------------
function OnSetHead()
-- disabilito uscite del gruppo a forare da sopra (gestito con multiselezione)
EMC.HEADID = EgtGetHeadId( 'H12')
EMC.DRACEX = nil
EMC.DRACEX = EgtIf( EMC.HEAD == 'H12', { EMC.EXIT}, nil)
OnActivateDrillingUnit()
-- gestisco uscite del gruppo a forare da sotto (gestito con selezione singola)
EMC.HEADID = EgtGetHeadId( 'H22')
EMC.ACTIVE = ( EMC.HEAD == 'H22')
EMC.DRACEX = EgtIf( EMC.HEAD == 'H22', { EMC.EXIT}, nil)
OnActivateDrillingUnit()
end
---------------------------------------------------------------------
+23 -78
View File
@@ -1,4 +1,4 @@
-- Processore macchina Masterwood-TF600KST 2025/03/30
-- Processore macchina Masterwood-TF600KST 2025/08/22
-- by EgalWare s.r.l.
--
-- Intestazioni
@@ -25,20 +25,6 @@ function OnSimulStart()
if not EMT.VER or EMT.VER < MIN_MACH_VER then
EmtSetLastError( 1200, 'A newer version of the program is required (minimum EgtMachKernel '..MIN_MACH_VER..')')
end
-- Carico gli utensili sulle barre portautensili
local vTcPos = EgtGetAllTcPosNames()
if vTcPos then
for i = 1, #vTcPos do
local vTools = EgtGetToolsInCurrSetupPos( vTcPos[i])
for j = 1, #( vTools or {}) do
if vTools[j] ~= '' then
EgtLoadTool( vTcPos[i], j, vTools[j])
end
end
ShowToolInTcPos( vTcPos[i], true)
end
end
-- Se reset o home, esco
if EMT.SIM1ST then return end
-- Creo o svuoto gruppo per copia finale degli oggetti virtual milling
@@ -54,20 +40,19 @@ function OnSimulStart()
-- Preparo lista oggetti da verificare per collisioni
EMT.COLLOBJ = {}
AddToCollisionCheck( 'C', 'COLLISION', EMT.COLLOBJ)
AddToCollisionCheck( 'A', 'COLLISION', EMT.COLLOBJ)
--AddToCollisionCheck( 'C', 'COLLISION', EMT.COLLOBJ)
DumpCollisionCheck( EMT.COLLOBJ, 'Collision Objects :', 4)
-- Preparo lista solidi macchina con cui possono collidere gli oggetti sopra riportati (in aggiunta a VMill)
EMT.MCODET = {}
local McdData = { { Grp = 'PL1', Sub = 'COLLISION', Name = 'STM'},
{ Grp = 'PL2', Sub = 'COLLISION', Name = 'STM'},
{ Grp = 'PL3', Sub = 'COLLISION', Name = 'STM'},
{ Grp = 'PL4', Sub = 'COLLISION', Name = 'STM'},
{ Grp = 'PL5', Sub = 'COLLISION', Name = 'STM'},
{ Grp = 'PL6', Sub = 'COLLISION', Name = 'STM'}}
--local McdData = { { Grp = 'PL1', Sub = 'COLLISION', Name = 'STM'},
-- { Grp = 'PL2', Sub = 'COLLISION', Name = 'STM'},
-- { Grp = 'PL3', Sub = 'COLLISION', Name = 'STM'},
-- { Grp = 'PL4', Sub = 'COLLISION', Name = 'STM'},
-- { Grp = 'PL5', Sub = 'COLLISION', Name = 'STM'},
-- { Grp = 'PL6', Sub = 'COLLISION', Name = 'STM'}}
EgtOutLog( 'MCODET Objects :', 4)
local nMcdNullCnt = 0
for i = 1, #McdData do
for i = 1, #(McdData or {}) do
local nGrpId
if McdData[i].Grp == 'Base' then
nGrpId = EgtGetBaseId( 'Base')
@@ -88,7 +73,7 @@ function OnSimulStart()
end
-- Preparo lista collisioni vuota
EMT.COLLIDE = {}
end
---------------------------------------------------------------------
@@ -150,7 +135,6 @@ function OnSimulDispositionStart()
end
EgtLoadTool( 'H11', 1, EMT.TOOL_1)
EMT.TCPOS_1 = GetToolTcPos( EMT.TOOL_1)
ShowToolInTcPos( EMT.TCPOS_1, false)
EMT.LOAD = true
-- Se vero inizio e abilitato creo gli Zmap
EMT.VMILL = {}
@@ -270,8 +254,6 @@ function OnSimulToolSelect()
-- carico utensile, con breve pausa
EgtPause( 100)
EgtOutText( '')
-- lo nascondo sul portautensili
ShowToolInTcPos( EMT.TCPOS, false)
-- se attivo Vmill
if EMT.VMILL then
EmtSetToolForVmill( EMT.TOOL, EMT.HEAD, EMT.EXIT, EMT.VMILL)
@@ -294,24 +276,21 @@ end
---------------------------------------------------------------------
function OnSimulToolDeselect()
-- se utensile non cambia e non è sega a catena, esco
-- se utensile non cambia, esco
if EMT.NEXTTOOL == EMT.PREVTOOL then return end
-- deposito utensile
EgtOutText( 'Tool change in progress...')
if EMT.HEAD == 'H11' then
SimulMoveAxis( 'Z1', 650, MCH_SIM_STEP.RAPID)
SimulMoveAxes( 'Y', 2000, MCH_SIM_STEP.RAPID, 'A', 0, MCH_SIM_STEP.RAPROT, 'C', 0, MCH_SIM_STEP.RAPROT)
-- visualizzo utensile su TcPos
ShowToolInTcPos( EMT.PREVTCPOS, true)
-- nascondo l'utensile sulla testa
EgtSetMode( EgtGetHeadId( EMT.PREVHEAD or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
elseif EMT.NEXTHEAD == 'H11' then
SimulMoveAxis( 'Z2', 400, MCH_SIM_STEP.RAPID)
SimulMoveAxis( 'Y', 2000, MCH_SIM_STEP.RAPID)
if EMT.HEAD == 'H11' and EMT.NEXTHEAD ~= EMT.HEAD then
SimulMoveAxis( 'Z11', 650, MCH_SIM_STEP.RAPID)
elseif EMT.HEAD == 'H12' and EMT.NEXTHEAD ~= EMT.HEAD then
SimulMoveAxis( 'Z12', 400, MCH_SIM_STEP.RAPID)
elseif EMT.HEAD == 'H21' and EMT.NEXTHEAD ~= EMT.HEAD then
SimulMoveAxis( 'Z21', -650, MCH_SIM_STEP.RAPID)
elseif EMT.HEAD == 'H22' and EMT.NEXTHEAD ~= EMT.HEAD then
SimulMoveAxis( 'Z22', -400, MCH_SIM_STEP.RAPID)
end
end
---------------------------------------------------------------------
@@ -331,9 +310,10 @@ end
---------------------------------------------------------------------
function OnSimulPathStart()
if EMT.HEAD == 'H21' then
-- speciale per gruppi a forare
if EMT.HEAD == 'H12' or EMT.HEAD == 'H22' then
-- attivazione uscite
EMC = { HEADID = EgtGetHeadId( 'H21'), DRACEX = EMT.DRACEX}
EMC = { HEADID = EgtGetHeadId( EMT.HEAD), DRACEX = EMT.DRACEX}
OnActivateDrillingUnit()
EMC = nil
-- impostazione utensili aggiuntivi per Vmill
@@ -348,10 +328,6 @@ function OnSimulPathStart()
end
end
end
elseif EMT.HEAD == 'H22' then
-- attivazione testa
EMC = { HEADID = EgtGetHeadId( 'H22'), ACTIVE = true}
--OnActivateAngTransm()
end
end
@@ -464,24 +440,6 @@ function FindFirstToolOnHead( sH1)
return sTool, nTlen
end
---------------------------------------------------------------------
function ShowToolInTcPos( sTcPos, bShow)
-- recupero identificativo della posizione sul TC
local TcPosId = EgtGetTcPosId( sTcPos or '')
if not TcPosId then return end
-- ciclo sulle possibili uscite
for i = 1, 100 do
-- recupero il gruppo dell'utensile
local TcExitId = EgtGetFirstNameInGroup( TcPosId, 'T'..tostring( i))
if not TcExitId then break end
-- imposto lo stato di visualizzazione
EgtSetStatus( TcExitId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
end
-- recupero eventuale gruppo ausiliario da visualizzare/nascondere
local TcHSId = EgtGetFirstNameInGroup( TcPosId, sTcPos..'_HS')
if TcHSId then EgtSetStatus( TcHSId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF)) end
end
---------------------------------------------------------------------
function GetDefaultToolName()
local DefTcPos = 'T1'
@@ -574,10 +532,7 @@ end
local RAPID_X_FEED = 20000 -- mm/min
local RAPID_Y_FEED = 20000 -- mm/min
local RAPID_Z_FEED = 10000 -- mm/min
local RAPID_C_FEED = 3600 -- deg/min
local RAPID_B_FEED = 3600 -- deg/min
local RAPID_MIN_T = 1.0 -- s
local UNLOAD_RAW_T = 60 -- s
---------------------------------------------------------------------
function OnEstimStart()
@@ -593,9 +548,7 @@ function OnEstimProgramStart()
-- imposto inizio movimenti da Home
EMT.L1 = EgtGetAxisHomePos( 'X')
EMT.L2 = EgtGetAxisHomePos( 'Y')
EMT.L3 = EgtGetAxisHomePos( 'Z1')
EMT.R1 = EgtGetAxisHomePos( 'C')
EMT.R2 = EgtGetAxisHomePos( 'A')
EMT.L3 = EgtGetAxisHomePos( 'Z11')
-- aggiorno valori come precedenti
EmtUpdatePrev()
-- totalizzatori tempi e lunghezze
@@ -701,10 +654,6 @@ function OnEstimRapid()
local dL1 = EMT.L1 - EMT.L1p
local dL2 = EMT.L2 - EMT.L2p
local dL3 = EMT.L3 - EMT.L3p
local dR1 = 0
if EMT.R1 and EMT.R1p then dR1 = EMT.R1 - EMT.R1p end
local dR2 = 0
if EMT.R2 and EMT.R2p then dR2 = EMT.R2 - EMT.R2p end
-- calcolo lunghezza
local dLen = sqrt( dL1 * dL1 + dL2 * dL2 + dL3 * dL3)
if not EMT.OPEISDISP then
@@ -720,10 +669,6 @@ function OnEstimRapid()
if dT2 > dTime then dTime = dT2 end
local dT3 = abs( dL3) / RAPID_Z_FEED * 60
if dT3 > dTime then dTime = dT3 end
local dT4 = abs( dR1) / RAPID_C_FEED * 60
if dT4 > dTime then dTime = dT4 end
local dT5 = abs( dR2) / RAPID_B_FEED * 60
if dT5 > dTime then dTime = dT5 end
EMT.MCHEXTTIME = EMT.MCHEXTTIME + dTime
-- aggiorno valori come precedenti
Binary file not shown.
+20 -14
View File
@@ -1,4 +1,4 @@
-- Processore generico Masterwood woodWOP 2025/04/01
-- Processore generico Masterwood woodWOP 2025/08/22
-- by EgalWare s.r.l.
--
-- Intestazioni
@@ -7,7 +7,7 @@ EgtEnableDebug( false)
-- Variabili di modulo
local MLE_INFO = 'Egalware-CAM5-HwW-V2.7d1'
local MLE_INFO = 'Egalware-CAM5-MwW-V'..PP_VER
---------------------------------------------------------------------
function OnStart()
@@ -20,10 +20,7 @@ end
---------------------------------------------------------------------
function OnEnd()
-- Chiusura file altri processi (qui si passa sempre, anche in caso di errore)
local sNewPath = EgtChangePathExtension( EMT.FILE, '.mpr')
EgtEraseFile( sNewPath)
EgtRenameFile( EMT.FILE, sNewPath)
-- Estensione impostata nel file INI di macchina
end
---------------------------------------------------------------------
@@ -59,7 +56,7 @@ function OnDispositionEnd()
if EMT.PHASE == 1 then
-- Header
EmtOutput( '[H')
EmtOutput( 'VERSION="4.0 Alpha" \\' .. MLE_INFO .. '\\')
EmtOutput( 'VERSION="4.0 Alpha" \\' .. MLE_INFO .. ' ' .. os.date( '%Y.%m.%d-%H:%M:%S', os.time()) .. '\\')
EmtOutput( 'HP="1"')
EmtOutput( 'IN="0"')
EmtOutput( 'GX="0"')
@@ -168,8 +165,9 @@ end
function OnMachiningEnd()
-- Se foratura
if EMT.MCHTYPE == MCH_MY.DRILLING then
-- recupero la geometria dei fori
-- recupero l'elenco dei fori da fare e di quelli saltati
local vGeom = EgtGetMachiningGeometry() or {}
local vSkipped = EgtGetMachiningSkippedGeometry() or {}
-- calcolo il riferimento pezzo
local ptS = Point3d( EMT.PP)
local vtE = Vector3d( EMT.EXTR)
@@ -177,6 +175,12 @@ function OnMachiningEnd()
-- per ogni foro emetto la relativa lavorazione
for i = 1, #vGeom do
local nEntId = vGeom[i][1]
for j = 1, #vSkipped do
if nEntId == vSkipped[j][1] then
nEntId = nil
break
end
end
if nEntId and EgtGetType( nEntId) == GDB_TY.CRV_ARC then
local ptCen = EgtCP( nEntId, GDB_ID.ROOT)
ptCen:toLoc( refPart)
@@ -291,6 +295,8 @@ function OnPathStart()
EmtResetPrev()
EMT.IPLGL = false
EMT.IPLGLFR = nil
-- Verifico se lavorazione da sotto
EMT.FROMBELOW = AreSameVectorApprox( Vector3d( EMT.EXTR), -Z_AX())
-- Se fresatura o svuotatura
if EMT.MCHTYPE == MCH_MY.MILLING or EMT.MCHTYPE == MCH_MY.POCKETING then
-- Inizio percorso di lavorazione
@@ -431,12 +437,12 @@ function CalcInterpPlane()
EMT.IPLGLFR = nil
-- Recupero vettore direzione utensile
local vtE = Vector3d( EMT.EXTR)
-- a seconda del piano di interpolazione Solo standard Homag 00, A0, B0, C0, D0)
if vtE:isSmall() or AreSameVectorApprox( vtE, Z_AX()) then
-- a seconda del piano di interpolazione (solo standard Homag 00, A0, B0, C0, D0)
if vtE:isSmall() or AreSameVectorApprox( vtE, Z_AX()) or EMT.FROMBELOW then
local ptS = Point3d( EMT.PP)
EMT.IPLGLFR = Frame3d( ptS, vtE)
EMT.IPLGLFR = Frame3d( ptS, Z_AX())
EMT.KO = '00'
elseif AreSameVectorApprox( vtE, - Y_AX()) then
elseif AreSameVectorApprox( vtE, -Y_AX()) then
local ptS = Point3d( EMT.PP)
EMT.IPLGLFR = Frame3d( ptS, vtE)
EMT.KO = 'A0'
@@ -448,7 +454,7 @@ function CalcInterpPlane()
local ptS = Point3d( EMT.PP) + Vector3d( EMT.LP, EMT.WP, 0)
EMT.IPLGLFR = Frame3d( ptS, vtE)
EMT.KO = 'C0'
elseif AreSameVectorApprox( vtE, - X_AX()) then
elseif AreSameVectorApprox( vtE, -X_AX()) then
local ptS = Point3d( EMT.PP) + Vector3d( 0, EMT.WP, 0)
EMT.IPLGLFR = Frame3d( ptS, vtE)
EMT.KO = 'D0'
@@ -487,7 +493,7 @@ end
---------------------------------------------------------------------
function EmitMilling()
PostOutput( '')
PostOutput( '<105 \\Konturfraesen\\')
PostOutput( EgtIf( EMT.FROMBELOW, '<113 \\Unterflurfraesen\\', '<105 \\Konturfraesen\\'))
PostOutput( 'EA="' .. tostring( EMT.CTR) .. ':0"')
PostOutput( 'MDA="SEN"')
PostOutput( 'RK="NOWRK"')
Binary file not shown.
+48
View File
@@ -0,0 +1,48 @@
; PIndex = Type, PName, Default, Description
; Type : d=double, l=length, s=string
[1]
Name=Offsets
1= l,MIN_X,-5310,MIN_X
2= l,MAX_X,0,MAX_X
3= l,MIN_Y,-20580,MIN_Y
4= l,MAX_Y,0,MAX_Y
5= l,MIN_Z,-1570,MIN_Z
6= l,MAX_Z,0,MAX_Z
7= d,MIN_B,-135,MIN_B
8= d,MAX_B,135,MAX_B
9= d,MIN_C,-275,MIN_C
10=d,MAX_C,275,MAX_C
11=l,MIN_U,-6075,MIN_U
12=l,MAX_U,-770,MAX_U
13=l,MIN_W,-1110,MIN_W
14=l,MAX_W,0,MAX_W
15=l,MIN_V,0,MIN_V
16=l,MAX_V,90,MAX_V
17=d,MIN_A,-275,MIN_A
18=d,MAX_A,275,MAX_A
19=l,ZERO_X_SAW,-1288.05,ZERO_X_SAW
20=l,ZERO_Y_SAW,-803.45,ZERO_Y_SAW
21=l,ZERO_Z_SAW,-909.55,ZERO_Z_SAW
22=l,PIVOT_SAW,163.15,PIVOT_SAW
23=l,ZERO_X_MILL,-1293.3,ZERO_X_MILL
24=l,ZERO_Y_MILL,-1152,ZERO_Y_MILL
25=l,ZERO_Z_MILL,-992.15,ZERO_Z_MILL
26=l,PIVOT_MILL,208.0,PIVOT_MILL
27=l,INTRULLI,1500,INTRULLI
28=d,TYPEWORK,1,TYPEWORK
29=l,ZERO_X_DRILL,-142.0,ZERO_X_DRILL
30=l,ZERO_Y_DRILL,-1454.33,ZERO_Y_DRILL
31=l,ZERO_Z_DRILL,31.69,ZERO_Z_DRILL
32=l,ZERO_X_DRILL2,3645,ZERO_X_DRILL2
33=l,ZERO_Y_DRILL2,-1454.33,ZERO_Y_DRILL2
34=l,ZERO_Z_DRILL2,31.69,ZERO_Z_DRILL2
[2]
Name=Trave
1=l,XMIN,20,XMIN
2=l,XMAX,3500,XMAX
3=l,YMIN,50,YMIN
4=l,YMAX,18000,YMAX
5=l,ZMIN,1,ZMIN
6=l,ZMAX,400,ZMAX
+26
View File
@@ -0,0 +1,26 @@
[Cut]
1=Standard
[Drill]
1=Drill
2=Pocket
3=MultiDrill
[Milling]
1=FreeContour
2=Side
3=SideGroove
4=DtMortise
5=Mark
6=Text
7=CleanCorner60
8=CleanCorner30
9=SideMill
10=Gorge
[Pocketing]
1=Pocket
2=Mortise
[Sawing]
1=Sawing
+4
View File
@@ -0,0 +1,4 @@
[WALL]
Offset=0
Kerf=0
Range1=30,400
+79
View File
@@ -0,0 +1,79 @@
-- WallData.lua by Egaltech s.r.l. 2022/02/03
-- Raccolta dati generali per Pareti
EgtOutLog( ' 90480027-WallData started', 1)
-- Tabella per definizione modulo
local WallData = {
MIN_LENGTH = 70, -- lunghezza minima del grezzo
MIN_WIDTH = 35, -- larghezza minima del grezzo
MIN_HEIGHT = 7, -- altezza minima del grezzo
MAX_LENGTH = 3000, -- lunghezza massima del grezzo
MAX_WIDTH = 1220, -- larghezza massima del grezzo
MAX_HEIGHT = 60, -- altezza massima del grezzo
STD_RAW_LENGTH = 3000, -- lunghezza standard del grezzo
STD_RAW_WIDTH = 1220, -- 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 = 1, -- affondamento extra standard 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)
SAWGORGE_INTERAX = 100, -- interasse tra i tagli sfrido del gorge
PREDRILL_DIAM = 26, -- diametro del preforo
PREDRILL_MINANGLE = 0.707, -- minimo angolo che richiede il preforo con fresa (-30deg)
DRILL_TOL = 0.5, -- tolleranza tra diametro foro e diametro punta
DRILL_VZ_MIN = 0.49, -- componente limite in Z del versore di un foro
DRILL_OVERLAP = 5, -- sovrapposizione tra due mezze forature
MILL_OVERLAP = 5, -- sovrapposizione tra due mezze fresature
MAX_CLEAN_CRN60 = 150, -- massimo spessore per pulitura angolo con fresa 60deg
MAX_CLEAN_CRN30 = 90, -- massimo spessore per pulitura angolo con fresa 30deg
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)
CHECK_MIN_Z_SAW = true, -- controlla la quota minima della lama rispetto alla tavola (default true)
MIN_Z_SAW = -1, -- quota minima rispetto alla tavola (default 0)
SIDEMILL_DIAM_UP = 65, -- diametro fresa che lavora lap joint sopra
SIDEMILL_DIAM_DOWN = 350, -- diametro fresa che lavora lap joint sotto
SIDEMILL_BEFORE = true, -- mette le lavorazioni di fresatura di fianco tra le prime
INSIDE_RAW_TOL = 30, -- tolleranza utilizzata per definire quando area di lavorazione è lontana dai bordi del grezzo
NEST_HOLE_MIN_AREA = 200000, -- area minima per inserire gli outlines interni come holes nel nesting
RAWCOL = { 255, 160, 32, 30}, -- colore del grezzo
SIMUL_VIEW_DIR = 4, -- 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)
INTRULLI = 1200, -- distanza fra assi su cui poggia il grezzo (per non far cadere il pezzo)
USE_MULTI_DRILL = true, -- attiva l'utilizzo di teste multiforatrici
FORCE_MILL_CONTOUR = true, -- forza i freecontour di fresa (per macchine senza lama)
ENABLE_SIMPLE_NESTING = true, -- modalità nesting semplice, un pezzo per ogni grezzo
PANELSAW_TYPE = 'CUTTY' -- macchine sezionatrici per cui creare le Cutting List (se più di una, elencate separate da virgola)
}
local function GetChainSawBlockedAxis( nInd)
if nInd == 1 then
return 'A1=0'
else
return 'A1=90'
end
end
WallData.GetChainSawBlockedAxis = GetChainSawBlockedAxis
local function GetChainSawStartAngs( vtN2, vtN, ptC)
-- vtN2 : direzione perpendicolare al piano sega a catena (va in vtAux)
-- vtN : direzione utensile sega a catenta (va in vtTool)
-- ptC : centro della faccia
if not vtN or not ptC or not isVector3d( vtN) or not isPoint3d( ptC) then return end
if vtN:getZ() > 0.7 then
return ''
else
if ptC:getY() > -3000 then
return 'C=75;'
else
return 'C=120;'
end
end
end
WallData.GetChainSawStartAngs = GetChainSawStartAngs
---------------------------------------------------------------------
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%