5 Commits

Author SHA1 Message Date
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
6 changed files with 41 additions and 79 deletions
+5 -1
View File
@@ -2,6 +2,9 @@
[General]
Material=Wood
[PartProgram]
Extension=.mpr
[Tools]
Drillbit=1
Sawblade=1
@@ -15,6 +18,7 @@ ChiselMaker=MakeChisel.lua
[ToolHolder]
H11.1=HSK-F63_MillWeld12.nge
H21.1=HSK-F63_Std.nge
[Machinings]
Drilling=1
@@ -50,7 +54,7 @@ H21=6601
H22=6612
[SetUp]
Default=Std
Default=
[VMill]
Enable=1
+20 -19
View File
@@ -1,14 +1,15 @@
-- Descrizione macchina Masterwood TF600KST 2025/04/10
-- Descrizione macchina Masterwood TF600KST 2025/04/16
-- by EgalWare s.r.l.
require( 'EmtGenerator')
EgtEnableDebug( false)
PP_VER = '2.7d2'
MIN_MACH_VER = '2.7a1'
PP_VER = '2.7d3'
MIN_MACH_VER = '2.7d2'
-- DATI MACCHINA --
NumericalControl = 'woodWOP'
COLL_SAFE_DIST = 3
-- DATI TAVOLA --
TabX = 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
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
---------------------------------------------------------------------
+4 -46
View File
@@ -1,4 +1,4 @@
-- Processore macchina Masterwood-TF600KST 2025/03/30
-- Processore macchina Masterwood-TF600KST 2025/04/16
-- 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
@@ -150,7 +136,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 +255,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)
@@ -302,10 +285,6 @@ function OnSimulToolDeselect()
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)
@@ -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'
Binary file not shown.
+12 -13
View File
@@ -1,4 +1,4 @@
-- Processore generico Masterwood woodWOP 2025/04/01
-- Processore generico Masterwood woodWOP 2025/04/15
-- 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-V2.7d1'
---------------------------------------------------------------------
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"')
@@ -291,6 +288,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 +430,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 +447,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 +486,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.