Compare commits
40 Commits
master
...
2.7j2_DEV2_B
| Author | SHA1 | Date | |
|---|---|---|---|
| a2c3e80b5b | |||
| a280c0ea3d | |||
| 9f3fbfe597 | |||
| eeb9a93132 | |||
| 76c52eecce | |||
| 09aacf8327 | |||
| 9c7e546e47 | |||
| 321a91ae5e | |||
| 449f03fb09 | |||
| 7c91df35fc | |||
| 0d99310258 | |||
| 0b49335c8e | |||
| 0d87a703ce | |||
| 475b0a7ebf | |||
| c54ddd02e9 | |||
| fd9314ea5a | |||
| d075af1a91 | |||
| f229fae4d3 | |||
| 5219330a4d | |||
| fd85570cfd | |||
| 2adb157b28 | |||
| 5e6121703c | |||
| 5316abecf4 | |||
| f958dc8a0a | |||
| 4989ae5d99 | |||
| 9ac0aafea0 | |||
| 1c047b1890 | |||
| 7eea1439c4 | |||
| 7b35cccaf5 | |||
| da6d0bed2a | |||
| 75ff61f3dc | |||
| dba8997045 | |||
| 263758a422 | |||
| 1e6bc44019 | |||
| 0909656a6c | |||
| 23e17d9623 | |||
| 7ba04b6e17 | |||
| 67401b8799 | |||
| 8b9a77cdaf | |||
| 9662b22f03 |
@@ -49,3 +49,6 @@
|
||||
|
||||
[Sawing]
|
||||
1=Sawing
|
||||
|
||||
[Probing]
|
||||
1=DTMortise
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
-- Probingata.lua by Egaltech s.r.l. 20/06/2025
|
||||
-- Gestione dati lavorazioni per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local ProbingData = {
|
||||
{ On = true, Name = 'Probing_H1', Type = 'DTMortise'},
|
||||
{ On = true, Name = 'Probing_H2', Type = 'DTMortise'}
|
||||
}
|
||||
|
||||
---------------------------------------------------------------------
|
||||
return ProbingData
|
||||
+327
-166
@@ -27,7 +27,7 @@ function OnStart()
|
||||
--EMT.LINEINC = 1 -- incremento numerazione linee
|
||||
--EMT.Ft = 'F' -- token per feed
|
||||
--EMT.St = 'S' -- token per speed
|
||||
EMT.FMAXPINZE = EgtClamp( MaxFeedPinze or 102000, 20000, 102000) -- feed massima pinze
|
||||
EMT.FMAXPINZE = EgtClamp( MaxFeedPinze or 102000, 20000, 155000) -- feed massima pinze
|
||||
EMT.MAXACC = MaxAcc or ( EMT.FMAXPINZE / ( 60 * 0.3)) -- accelerazione massima pinze
|
||||
EMT.MINACC = MinAcc or ( EMT.FMAXPINZE / ( 60 * 4)) -- accelerazione minima pinze
|
||||
|
||||
@@ -419,6 +419,7 @@ function OnToolSelect()
|
||||
if MCH_TP.DIST then EMT.TDIST = EgtTdbGetCurrToolParam( MCH_TP.DIST) end
|
||||
if EMT.TDIST and abs( EMT.TDIST) < 0.1 then EMT.TDIST = nil end
|
||||
EMT.TUSERNOTES = EgtTdbGetCurrToolParam( MCH_TP.USERNOTES)
|
||||
EMT.ISPROBING = HeadIsProbe( EMT.HEAD)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -452,6 +453,7 @@ function OnMachiningStart()
|
||||
local MyParkCSawC2 = GetChainSawCHomeFromVirtualAxis( dPosA)
|
||||
EmtModifyAxisHome( 'C2', MyParkCSawC2)
|
||||
end
|
||||
|
||||
-- gestione eventuale lavorazione in doppio
|
||||
local nDouType = EgtGetValInNotes( EMT.MCHUSERNOTES, 'DOUBLE', 'i')
|
||||
if nDouType == 2 or nDouType == 3 then
|
||||
@@ -819,8 +821,8 @@ function OnRapid()
|
||||
EMT.IPLGL = false
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
local HomeR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'C1', 'C2'))
|
||||
local HomeR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'B1', 'B2'))
|
||||
local HomeR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1 or nHSet == 11, 'C1', 'C2'))
|
||||
local HomeR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1 or nHSet == 11, 'B1', 'B2'))
|
||||
local PrevR1 = EMT.R1p or EMT.R1pp or HomeR1
|
||||
local PrevR2 = EMT.R2p or EMT.R2pp or HomeR2
|
||||
EmtResetPrev()
|
||||
@@ -830,6 +832,101 @@ function OnRapid()
|
||||
EMT.L3 = EMT.L3s
|
||||
end
|
||||
end
|
||||
|
||||
-- se tastatore
|
||||
if EMT.ISPROBING then
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
local bIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||
local idProbeMachining = EMT.MCHID
|
||||
local bFound = false
|
||||
local nProbeHead = GetHeadSet( EMT.HEAD)
|
||||
local idProbeNextMachining = EgtGetNextActiveOperation( idProbeMachining)
|
||||
while not bFound do
|
||||
if idProbeNextMachining then
|
||||
EgtSetCurrMachining( idProbeNextMachining)
|
||||
local sToolNameNextProbe = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||
if sToolNameNextProbe then
|
||||
local sToolHeadNextProbe, sToolTcPosNextProbe = GetToolHead( sToolNameNextProbe)
|
||||
local nToolHead = GetHeadSet( sToolHeadNextProbe)
|
||||
-- se sono sulla stessa testa
|
||||
if bIsFirstHead and nProbeHead == 11 then
|
||||
EMT.PROBENEXTTOOL_H1 = sToolNameNextProbe
|
||||
EMT.PROBENEXTHEAD_H1 = sToolHeadNextProbe
|
||||
EMT.PROBENEXTTCPOS_H1 = sToolTcPosNextProbe
|
||||
bFound = true
|
||||
elseif not bIsFirstHead and nProbeHead == 21 then
|
||||
EMT.PROBENEXTTOOL_H2 = sToolNameNextProbe
|
||||
EMT.PROBENEXTHEAD_H2 = sToolHeadNextProbe
|
||||
EMT.PROBENEXTTCPOS_H2 = sToolTcPosNextProbe
|
||||
bFound = true
|
||||
end
|
||||
end
|
||||
else
|
||||
break
|
||||
end
|
||||
idProbeNextMachining = EgtGetNextActiveOperation( idProbeNextMachining)
|
||||
end
|
||||
-- ripristino lavorazione corrente
|
||||
EgtSetCurrMachining( EMT.MCHID)
|
||||
|
||||
local bChanged = true
|
||||
if bIsFirstHead then
|
||||
-- se prossimo utensile compatibile, lo prelevo
|
||||
if IsToolCompatibleWithProbe( EMT.PROBENEXTTOOL_H1, EMT.TOOL) then
|
||||
EMT.TCPOS = EMT.PROBENEXTTCPOS_H1
|
||||
EMT.HEAD = EMT.PROBENEXTHEAD_H1
|
||||
EMT.TOOL = EMT.PROBENEXTTOOL_H1
|
||||
else
|
||||
-- se vecchio utensile compatibile, tengo quello caricato
|
||||
if IsToolCompatibleWithProbe( EMT.PREVTOOL_H1, EMT.TOOL) then
|
||||
bChanged = false
|
||||
EMT.TCPOS = EMT.PREVTCPOS_H1
|
||||
EMT.HEAD = EMT.PREVHEAD_H1
|
||||
EMT.TOOL = EMT.PREVTOOL_H1
|
||||
-- altrimenti si seleziona utensile di default
|
||||
else
|
||||
ExecMoveZmax( EMT.MCHSPLIT, true)
|
||||
EMT.TCPOS = DefTcPos1
|
||||
EMT.TOOL = GetToolNameFromTcPos( DefTcPos1)
|
||||
EMT.HEAD, _ = GetToolHead( EMT.TOOL)
|
||||
end
|
||||
end
|
||||
-- se cambiato utensile, si setta subito nome precedente
|
||||
if bChanged then
|
||||
EMT.PREVTOOL_H1 = EMT.TOOL
|
||||
EMT.PREVHEAD_H1 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H1 = EMT.TCPOS
|
||||
end
|
||||
else
|
||||
-- se prossimo utensile compatibile, lo prelevo
|
||||
if IsToolCompatibleWithProbe( EMT.PROBENEXTTOOL_H2, EMT.TOOL) then
|
||||
EMT.TCPOS = EMT.PROBENEXTTCPOS_H2
|
||||
EMT.HEAD = EMT.PROBENEXTHEAD_H2
|
||||
EMT.TOOL = EMT.PROBENEXTTOOL_H2
|
||||
else
|
||||
-- se vecchio utensile compatibile, tengo quello caricato
|
||||
if IsToolCompatibleWithProbe( EMT.PREVTOOL_H2, EMT.TOOL) then
|
||||
bChanged = false
|
||||
EMT.TCPOS = EMT.PREVTCPOS_H2
|
||||
EMT.HEAD = EMT.PREVHEAD_H2
|
||||
EMT.TOOL = EMT.PREVTOOL_H2
|
||||
-- altrimenti si seleziona utensile di default
|
||||
else
|
||||
ExecMoveZmax( EMT.MCHSPLIT, true)
|
||||
EMT.TCPOS = DefTcPos2
|
||||
EMT.TOOL = GetToolNameFromTcPos( DefTcPos2)
|
||||
EMT.HEAD, _ = GetToolHead( EMT.TOOL)
|
||||
end
|
||||
end
|
||||
-- se cambiato utensile, si setta subito nome precedente
|
||||
if bChanged then
|
||||
EMT.PREVTOOL_H2 = EMT.TOOL
|
||||
EMT.PREVHEAD_H2 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H2 = EMT.TCPOS
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- se prima lavorazione
|
||||
if EMT.LOAD then
|
||||
EMT.V2POS = ParkV2
|
||||
@@ -1162,8 +1259,8 @@ function OnRapid()
|
||||
EMT.TO_XHOME = nil
|
||||
EMT.L1pp = nil
|
||||
EMT.L3pp = nil
|
||||
PrevR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'C1', 'C2'))
|
||||
PrevR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'B1', 'B2'))
|
||||
PrevR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1 or nHSet == 11, 'C1', 'C2'))
|
||||
PrevR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1 or nHSet == 11, 'B1', 'B2'))
|
||||
end
|
||||
-- calcolo Movimento Pinze (potrebbe richiedere movimento testa in Home)
|
||||
for i = 1, #EMT.AUXCMD do
|
||||
@@ -1178,7 +1275,7 @@ function OnRapid()
|
||||
local nPrevHSet = GetHeadSet( EMT.PREVHEAD)
|
||||
-- vado in parcheggio sempre con utensile precedente
|
||||
if not HeadIsChainSaw( EMT.PREVHEAD) then
|
||||
if nPrevHSet == 1 then
|
||||
if nPrevHSet == 1 or nPrevHSet == 11 then
|
||||
local HomeX1 = EgtGetAxisHomePos( 'X1')
|
||||
EmitMoveDataHead( 1, { X=-EMT.PREVHOMEX_H1, Z=MaxZ1, B=EMT.PREVHOMEB_H1, C=EMT.PREVHOMEC_H1, TPos=AdjustTcPos( false, EMT.PREVTCPOS_H1)})
|
||||
EmitMoveStartHead( 1, 'EA1')
|
||||
@@ -1529,81 +1626,89 @@ function OnRapid()
|
||||
EMT.ZMAX = false
|
||||
-- se standard
|
||||
elseif EMT.FLAG == 0 or EMT.FLAG == 1 or EMT.FLAG == 2 then
|
||||
local sPostMove = ''
|
||||
if EMT.MCHFIRST then
|
||||
local sOut = string.gsub( string.gsub( EMT.MCHNAME..'/'..EMT.TOOL, '%(', '['), '%)', ']')
|
||||
if EMT.DOU_TYPE then sOut = sOut .. ' Double' end
|
||||
EmtOutput( '( *** '..sOut..' *** )')
|
||||
-- gestione comandi rulli
|
||||
local sPreMove = ''
|
||||
if GetV1ToCloseNum( true) then
|
||||
sPostMove = ' EC-3'
|
||||
else
|
||||
sPreMove = ' EC3'
|
||||
end
|
||||
if GetV2ToCloseNum( true) then
|
||||
sPostMove = sPostMove .. ' ED-3'
|
||||
else
|
||||
sPreMove = sPreMove .. ' ED3'
|
||||
end
|
||||
-- comandi rulli prima di movimento (aperture)
|
||||
if #sPreMove > 0 then
|
||||
EmtOutput( 'G157 EA2' .. sPreMove)
|
||||
end
|
||||
-- se taglio di coda senza residuo da scaricare, emetto M175 per accelerare il carico della barra successiva
|
||||
if EMT.MCHUSERNOTES and EMT.MCHUSERNOTES:find( 'Cut', 1, true) then
|
||||
EmtOutput( 'M175')
|
||||
end
|
||||
EMT.MCHFIRST = false
|
||||
EMT.PLANEACTIVE = true
|
||||
end
|
||||
-- se necessario, impostazione riferimento locale
|
||||
if EMT.REFLOC == 0 then
|
||||
-- se lavorazione in doppio
|
||||
if EMT.DOU_TYPE == 2 then
|
||||
-- aggiusto assi
|
||||
EMT.L2 = -EMT.L2
|
||||
-- emetto movimenti in Zero macchina
|
||||
local Speed = EMT.S * EgtIf( EMT.HEAD ~= 'H12', 1, 1.65)
|
||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
EmitMoveStartHead( 1)
|
||||
local dX2 = - ( Delta2TabY - EMT.DOU_TLEN - ( -DeltaTabY - EMT.L2 - EMT.TLEN + EgtIf( BD.RIGHT_LOAD, -EMT.HB, EMT.HB)))
|
||||
local dZ2 = -Head2Z + MillOffs - Mill2Offs + EMT.L3
|
||||
local dC2 = -EMT.R1
|
||||
local dB2 = -EMT.R2
|
||||
EmitMoveDataHead( 2, { X=dX2, Z=dZ2, B=dB2, C=dC2, TPos=EMT.DOU_TPOS, S=EMT.DOU_SPEED})
|
||||
EmitMoveStartHead( 2)
|
||||
-- aspetto esecuzione movimento testa 2 e 1
|
||||
EmitMoveWaitHead( 2)
|
||||
EmitMoveWaitHead( 1)
|
||||
-- ripristino assi
|
||||
EMT.L2 = -EMT.L2
|
||||
end
|
||||
-- calcolo per piano generico
|
||||
CalcInterpPlane()
|
||||
EMT.REFLOC = 1
|
||||
-- trasformo i punti nel piano
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
EMT.L1p = nil
|
||||
EMT.L2p = nil
|
||||
EMT.L3p = nil
|
||||
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
||||
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR..EgtIf( nHSet~=2, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||
-- forzo successiva emissione assi rotanti
|
||||
EMT.R1p = nil
|
||||
EMT.R2p = nil
|
||||
if EMT.ISPROBING then
|
||||
-- emetto movimenti in Zero macchina
|
||||
EmitMoveDataHead( GetHeadSet( EMT.HEAD), { X=-EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
EmitMoveStartHead( GetHeadSet( EMT.HEAD))
|
||||
EmitMoveWaitHead( GetHeadSet( EMT.HEAD))
|
||||
else
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
local sPostMove = ''
|
||||
if EMT.MCHFIRST then
|
||||
local sOut = string.gsub( string.gsub( EMT.MCHNAME..'/'..EMT.TOOL, '%(', '['), '%)', ']')
|
||||
if EMT.DOU_TYPE then sOut = sOut .. ' Double' end
|
||||
EmtOutput( '( *** '..sOut..' *** )')
|
||||
-- gestione comandi rulli
|
||||
local sPreMove = ''
|
||||
if GetV1ToCloseNum( true) then
|
||||
sPostMove = ' EC-3'
|
||||
else
|
||||
sPreMove = ' EC3'
|
||||
end
|
||||
if GetV2ToCloseNum( true) then
|
||||
sPostMove = sPostMove .. ' ED-3'
|
||||
else
|
||||
sPreMove = sPreMove .. ' ED3'
|
||||
end
|
||||
-- comandi rulli prima di movimento (aperture)
|
||||
if #sPreMove > 0 then
|
||||
EmtOutput( 'G157 EA2' .. sPreMove)
|
||||
end
|
||||
-- se taglio di coda senza residuo da scaricare, emetto M175 per accelerare il carico della barra successiva
|
||||
if EMT.MCHUSERNOTES and EMT.MCHUSERNOTES:find( 'Cut', 1, true) then
|
||||
EmtOutput( 'M175')
|
||||
end
|
||||
EMT.MCHFIRST = false
|
||||
EMT.PLANEACTIVE = true
|
||||
end
|
||||
-- emissione movimento
|
||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
-- comandi rulli dopo movimento (chiusure)
|
||||
EmtOutput( sOut)
|
||||
if #sPostMove > 0 then
|
||||
EmtOutput( 'G157 EA2' .. sPostMove)
|
||||
-- se necessario, impostazione riferimento locale
|
||||
if EMT.REFLOC == 0 then
|
||||
-- se lavorazione in doppio
|
||||
if EMT.DOU_TYPE == 2 then
|
||||
-- aggiusto assi
|
||||
EMT.L2 = -EMT.L2
|
||||
-- emetto movimenti in Zero macchina
|
||||
local Speed = EMT.S * EgtIf( EMT.HEAD ~= 'H12', 1, 1.65)
|
||||
EmitMoveDataHead( 1, { X=EMT.L2, Z=EMT.L3, B=EMT.R2, C=EMT.R1, S=Speed})
|
||||
EmitMoveStartHead( 1)
|
||||
local dX2 = - ( Delta2TabY - EMT.DOU_TLEN - ( -DeltaTabY - EMT.L2 - EMT.TLEN + EgtIf( BD.RIGHT_LOAD, -EMT.HB, EMT.HB)))
|
||||
local dZ2 = -Head2Z + MillOffs - Mill2Offs + EMT.L3
|
||||
local dC2 = -EMT.R1
|
||||
local dB2 = -EMT.R2
|
||||
EmitMoveDataHead( 2, { X=dX2, Z=dZ2, B=dB2, C=dC2, TPos=EMT.DOU_TPOS, S=EMT.DOU_SPEED})
|
||||
EmitMoveStartHead( 2)
|
||||
-- aspetto esecuzione movimento testa 2 e 1
|
||||
EmitMoveWaitHead( 2)
|
||||
EmitMoveWaitHead( 1)
|
||||
-- ripristino assi
|
||||
EMT.L2 = -EMT.L2
|
||||
end
|
||||
-- calcolo per piano generico
|
||||
CalcInterpPlane()
|
||||
EMT.REFLOC = 1
|
||||
-- trasformo i punti nel piano
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
EMT.L1p = nil
|
||||
EMT.L2p = nil
|
||||
EMT.L3p = nil
|
||||
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
||||
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR
|
||||
..EgtIf( nHSet~=2 and nHSet~=22, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||
-- forzo successiva emissione assi rotanti
|
||||
EMT.R1p = nil
|
||||
EMT.R2p = nil
|
||||
else
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
end
|
||||
-- emissione movimento
|
||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
-- comandi rulli dopo movimento (chiusure)
|
||||
EmtOutput( sOut)
|
||||
if #sPostMove > 0 then
|
||||
EmtOutput( 'G157 EA2' .. sPostMove)
|
||||
end
|
||||
end
|
||||
-- se altrimenti risalita a Z max a fine lavorazione
|
||||
elseif EMT.FLAG == 3 then
|
||||
@@ -1618,11 +1723,13 @@ function OnRapid()
|
||||
( EMT.HEAD == 'H12' and EMT.TOOL ~= sNextTool ) or ( EMT.HEAD == 'H22' and EMT.TOOL ~= sNextTool) or EMT.MCHSPLIT
|
||||
local CurrL3o = EMT.L3o
|
||||
EMT.L3o = EMT.L3op
|
||||
EmitZmax( true, true, bToXhome, EMT.R1p, EMT.R2p, EMT.MCHSPLIT)
|
||||
local bZMax = EmitZmax( true, true, bToXhome, EMT.R1p, EMT.R2p, EMT.MCHSPLIT)
|
||||
EMT.L3o = CurrL3o
|
||||
-- aggiorno quota finale trave dopo Zmax
|
||||
EMT.L1o = EMT.TPOS
|
||||
EMT.ZMAX = true
|
||||
if bZMax then
|
||||
EMT.ZMAX = true
|
||||
end
|
||||
-- se altrimenti movimento in Home
|
||||
elseif EMT.FLAG == 4 then
|
||||
-- non previsto
|
||||
@@ -1637,86 +1744,111 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnLinear()
|
||||
-- se necessario, impostazione riferimento locale
|
||||
if EMT.REFLOC == 0 then
|
||||
-- gruppo della testa
|
||||
local nHSet = GetHeadSet( EMT.HEAD)
|
||||
-- calcolo per piano generico
|
||||
CalcInterpPlane()
|
||||
EMT.REFLOC = 1
|
||||
-- salvo posizione attuale
|
||||
local OldL1 = EMT.L1
|
||||
local OldL2 = EMT.L2
|
||||
local OldL3 = EMT.L3
|
||||
-- imposto posizione precedente (non contiene l'offset in X per sovramateriale di testa EMT.X_OFF)
|
||||
EMT.L1 = EMT.L1o
|
||||
EMT.L2 = EMT.L2o
|
||||
EMT.L3 = EMT.L3o
|
||||
-- trasformo i punti nel piano
|
||||
-- se tastatore
|
||||
if EMT.ISPROBING then
|
||||
if not EMT.PROBE then
|
||||
local p3FirstPoint = Point3d( EMT.L1, EMT.L2, EMT.L3)
|
||||
local p3SecondPoint = Point3d( EMT.L1p, EMT.L2p, EMT.L3p)
|
||||
local dProbingDist = dist( p3FirstPoint, p3SecondPoint) * 2
|
||||
local vtE = Vector3d( EMT.EXTR)
|
||||
local sFace, ProbePosZ
|
||||
if AreSameVectorApprox( vtE, Y_AX()) then
|
||||
sFace = EgtIf( BD.RIGHT_LOAD, 4, 2)
|
||||
elseif AreSameVectorApprox( vtE, -Y_AX()) then
|
||||
sFace = EgtIf( BD.RIGHT_LOAD, 2, 4)
|
||||
elseif AreSameVectorApprox( vtE, Z_AX()) then
|
||||
sFace = 3
|
||||
else
|
||||
error( "PROBING DIRECTION NOT MANAGED")
|
||||
end
|
||||
local sProbeHead = ' ET' .. GetHeadSet( EMT.HEAD)
|
||||
EmtOutput( 'G145 Z-'.. EgtNumToString( dProbingDist).. ' EF'..sFace..sProbeHead)
|
||||
|
||||
-- tastatura attivata
|
||||
EMT.PROBE = true
|
||||
end
|
||||
else
|
||||
-- se necessario, impostazione riferimento locale
|
||||
if EMT.REFLOC == 0 then
|
||||
-- gruppo della testa
|
||||
local nHSet = GetHeadSet( EMT.HEAD)
|
||||
-- calcolo per piano generico
|
||||
CalcInterpPlane()
|
||||
EMT.REFLOC = 1
|
||||
-- salvo posizione attuale
|
||||
local OldL1 = EMT.L1
|
||||
local OldL2 = EMT.L2
|
||||
local OldL3 = EMT.L3
|
||||
-- imposto posizione precedente (non contiene l'offset in X per sovramateriale di testa EMT.X_OFF)
|
||||
EMT.L1 = EMT.L1o
|
||||
EMT.L2 = EMT.L2o
|
||||
EMT.L3 = EMT.L3o
|
||||
-- trasformo i punti nel piano
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
EMT.L1p = nil
|
||||
EMT.L2p = nil
|
||||
EMT.L3p = nil
|
||||
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
||||
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR
|
||||
..EgtIf( nHSet~=2 and nHSet~=22, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||
-- emissione movimento
|
||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
EmtOutput( sOut)
|
||||
-- aggiorno precedenti
|
||||
EMT.MOVE = 0
|
||||
EmtUpdatePrev()
|
||||
EMT.MOVE = 1
|
||||
-- ripristino posizione attuale
|
||||
EMT.L1 = OldL1
|
||||
EMT.L2 = OldL2
|
||||
EMT.L3 = OldL3
|
||||
end
|
||||
|
||||
-- aggiustamento valori
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
EMT.L1p = nil
|
||||
EMT.L2p = nil
|
||||
EMT.L3p = nil
|
||||
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
||||
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR..EgtIf( nHSet~=2, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||
EMT.PLANEACTIVE = true
|
||||
-- emissione movimento
|
||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
EmtOutput( sOut)
|
||||
-- aggiorno precedenti
|
||||
EMT.MOVE = 0
|
||||
EmtUpdatePrev()
|
||||
EMT.MOVE = 1
|
||||
-- ripristino posizione attuale
|
||||
EMT.L1 = OldL1
|
||||
EMT.L2 = OldL2
|
||||
EMT.L3 = OldL3
|
||||
end
|
||||
|
||||
-- aggiustamento valori
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
|
||||
-- se lavorazione in doppio e fondo foro, inverto movimento punta doppia
|
||||
local bDouHoleBott = ( EMT.MCHTYPE == MCH_MY.DRILLING and EMT.DOU_TYPE == 2 and EMT.FLAG == 101)
|
||||
if bDouHoleBott then
|
||||
EmtOutput( "G157 EE-1")
|
||||
end
|
||||
|
||||
-- valori degli assi
|
||||
local sL1, bL1 = EmtGetAxis( 'L1')
|
||||
local sL2, bL2 = EmtGetAxis( 'L2')
|
||||
local sL3, bL3 = EmtGetAxis( 'L3')
|
||||
local sR1, bR1 = EmtGetAxis( 'R1')
|
||||
local sR2, bR2 = EmtGetAxis( 'R2')
|
||||
local sAxes = sL1 .. sL2 .. sL3 .. sR2 .. sR1
|
||||
-- se nulla da emettere, esco
|
||||
if #sAxes == 0 then return end
|
||||
-- arresto preciso in angoli di fresature per utensili (non penne) di piccolo diametro
|
||||
local sSlowDown = ''
|
||||
if EMT.MCHTYPE == MCH_MY.MILLING and EMT.TTOTDIAM < 15 and abs( EMT.S) > 1000 and ( bL1 or bL2) and not bL3 then
|
||||
sSlowDown = ' G9'
|
||||
end
|
||||
-- aggiungo feed
|
||||
local sFeed = EmtGetFeed()
|
||||
-- emetto linea
|
||||
EmtOutput( "G1"..sSlowDown..sAxes..sFeed)
|
||||
|
||||
-- se lavorazione in doppio e fondo foro, muovo punta 2 e poi ripristino movimento standard punta doppia
|
||||
if bDouHoleBott then
|
||||
if EMT.DOU_TYPE == 2 or EMT.DOU_TYPE == 3 then
|
||||
local dZ = 2 * EMT.L3p - EMT.L3
|
||||
EmtOutput( "G1 Z" .. EgtNumToString( dZ, 3))
|
||||
EmtOutput( "G1 Z" .. EgtNumToString( EMT.L3p, 3))
|
||||
-- se lavorazione in doppio e fondo foro, inverto movimento punta doppia
|
||||
local bDouHoleBott = ( EMT.MCHTYPE == MCH_MY.DRILLING and EMT.DOU_TYPE == 2 and EMT.FLAG == 101)
|
||||
if bDouHoleBott then
|
||||
EmtOutput( "G157 EE-1")
|
||||
end
|
||||
EmtOutput( "G157 EE1")
|
||||
end
|
||||
|
||||
-- aggiorno valori come precedenti
|
||||
EMT.TPOS = EMT.L1o
|
||||
EmtUpdatePrev()
|
||||
-- valori degli assi
|
||||
local sL1, bL1 = EmtGetAxis( 'L1')
|
||||
local sL2, bL2 = EmtGetAxis( 'L2')
|
||||
local sL3, bL3 = EmtGetAxis( 'L3')
|
||||
local sR1, bR1 = EmtGetAxis( 'R1')
|
||||
local sR2, bR2 = EmtGetAxis( 'R2')
|
||||
local sAxes = sL1 .. sL2 .. sL3 .. sR2 .. sR1
|
||||
-- se nulla da emettere, esco
|
||||
if #sAxes == 0 then return end
|
||||
-- arresto preciso in angoli di fresature per utensili (non penne) di piccolo diametro
|
||||
local sSlowDown = ''
|
||||
if EMT.MCHTYPE == MCH_MY.MILLING and EMT.TTOTDIAM < 15 and abs( EMT.S) > 1000 and ( bL1 or bL2) and not bL3 then
|
||||
sSlowDown = ' G9'
|
||||
end
|
||||
-- aggiungo feed
|
||||
local sFeed = EmtGetFeed()
|
||||
-- emetto linea
|
||||
EmtOutput( "G1"..sSlowDown..sAxes..sFeed)
|
||||
|
||||
-- se lavorazione in doppio e fondo foro, muovo punta 2 e poi ripristino movimento standard punta doppia
|
||||
if bDouHoleBott then
|
||||
if EMT.DOU_TYPE == 2 or EMT.DOU_TYPE == 3 then
|
||||
local dZ = 2 * EMT.L3p - EMT.L3
|
||||
EmtOutput( "G1 Z" .. EgtNumToString( dZ, 3))
|
||||
EmtOutput( "G1 Z" .. EgtNumToString( EMT.L3p, 3))
|
||||
end
|
||||
EmtOutput( "G157 EE1")
|
||||
end
|
||||
|
||||
-- aggiorno valori come precedenti
|
||||
EMT.TPOS = EMT.L1o
|
||||
EmtUpdatePrev()
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -1743,8 +1875,8 @@ function OnArc()
|
||||
EMT.L2p = nil
|
||||
EMT.L3p = nil
|
||||
local sDouFlag = EgtIf( EMT.DOU_TYPE, ' EE1', '')
|
||||
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR..EgtIf( nHSet~=2, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||
EMT.PLANEACTIVE = true
|
||||
EmtOutput( 'G142'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..EMT.IPLGLSTR
|
||||
..EgtIf( nHSet~=2 and nHSet~=22, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||
-- emissione movimento
|
||||
local sOut = 'G0'..EmtGetAxis('L1')..EmtGetAxis('L2')..EmtGetAxis('L3')..
|
||||
EmtGetAxis('R2')..EmtGetAxis('R1')
|
||||
@@ -2464,12 +2596,13 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetDiffRotAxAtStart( R1, R2)
|
||||
local HomeR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'C1', 'C2'))
|
||||
local nHSet = GetHeadSet( EMT.HEAD)
|
||||
local HomeR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1 or nHSet == 11, 'C1', 'C2'))
|
||||
local PrevR1 = EMT.R1p or EMT.R1pp or HomeR1
|
||||
if not R1 or not PrevR1 or abs( R1 - PrevR1) > 0.1 then
|
||||
return true
|
||||
end
|
||||
local HomeR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'B1', 'B2'))
|
||||
local HomeR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1 or nHSet == 11, 'B1', 'B2'))
|
||||
local PrevR2 = EMT.R2p or EMT.R2pp or HomeR2
|
||||
if not R2 or not PrevR2 or abs( R2 - PrevR2) > 0.1 then
|
||||
return true
|
||||
@@ -2485,12 +2618,12 @@ function MyAdjustLinearAxes()
|
||||
|
||||
if EMT.REFLOC then
|
||||
local vtE
|
||||
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' then
|
||||
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' or EMT.HEAD == 'H19' then
|
||||
local dAddLen = EgtIf( EMT.HEAD == 'H12', -SawOffsZ, 0)
|
||||
local Len = EMT.TLEN + dAddLen + MillOffs
|
||||
local LenRef = MillOffs
|
||||
vtE = Vector3d( EMT.TDIR) * Len - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H21' or EMT.HEAD == 'H22' then
|
||||
elseif EMT.HEAD == 'H21' or EMT.HEAD == 'H22' or EMT.HEAD == 'H29' then
|
||||
local dAddLen = EgtIf( EMT.HEAD == 'H22', -Saw2OffsZ, 0)
|
||||
local Len = EMT.TLEN + dAddLen + Mill2Offs
|
||||
local LenRef = Mill2Offs
|
||||
@@ -2511,7 +2644,7 @@ function MyAdjustLinearAxes()
|
||||
else
|
||||
EmtSetLastError( 1211, 'Head not defined ' .. ( EMT.HEAD or ''))
|
||||
end
|
||||
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' or EMT.HEAD == 'H13' or EMT.HEAD == 'H15' or sHead == 'H17' then
|
||||
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' or EMT.HEAD == 'H13' or EMT.HEAD == 'H15' or sHead == 'H17' or EMT.HEAD == 'H19' then
|
||||
EMT.L1 = EMT.L1 - vtE:getX()
|
||||
EMT.L2 = EMT.L2 - DeltaTabY - vtE:getY()
|
||||
EMT.L3 = EMT.L3 - DeltaTabZ - vtE:getZ()
|
||||
@@ -2720,13 +2853,40 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
||||
if bReset then
|
||||
EmitResetMachining()
|
||||
end
|
||||
|
||||
if EMT.ISPROBING then
|
||||
-- se lavorazione successiva con stessa testa non si va a Z massima
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
local bIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||
local sToolNameNextProbe
|
||||
local idProbeNextMachining = EgtGetNextActiveOperation( EMT.MCHID)
|
||||
if idProbeNextMachining then
|
||||
EgtSetCurrMachining( idProbeNextMachining)
|
||||
sToolNameNextProbe = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||
EgtSetCurrMachining( EMT.MCHID)
|
||||
end
|
||||
if sToolNameNextProbe and bIsFirstHead and EMT.PREVTOOL_H1 == sToolNameNextProbe then
|
||||
return false
|
||||
elseif sToolNameNextProbe and not bIsFirstHead and EMT.PREVTOOL_H2 == sToolNameNextProbe then
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
-- se tastatura attiva, si disabilita la tastatura
|
||||
-- gestione eventuale tastatura
|
||||
local bStopProbing = EgtGetValInNotes( EMT.MCHUSERNOTES, 'PROBE', 'b') or EgtGetValInNotes( EMT.MCHUSERNOTES, 'END-PROBE', 'b')
|
||||
if bStopProbing then
|
||||
EmtOutput( 'G145 Z-10 EF0')
|
||||
end
|
||||
EMT.PROBE = nil
|
||||
|
||||
-- gruppo della testa
|
||||
local nHSet = GetHeadSet( EMT.HEAD)
|
||||
local dXPos = EgtIf( bUsePrevDelta, EMT.L2pp or EMT.L2o, EMT.L2o)
|
||||
-- reset stato di testa in home
|
||||
EMT.XHOME = nil
|
||||
-- se testa 1
|
||||
if nHSet == 1 then
|
||||
if nHSet == 1 or nHSet == 11 then
|
||||
-- posizioni sicure
|
||||
local dMaxZ1 = EgtGetAxisMax( 'Z1')
|
||||
local dSafeX1 = EgtGetAxisHomePos( 'X1')
|
||||
@@ -2890,6 +3050,7 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
||||
EmitMoveWaitHead( 2)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -2919,7 +3080,7 @@ function EmitXhome()
|
||||
-- gruppo della testa
|
||||
local nHSet = GetHeadSet( EMT.HEAD)
|
||||
-- se testa 1
|
||||
if nHSet == 1 then
|
||||
if nHSet == 1 or nHSet == 11 then
|
||||
local dMaxZ1 = EgtGetAxisMax( 'Z1')
|
||||
local dSafeX1 = EgtGetAxisHomePos( 'X1')
|
||||
local dSafeZ1 = EgtGetAxisHomePos( 'Z1')
|
||||
@@ -2951,7 +3112,7 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function EmitResetMachining()
|
||||
if EMT.PLANEACTIVE then
|
||||
if EMT.PLANEACTIVE and not EMT.ISPROBING then
|
||||
-- se non sono a Z massima e operatore deve entrare in cabina spango sempre
|
||||
if not EMT.ZMAX and ( GetSpecUnloading( EMT.PATHID) or GetFall( EMT.PATHID)) then
|
||||
EmtOutput( 'M05')
|
||||
|
||||
+183
-17
@@ -88,6 +88,10 @@ function OnSimulStart()
|
||||
if DefTcPos2 then
|
||||
LoadFirstTool( 2, DefTcPos2)
|
||||
end
|
||||
|
||||
-- se presenti, nascondo i tastatori
|
||||
DeactivateProbeTool()
|
||||
|
||||
ExecStartHome()
|
||||
-- Se reset o home, esco
|
||||
if EMT.SIM1ST then return end
|
||||
@@ -122,7 +126,8 @@ function OnSimulStart()
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TC1'},
|
||||
{ Grp = 'Base', Sub = 'COLLISION', Name = 'TC2'},
|
||||
{ Grp = 'Base', Sub = 'BELT', Name = 'COLLISION'},
|
||||
{ Grp = 'X1', Sub = 'COLLISION', Name = 'STM'}}
|
||||
{ Grp = 'X1', Sub = 'COLLISION', Name = 'STM'},
|
||||
{ Grp = 'X1', Sub = 'COLLISION', Name = 'STM2'}}
|
||||
|
||||
if EgtGetHeadId( 'H21') then
|
||||
table.insert( McdData, { Grp = 'X2', Sub = 'COLLISION', Name = 'STM'})
|
||||
@@ -503,9 +508,11 @@ function OnSimulToolSelect( dPosA)
|
||||
EMT.TDIAM = EgtTdbGetCurrToolParam( MCH_TP.DIAM)
|
||||
EMT.TUSERNOTES = EgtTdbGetCurrToolParam( MCH_TP.USERNOTES)
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
local bIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||
EMT.ISPROBING = HeadIsProbe( EMT.HEAD)
|
||||
-- se ho due teste, verifico che l'altra sia dalla parte opposta
|
||||
if EgtGetHeadId( 'H21') then
|
||||
if nSetHead == 1 then
|
||||
if bIsFirstHead then
|
||||
EgtSetAxisPos( 'X2', MinX2)
|
||||
else
|
||||
EgtSetAxisPos( 'X1', MaxX1)
|
||||
@@ -541,6 +548,75 @@ function OnSimulToolSelect( dPosA)
|
||||
-- Imposto visualizzazione
|
||||
EgtSetMode( EgtGetHeadId( EMT.HEAD) or GDB_ID.NULL, GDB_MD.STD)
|
||||
end
|
||||
|
||||
-- se tastatore
|
||||
if HeadIsProbe( EMT.HEAD) then
|
||||
local bChanged = true
|
||||
if bIsFirstHead then
|
||||
-- se prossimo utensile compatibile, lo prelevo
|
||||
if IsToolCompatibleWithProbe( EMT.PROBENEXTTOOL_H1, EMT.TOOL) then
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H1, true)
|
||||
EgtLoadTool( EMT.PROBENEXTHEAD_H1, 1, EMT.PROBENEXTTOOL_H1)
|
||||
EMT.TCPOS = EMT.PROBENEXTTCPOS_H1
|
||||
EMT.HEAD = EMT.PROBENEXTHEAD_H1
|
||||
EMT.TOOL = EMT.PROBENEXTTOOL_H1
|
||||
else
|
||||
-- se vecchio utensile compatibile, tengo quello caricato
|
||||
if IsToolCompatibleWithProbe( EMT.PREVTOOL_H1, EMT.TOOL) then
|
||||
bChanged = false
|
||||
EMT.TCPOS = EMT.PREVTCPOS_H1
|
||||
EMT.TOOL = EMT.PREVTOOL_H1
|
||||
EMT.HEAD = EMT.PREVHEAD_H1
|
||||
-- altrimenti si seleziona utensile di default
|
||||
else
|
||||
ExecMoveZmax( EMT.MCHSPLIT, true)
|
||||
EMT.TCPOS = DefTcPos1
|
||||
EMT.TOOL = GetToolNameFromTcPos( DefTcPos1)
|
||||
EMT.HEAD, _ = GetToolHead( EMT.TOOL)
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H1, true)
|
||||
EgtLoadTool( EMT.HEAD, 1, EMT.TOOL)
|
||||
end
|
||||
end
|
||||
-- se cambiato utensile, si setta subito nome precedente
|
||||
if bChanged then
|
||||
EMT.PREVTOOL_H1 = EMT.TOOL
|
||||
EMT.PREVHEAD_H1 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H1 = EMT.TCPOS
|
||||
end
|
||||
else
|
||||
-- se prossimo utensile compatibile, lo prelevo
|
||||
if IsToolCompatibleWithProbe( EMT.PROBENEXTTOOL_H2, EMT.TOOL) then
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H2, true)
|
||||
EgtLoadTool( EMT.PROBENEXTHEAD_H2, 1, EMT.PROBENEXTTOOL_H2)
|
||||
EMT.TCPOS = EMT.PROBENEXTTCPOS_H2
|
||||
EMT.HEAD = EMT.PROBENEXTHEAD_H2
|
||||
EMT.TOOL = EMT.PROBENEXTTOOL_H2
|
||||
else
|
||||
-- se vecchio utensile compatibile, tengo quello caricato
|
||||
if IsToolCompatibleWithProbe( EMT.PREVTOOL_H2, EMT.TOOL) then
|
||||
bChanged = false
|
||||
EMT.TCPOS = EMT.PREVTCPOS_H2
|
||||
EMT.TOOL = EMT.PREVTOOL_H2
|
||||
EMT.HEAD = EMT.PREVHEAD_H2
|
||||
-- altrimenti si seleziona utensile di default
|
||||
else
|
||||
ExecMoveZmax( EMT.MCHSPLIT, true)
|
||||
EMT.TCPOS = DefTcPos2
|
||||
EMT.TOOL = GetToolNameFromTcPos( DefTcPos2)
|
||||
EMT.HEAD, _ = GetToolHead( EMT.TOOL)
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H2, true)
|
||||
EgtLoadTool( EMT.HEAD, 1, EMT.TOOL)
|
||||
end
|
||||
end
|
||||
-- se cambiato utensile, si setta subito nome precedente
|
||||
if bChanged then
|
||||
EMT.PREVTOOL_H2 = EMT.TOOL
|
||||
EMT.PREVHEAD_H2 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H2 = EMT.TCPOS
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- carico utensile, con breve pausa
|
||||
EgtPause( 100)
|
||||
EgtOutText( '')
|
||||
@@ -609,10 +685,57 @@ function OnSimulToolDeselect( dPrevA)
|
||||
LoadNextTool( 2, DefTcPos2)
|
||||
end
|
||||
end
|
||||
|
||||
-- se presenti, nascondo i tastatori
|
||||
DeactivateProbeTool()
|
||||
local bSkipToolChange = false
|
||||
-- se prossima lavorazione è tastatura, si controlla compatibilità con utensile successivo
|
||||
if HeadIsProbe( EMT.NEXTHEAD) then
|
||||
local idProbeMachining = EgtGetNextActiveOperation( EMT.MCHID)
|
||||
local bFound = false
|
||||
local nProbeHead = GetHeadSet( EMT.NEXTHEAD)
|
||||
local idProbeNextMachining = EgtGetNextActiveOperation( idProbeMachining)
|
||||
while not bFound do
|
||||
if idProbeNextMachining then
|
||||
EgtSetCurrMachining( idProbeNextMachining)
|
||||
local sToolNameNextProbe = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||
if sToolNameNextProbe then
|
||||
local sToolHeadNextProbe, sToolTcPosNextProbe = GetToolHead( sToolNameNextProbe)
|
||||
local nToolHead = GetHeadSet( sToolHeadNextProbe)
|
||||
-- se sono sulla stessa testa
|
||||
if nToolHead == 1 and nProbeHead == 11 then
|
||||
EMT.PROBENEXTTOOL_H1 = sToolNameNextProbe
|
||||
EMT.PROBENEXTHEAD_H1 = sToolHeadNextProbe
|
||||
EMT.PROBENEXTTCPOS_H1 = sToolTcPosNextProbe
|
||||
bFound = true
|
||||
elseif nToolHead == 2 and nProbeHead == 21 then
|
||||
EMT.PROBENEXTTOOL_H2 = sToolNameNextProbe
|
||||
EMT.PROBENEXTHEAD_H2 = sToolHeadNextProbe
|
||||
EMT.PROBENEXTTCPOS_H2 = sToolTcPosNextProbe
|
||||
bFound = true
|
||||
end
|
||||
end
|
||||
else
|
||||
break
|
||||
end
|
||||
idProbeNextMachining = EgtGetNextActiveOperation( idProbeNextMachining)
|
||||
end
|
||||
-- ripristino lavorazione corrente
|
||||
EgtSetCurrMachining( EMT.MCHID)
|
||||
|
||||
if nProbeHead == 11 and not( IsToolCompatibleWithProbe( EMT.PREVTOOL_H1, EMT.TOOL)) then
|
||||
;
|
||||
elseif nProbeHead == 21 and not( IsToolCompatibleWithProbe( EMT.PREVTOOL_H2, EMT.TOOL)) then
|
||||
;
|
||||
else
|
||||
bSkipToolChange = true
|
||||
end
|
||||
end
|
||||
|
||||
-- reset flag sega a catena già depositata
|
||||
EMT.CHSAW_OUT = nil
|
||||
-- se utensile non cambia e non è sega a catena, esco
|
||||
if ( EMT.NEXTTOOL == EMT.PREVTOOL_H1 or EMT.NEXTTOOL == EMT.PREVTOOL_H2) and not HeadIsChainSaw( EMT.NEXTHEAD) then return end
|
||||
if bSkipToolChange or ( ( EMT.NEXTTOOL == EMT.PREVTOOL_H1 or EMT.NEXTTOOL == EMT.PREVTOOL_H2) and not HeadIsChainSaw( EMT.NEXTHEAD)) then return end
|
||||
-- deposito utensile
|
||||
EgtOutText( 'Tool change in progress...')
|
||||
-- se prossimo utensile sega a catena, devo mettere in home testa 1 e depositare l'utensile sulla testa 2 o viceversa
|
||||
@@ -621,7 +744,7 @@ function OnSimulToolDeselect( dPrevA)
|
||||
-- se ci sono due teste
|
||||
if EgtGetHeadId( 'H21') then
|
||||
local nSetHead = GetHeadSet( EMT.NEXTHEAD)
|
||||
if nSetHead == 1 then
|
||||
if nSetHead == 1 or nSetHead == 11 then
|
||||
-- porto in home testa 1
|
||||
SimulMoveAxis( 'X1', MaxX1, MCH_SIM_STEP.RAPID)
|
||||
-- deposito utensile fresa
|
||||
@@ -677,7 +800,7 @@ function OnSimulToolDeselect( dPrevA)
|
||||
if nSetHead == 1 and EMT.PREVHEAD_H1 then
|
||||
local MyParkX1 = EgtIf( GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC1', ParkX1, ParkFrnX1)
|
||||
SimulMoveAxis( 'X1', MyParkX1, MCH_SIM_STEP.RAPID)
|
||||
elseif EMT.PREVHEAD_H2 then
|
||||
elseif nSetHead == 2 and EMT.PREVHEAD_H2 then
|
||||
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
end
|
||||
@@ -708,7 +831,7 @@ function OnSimulToolDeselect( dPrevA)
|
||||
SimulMoveAxis( 'Z2', ParkCSawZ2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- per prossima testa gruppo 1
|
||||
else
|
||||
elseif nNextSetHead == 1 then
|
||||
-- visualizzo utensile su TcPos
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H1, true)
|
||||
-- nascondo l'utensile sulla testa
|
||||
@@ -841,6 +964,7 @@ function OnSimulMachiningEnd()
|
||||
EMT.DOU_TOOL = nil
|
||||
-- salvo dati utensile
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
|
||||
-- se non ho già tolto la sega a catena, aggiorno valori
|
||||
if not EMT.CHSAW_OUT then
|
||||
-- per gruppo testa 1
|
||||
@@ -1615,16 +1739,50 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
||||
-- set della testa
|
||||
local nSetHead = GetHeadSet( EMT.HEAD)
|
||||
if nSetHead == 0 then return end
|
||||
local bIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||
|
||||
if EMT.ISPROBING then
|
||||
-- se lavorazione successiva con stessa testa non si va a Z massima
|
||||
local sToolNameNextProbe
|
||||
local idProbeNextMachining = EgtGetNextActiveOperation( EMT.MCHID)
|
||||
if idProbeNextMachining then
|
||||
EgtSetCurrMachining( idProbeNextMachining)
|
||||
sToolNameNextProbe = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||
EgtSetCurrMachining( EMT.MCHID)
|
||||
end
|
||||
local bMoveToZMax = true
|
||||
if sToolNameNextProbe and bIsFirstHead and EMT.PREVTOOL_H1 == sToolNameNextProbe then
|
||||
bMoveToZMax = false
|
||||
elseif sToolNameNextProbe and not bIsFirstHead and EMT.PREVTOOL_H2 == sToolNameNextProbe then
|
||||
bMoveToZMax = false
|
||||
end
|
||||
-- se non serve alzarsi
|
||||
if not bMoveToZMax then
|
||||
local vtE = Vector3d( EMT.EXTR)
|
||||
local ProbePosZ
|
||||
-- ci si riporta in posizione fuori ingombro pezzo
|
||||
if AreSameVectorApprox( vtE, Y_AX()) or AreSameVectorApprox( vtE, -Y_AX()) then
|
||||
ProbePosZ = EMT.TABORI1[3] + EMT.SB
|
||||
if nSetHead == 1 then
|
||||
SimulMoveAxis( 'Z1', ProbePosZ, MCH_SIM_STEP.RAPID)
|
||||
else
|
||||
SimulMoveAxis( 'Z2', ProbePosZ, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
end
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
-- posizioni correnti degli assi testa
|
||||
local CurrX = EgtGetAxisPos( EgtIf( nSetHead == 1, 'X1', 'X2'))
|
||||
local CurrZ = EgtGetAxisPos( EgtIf( nSetHead == 1, 'Z1', 'Z2'))
|
||||
local CurrC = EgtGetAxisPos( EgtIf( nSetHead == 1, 'C1', 'C2'))
|
||||
local CurrB = EgtGetAxisPos( EgtIf( nSetHead == 1, 'B1', 'B2'))
|
||||
local CurrX = EgtGetAxisPos( EgtIf( bIsFirstHead, 'X1', 'X2'))
|
||||
local CurrZ = EgtGetAxisPos( EgtIf( bIsFirstHead, 'Z1', 'Z2'))
|
||||
local CurrC = EgtGetAxisPos( EgtIf( bIsFirstHead, 'C1', 'C2'))
|
||||
local CurrB = EgtGetAxisPos( EgtIf( bIsFirstHead, 'B1', 'B2'))
|
||||
-- posizioni home degli assi testa
|
||||
local HomeX = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'X1', 'X2'))
|
||||
local HomeZ = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'Z1', 'Z2'))
|
||||
local HomeC = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'C1', 'C2'))
|
||||
local HomeB = EgtGetAxisHomePos( EgtIf( nSetHead == 1, 'B1', 'B2'))
|
||||
local HomeX = EgtGetAxisHomePos( EgtIf( bIsFirstHead, 'X1', 'X2'))
|
||||
local HomeZ = EgtGetAxisHomePos( EgtIf( bIsFirstHead, 'Z1', 'Z2'))
|
||||
local HomeC = EgtGetAxisHomePos( EgtIf( bIsFirstHead, 'C1', 'C2'))
|
||||
local HomeB = EgtGetAxisHomePos( EgtIf( bIsFirstHead, 'B1', 'B2'))
|
||||
-- verifico se necessario ruotare la testa
|
||||
local bRot = ( abs( HomeC - CurrC) > 1 or abs( HomeB - CurrB) > 1)
|
||||
-- se necessario ruotare la testa, allargo i carrelli
|
||||
@@ -1635,7 +1793,7 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
||||
ExecParkRoller( nil, nil, nil, nil, bMchSplit, bAgg)
|
||||
end
|
||||
-- se testa 1
|
||||
if nSetHead == 1 then
|
||||
if bIsFirstHead then
|
||||
-- se fresa o lama
|
||||
if GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC1' then
|
||||
if not HeadIsChainSaw( EMT.HEAD) then
|
||||
@@ -2295,6 +2453,14 @@ function LoadNextTool( nHSet, sTcPosDef, bFirst)
|
||||
return sTool
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function DeactivateProbeTool()
|
||||
if Probe then
|
||||
EgtSetMode( EgtGetHeadId( 'H19') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||
EgtSetMode( EgtGetHeadId( 'H29') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- *** ESTIMATION T&L ***
|
||||
---------------------------------------------------------------------
|
||||
@@ -2719,7 +2885,7 @@ function GetHeadSetFromTcPos( sTcPos)
|
||||
local TCPOS_2A = {}
|
||||
local TCPOS_2B = {}
|
||||
if EgtGetHeadId( 'H21') then
|
||||
TCPOS_1A = { 'T1', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10'}
|
||||
TCPOS_1A = { 'T1', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10', '501'}
|
||||
TCPOS_1B = { 'T101'}
|
||||
TCPOS_2A = { 'T11', 'T12', 'T13', 'T14', 'T15', 'T16', 'T17', 'T18', 'T19', 'T20'}
|
||||
TCPOS_2B = { 'T111'}
|
||||
@@ -2727,7 +2893,7 @@ function GetHeadSetFromTcPos( sTcPos)
|
||||
TCPOS_1A = { 'T1', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10'}
|
||||
TCPOS_1B = { 'T101', 'T201'}
|
||||
TCPOS_1C = { 'T301'}
|
||||
TCPOS_2A = { 'T11', 'T12', 'T13', 'T14', 'T15', 'T16', 'T17', 'T18', 'T19', 'T20'}
|
||||
TCPOS_2A = { 'T11', 'T12', 'T13', 'T14', 'T15', 'T16', 'T17', 'T18', 'T19', 'T20', '502'}
|
||||
end
|
||||
for _, sVal in ipairs( TCPOS_1A) do
|
||||
if sVal == sTcPos then return 1, 1 end
|
||||
|
||||
+68
-4
@@ -4,6 +4,12 @@
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- *** Generic Machinings ***
|
||||
---------------------------------------------------------------------
|
||||
require( 'EmtGenMachining')
|
||||
---------------------------------------------------------------------
|
||||
|
||||
-- Carico libreria
|
||||
local BD = require( 'BeamData')
|
||||
|
||||
@@ -233,6 +239,13 @@ function OnSpecialMoveZup()
|
||||
EMC.MODIF = true
|
||||
end
|
||||
end
|
||||
elseif HeadIsChainSaw( EMC.HEAD) then
|
||||
EMC.TTOTLEN = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||
if EMC.TDIR[3] < -0.15 and EMC.L3 > - EMC.TTOTLEN then
|
||||
EMC.L3 = EMC.TTOTLEN * EMC.TDIR[3]
|
||||
-- dichiaro modificato
|
||||
EMC.MODIF = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -684,9 +697,49 @@ function OnPostApplyMachining()
|
||||
|
||||
-- Inizializzo codice di errore
|
||||
EMC.ERR = 0
|
||||
|
||||
-- Recupero la precedente operazione
|
||||
local nPrevOpeId = EgtGetPrevActiveOperation( EMC.MCHID)
|
||||
|
||||
-- Se esiste lavorazione precedente ed è una tastatura
|
||||
if nPrevOpeId and EgtGetOperationType( nPrevOpeId) == MCH_OY.PROBING then
|
||||
-- se stessa testa e montato già utensile corretto
|
||||
-- recupero valori assi alla fine della lavorazione precedente e all'inizio della corrente
|
||||
local vPrevAxes = EmtGetFinalAxesPos( nPrevOpeId, true)
|
||||
local vCurrAxes = EmtGetInitialAxesPos( EMC.MCHID, true)
|
||||
-- info lavorazione precedente
|
||||
EgtSetCurrMachining( nPrevOpeId)
|
||||
local sPrevTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||
local sPrevHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||
local nSetHead = GetHeadSet( sPrevHead)
|
||||
local bPrevIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||
-- info lavorazione corrente
|
||||
EgtSetCurrMachining( EMC.MCHID)
|
||||
local sCurrTool = EgtGetMachiningParam( MCH_MP.TOOL)
|
||||
local sCurrHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||
nSetHead = GetHeadSet( sCurrHead)
|
||||
local bCurrIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||
|
||||
-- se utensile corrente è compatibile (significa che è già stato precaricato) se stessa testa e con stessa configurazioen assi rotanti, annullo risalita
|
||||
if IsToolCompatibleWithProbe( sCurrTool, sPrevTool) and bPrevIsFirstHead == bCurrIsFirstHead and abs( vCurrAxes[4] - vPrevAxes[4]) < 1 and abs( vCurrAxes[5] - vPrevAxes[5]) < 1 then
|
||||
-- in lavorazione precedente elimino eventuale retrazione a Zmax
|
||||
EmtRemoveRise( nPrevOpeId)
|
||||
-- in lavorazione corrente elimino eventuale approccio da Zmax
|
||||
EmtRemoveClimb( EMC.MCHID)
|
||||
-- prendo sempre la Z massima tra le due
|
||||
local vClimbPoint
|
||||
if vCurrAxes[3] - 1.0 < vPrevAxes[3] then
|
||||
vClimbPoint = vCurrAxes
|
||||
vCurrAxes[3] = vPrevAxes[3]
|
||||
elseif vPrevAxes[3] - 1.0 < vCurrAxes[3] then
|
||||
vClimbPoint = vPrevAxes
|
||||
vPrevAxes[3] = vCurrAxes[3]
|
||||
end
|
||||
EmtAddClimb( EMC.MCHID, vClimbPoint, 4, 1, 0)
|
||||
end
|
||||
end
|
||||
|
||||
-- Recupero la posizione della trave e dei carrelli al termine della precedente operazione
|
||||
local nPrevOpeId = EgtGetPrevActiveOperation( EMC.MCHID)
|
||||
-- se precedente operazione non esiste, errore
|
||||
if not nPrevOpeId then
|
||||
EMC.ERR = 1
|
||||
@@ -844,7 +897,6 @@ function OnPostApplyMachining()
|
||||
local vAxes = EmtGetAxesPos( nLastEntId)
|
||||
if #vAxes > 0 then EMC.TPOS = vAxes[1] end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -1122,6 +1174,17 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
||||
end
|
||||
-- Recupero testa
|
||||
local sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||
local sToolName = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||
local nSetHead = GetHeadSet( sHead)
|
||||
local bIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||
|
||||
-- se lavorazione di tastatura, si considera montato utensile di default
|
||||
if HeadIsProbe( sHead) then
|
||||
local sOtherToolName = GetToolNameFromTcPos( EgtIf( bIsFirstHead, DefTcPos1, DefTcPos2))
|
||||
local sOtherHeadTool, _ = GetToolHead( sOtherToolName)
|
||||
EgtLoadTool( sOtherHeadTool, 1, sOtherToolName)
|
||||
end
|
||||
|
||||
-- Recupero valore assi macchina
|
||||
local nSecId = EgtGetNext( EgtGetFirstInGroup( nPathId))
|
||||
local vAxes = EmtGetAxesPos( nSecId)
|
||||
@@ -1132,8 +1195,8 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
||||
end
|
||||
-- Calcolo dell'ingombro della testa rispetto allo Zero Macchina
|
||||
local b3Enc
|
||||
|
||||
if sHead ~= 'H21' and sHead ~= 'H22' and sHead ~= 'H23' then
|
||||
|
||||
if bIsFirstHead then
|
||||
EgtSetAxisPos( 'C1', vAxes[4])
|
||||
EgtSetAxisPos( 'B1', vAxes[5])
|
||||
if sHead == 'H13' or sHead == 'H15' then
|
||||
@@ -1167,6 +1230,7 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
||||
local dDistFront = - ptMax:getX() - LoadT - dHeadFront
|
||||
local dDistBack = ptMin:getX() + LoadT + EMC.LB - dHeadBack
|
||||
EgtOutLog( ' DistFront = ' .. EgtNumToString( dDistFront, 1) .. ' DistBack = ' .. EgtNumToString( dDistBack, 1), 3)
|
||||
|
||||
return dDistFront, dDistBack, dRollFront, dRollBack
|
||||
end
|
||||
|
||||
|
||||
Binary file not shown.
@@ -91,11 +91,13 @@ Language1=Italiano,Ita.txt
|
||||
Language2=English,Eng.txt
|
||||
|
||||
[Tools]
|
||||
Probe=1
|
||||
Drillbit=1
|
||||
Sawblade=1
|
||||
Mill=1
|
||||
Mortise=1
|
||||
Chisel=0
|
||||
ProbeMaker=MakeProbe.lua
|
||||
DrillMaker=MakeWoodDrill.lua
|
||||
SawbladeMaker=MakeSawblade.lua
|
||||
MillMaker=MakeWoodCylMill.lua
|
||||
@@ -114,6 +116,7 @@ H21.1:MILL_NOTIP=MillNoTip.nge
|
||||
H22.1=Saw.nge
|
||||
|
||||
[Machinings]
|
||||
Probing=1
|
||||
Drilling=1
|
||||
Sawing=1
|
||||
Milling=1
|
||||
@@ -126,6 +129,8 @@ SawFinishing=0
|
||||
[Machining]
|
||||
InitScript=InitMach.lua
|
||||
ExitScript=ExitMach.lua
|
||||
[Probing]
|
||||
PrbScript1=StdProbe
|
||||
|
||||
[Disposition]
|
||||
;InitScript=InitDisp.lua
|
||||
@@ -139,10 +144,14 @@ H12=6615
|
||||
H13=6616
|
||||
; Angular transmission
|
||||
H17=6617
|
||||
; Probe
|
||||
H19=6618
|
||||
; Second 5 axis head
|
||||
H21=6620
|
||||
; Second 5 axis saw
|
||||
H22=6623
|
||||
; Probe
|
||||
H29=6618
|
||||
|
||||
[SetUp]
|
||||
Default=Standard
|
||||
@@ -155,3 +164,5 @@ WinPlace=0,514,138,628,810
|
||||
Enable=1
|
||||
Save=0
|
||||
|
||||
[ToolTrace]
|
||||
Enable=1
|
||||
+113
-7
@@ -42,11 +42,11 @@
|
||||
|
||||
-- Intestazioni
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
EgtEnableDebug( true)
|
||||
|
||||
PP_VER = '2.7j2'
|
||||
PP_VER = '2.7j2_DEV2_B'
|
||||
PP_NVER = '2.7.10.2'
|
||||
MIN_MACH_VER = '2.5k1'
|
||||
MIN_MACH_VER = '2.7f3'
|
||||
MACH_NAME = string.match( EgtGetCurrMachineDir(), "[^\\]+$") -- si ricava il nome della macchina dal direttorio
|
||||
|
||||
-- Carico i dati globali
|
||||
@@ -178,6 +178,7 @@ OptimizedLoadBeam = true
|
||||
AutoRotMinLen = 0
|
||||
EstimationRapidMultiplier = 1
|
||||
ForceToCloseRollersGate = false
|
||||
Probe = nil
|
||||
AggreBlockHaus = false
|
||||
|
||||
-- Aggiornamento con dati da TechnoEssetre7
|
||||
@@ -267,8 +268,12 @@ if EgtExistsFile( sData) then
|
||||
if Machine.Offsets.MAXACC then MaxAcc = Machine.Offsets.MAXACC end
|
||||
if Machine.Offsets.MINACC then MinAcc = Machine.Offsets.MINACC end
|
||||
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
|
||||
if Machine.Offsets.MAXFEEDPINZE then MaxFeedPinze = Machine.Offsets.MAXFEEDPINZE end
|
||||
if Machine.Offsets.MAXACC then MaxAcc = Machine.Offsets.MAXACC end
|
||||
if Machine.Offsets.MINACC then MinAcc = Machine.Offsets.MINACC end
|
||||
if Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO then ForceToCloseRollersGate = Machine.Offsets.CHIUDI_PINZE_2_3_SCAMBIO == 1 end
|
||||
if Machine.Offsets.WOOD_DENSITY then WoodDensity = Machine.Offsets.WOOD_DENSITY end
|
||||
if Machine.Offsets.PROBE then Probe = Machine.Offsets.PROBE end -- Tastatore su entrembe le teste. 1 = solo testa 1, 2 = solo testa 2, 3 = entrambe le teste
|
||||
if Machine.Offsets.AGGRE_BH then AggreBlockHaus = ( Machine.Offsets.AGGRE_BH == 1) end
|
||||
AngTrBHOffs = Machine.Offsets.OFFSETZ_RINV_BH or AngTrBHOffs
|
||||
AngTrBHLen = Machine.Offsets.OFFSETX_RINV_BH or AngTrBHLen
|
||||
@@ -344,6 +349,13 @@ EmtAxis {
|
||||
Home = ParkC1,
|
||||
Geo = 'C1_AXIS/GEO',
|
||||
Aux = {'C1_AXIS/SOLID', 'C1_AXIS/COLLISION'}}
|
||||
-- se tastatore presente
|
||||
local sBAxisAuxGeom
|
||||
if Probe == 1 or Probe == 3 then
|
||||
sBAxisAuxGeom = {'B1_AXIS/SOLID', 'B1_AXIS/COLLISION', 'PROBE_B1/SOLID_PROBE', 'PROBE_B1/COLLISION_PROBE'}
|
||||
else
|
||||
sBAxisAuxGeom = {'B1_AXIS/SOLID', 'B1_AXIS/COLLISION'}
|
||||
end
|
||||
EmtAxis {
|
||||
Name = 'B1',
|
||||
Parent = 'C1',
|
||||
@@ -354,7 +366,7 @@ EmtAxis {
|
||||
Stroke = {MinB1, MaxB1},
|
||||
Home = ParkB1,
|
||||
Geo = 'B1_AXIS/GEO',
|
||||
Aux = {'B1_AXIS/SOLID', 'B1_AXIS/COLLISION'}}
|
||||
Aux = sBAxisAuxGeom }
|
||||
-- Frese
|
||||
local H11Id = EmtHead {
|
||||
Name = 'H11',
|
||||
@@ -382,6 +394,22 @@ local H12Id = EmtHead {
|
||||
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
||||
Geo = 'H12_HEAD/GEO'}
|
||||
--EgtSetInfo( H12Id, 'ZMAXONROT', '1,190')
|
||||
-- Tastatore su testa 1
|
||||
local H19Id
|
||||
if Probe == 1 or Probe == 3 then
|
||||
H19Id = EmtHead {
|
||||
Name = 'H19',
|
||||
Parent = 'B1',
|
||||
HSet = 'H19',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( -60, -81, 0),
|
||||
TDir = Z_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Rot1W = 0.2,
|
||||
Rot2Stroke = { MinB1, MaxB1},
|
||||
OthColl = {'B1/SOLID', 'C1/SOLID'},
|
||||
Geo = 'H19_HEAD/GEO'}
|
||||
end
|
||||
-- Sega a catena
|
||||
EmtAxis {
|
||||
Name = 'A',
|
||||
@@ -461,6 +489,12 @@ local C2Id = EmtAxis {
|
||||
Home = ParkC2,
|
||||
Geo = 'C2_AXIS/GEO',
|
||||
Aux = {'C2_AXIS/SOLID', 'C2_AXIS/COLLISION'}}
|
||||
-- se presente tastatore
|
||||
if Probe == 2 or Probe == 3 then
|
||||
sBAxisAuxGeom = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION', 'PROBE_B2/SOLID_PROBE', 'PROBE_B2/COLLISION_PROBE'}
|
||||
else
|
||||
sBAxisAuxGeom = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION'}
|
||||
end
|
||||
local B2Id = EmtAxis {
|
||||
Name = 'B2',
|
||||
Parent = 'C2',
|
||||
@@ -471,7 +505,7 @@ local B2Id = EmtAxis {
|
||||
Stroke = {MinB2, MaxB2},
|
||||
Home = ParkB2,
|
||||
Geo = 'B2_AXIS/GEO',
|
||||
Aux = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION'}}
|
||||
Aux = sBAxisAuxGeom}
|
||||
local vtMove2 = Vector3d( 0, Head2Y, Head2Z)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMove2, GDB_RT.GLOB)
|
||||
@@ -481,6 +515,10 @@ EgtMove( EgtGetFirstNameInGroup( C2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( C2Id, 'COLLISION'), vtMove2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( B2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( B2Id, 'COLLISION'), vtMove2, GDB_RT.GLOB)
|
||||
if Probe == 2 or Probe == 3 then
|
||||
EgtMove( EgtGetFirstNameInGroup( B2Id, 'SOLID_PROBE'), vtMove2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( B2Id, 'COLLISION_PROBE'), vtMove2, GDB_RT.GLOB)
|
||||
end
|
||||
-- Frese
|
||||
local H21Id = EmtHead {
|
||||
Name = 'H21',
|
||||
@@ -509,6 +547,22 @@ if SecondSaw then
|
||||
Geo = 'H22_HEAD/GEO'}
|
||||
--EgtSetInfo( H22Id, 'ZMAXONROT', '1,190')
|
||||
end
|
||||
-- Tastatore su testa 2
|
||||
local H29Id
|
||||
if Probe == 2 or Probe == 3 then
|
||||
H29Id = EmtHead {
|
||||
Name = 'H29',
|
||||
Parent = 'B2',
|
||||
HSet = 'H29',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( Head2X - 60, Head2Y - 81, Head2Z + 0),
|
||||
TDir = Z_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Rot1W = 0.2,
|
||||
Rot2Stroke = { MinB2, MaxB2},
|
||||
OthColl = {'B2/SOLID', 'C2/SOLID'},
|
||||
Geo = 'H29_HEAD/GEO'}
|
||||
end
|
||||
-- *** Carrelli ***
|
||||
-- Morse
|
||||
local Y1Id = EmtAxis {
|
||||
@@ -938,8 +992,12 @@ end
|
||||
function GetHeadSet( sHead)
|
||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' or sHead == 'H17' then
|
||||
return 1
|
||||
elseif sHead == 'H21' or sHead == 'H22' or sHead == 'H23' then
|
||||
elseif sHead == 'H19' then
|
||||
return 11
|
||||
elseif sHead == 'H21' or sHead == 'H22' then
|
||||
return 2
|
||||
elseif sHead == 'H29' then
|
||||
return 21
|
||||
else
|
||||
return 0
|
||||
end
|
||||
@@ -987,6 +1045,54 @@ function HeadIsChainSaw( sHead)
|
||||
return ( sHead == 'H13')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione che riconosce testa per tastatore
|
||||
function HeadIsProbe( sHead)
|
||||
return ( sHead == 'H19' or sHead == 'H29')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function IsToolCompatibleWithProbe( sToolName, sCurrTool)
|
||||
local bToolIsCompatible = false
|
||||
if sToolName then
|
||||
EgtTdbSetCurrTool( sToolName)
|
||||
local dToolDiam = EgtTdbGetCurrToolParam( MCH_TP.TOTDIAM)
|
||||
local dToolLen = EgtTdbGetCurrToolParam( MCH_TP.TOTLEN)
|
||||
if dToolDiam < 100 and dToolLen < 160 then
|
||||
bToolIsCompatible = true
|
||||
end
|
||||
EgtTdbSetCurrTool( sCurrTool)
|
||||
end
|
||||
return bToolIsCompatible
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetToolNameFromTcPos( sTcPos)
|
||||
local sToolName
|
||||
-- Carico gli utensili sulle barre portautensili
|
||||
local vTcPos = EgtGetAllTcPosNames()
|
||||
if vTcPos then
|
||||
for i = 1, #vTcPos do
|
||||
if vTcPos[i] == sTcPos then
|
||||
local sToolsName = EgtGetToolsInCurrSetupPos( vTcPos[i])
|
||||
sToolName = sToolsName[1]
|
||||
end
|
||||
end
|
||||
end
|
||||
return sToolName
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetToolHead( sToolName)
|
||||
local sHead
|
||||
local sCurrTool = EgtTdbGetCurrToolParam( MCH_TP.NAME)
|
||||
EgtTdbSetCurrTool( sToolName)
|
||||
sHead = EgtTdbGetCurrToolParam( MCH_TP.HEAD)
|
||||
sTcPos = EgtTdbGetCurrToolParam( MCH_TP.TCPOS)
|
||||
EgtTdbSetCurrTool( sCurrTool)
|
||||
return sHead, sTcPos
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione che calcola la posizione Home di Z per la sega a catena dal valore dell'asse virtuale
|
||||
function GetChainSawZHomeFromVirtualAxis( dPosA)
|
||||
@@ -1041,6 +1147,7 @@ function GetZExtra( sHead, dAngV)
|
||||
return 0
|
||||
end
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -1081,7 +1188,6 @@ function GetPY2Light()
|
||||
return ( EgtGetInfo( PY2LightId, 'On') == '1')
|
||||
end
|
||||
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione per resettare tutte le attivazioni della macchina
|
||||
function OnResetMachine()
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
;Index = Type, Description, Default Value
|
||||
; Type : b=boolean, d=double, l=lenght, s=string
|
||||
|
||||
[Probing]
|
||||
0=s,Type,Head
|
||||
|
||||
[Drilling]
|
||||
|
||||
[Sawing]
|
||||
@@ -13,6 +16,9 @@
|
||||
3=d,TrimExt,0
|
||||
4=s,VtFaceUse,0,0,0
|
||||
5=s,EdgesFaceUse,0
|
||||
6=b,PROBE,0
|
||||
7=b,START-PROBE,0
|
||||
8=b,END-PROBE,0
|
||||
|
||||
[Pocketing]
|
||||
0=l,MaxElev,0
|
||||
|
||||
+13
-1
@@ -31,6 +31,8 @@ local GS = {}
|
||||
local PositionTable = {}
|
||||
local SecondSaw = ( EgtGetHeadId( 'H22') ~= nil)
|
||||
local AggreBH = ( EgtGetHeadId( 'H17') ~= nil)
|
||||
local ProbeFirstHead = ( EgtGetHeadId( 'H19') ~= nil)
|
||||
local ProbeSecondHead = ( EgtGetHeadId( 'H29') ~= nil)
|
||||
if SecondSaw then
|
||||
PositionTable = {{Pos = "Pos1", TcPos = "T1", Head = "H12", Group = "G1"},
|
||||
{Pos = "Pos2", TcPos = "T3", Head = "H11", Group = "G1"},
|
||||
@@ -79,7 +81,17 @@ else
|
||||
table.insert( PositionTable, {Pos = "Pos21", TcPos = "T201", Head = "H13", Group = "G2"})
|
||||
end
|
||||
end
|
||||
local UsePositionHead = false
|
||||
-- aggiunta tastatori
|
||||
if ProbeFirstHead then
|
||||
local sIndex = EgtNumToString( #PositionTable + 1)
|
||||
table.insert( PositionTable, {Pos = "Pos"..sIndex, TcPos = "T501", Head = "H19", Group = "G4"})
|
||||
end
|
||||
if ProbeSecondHead then
|
||||
local sIndex = EgtNumToString( #PositionTable + 1)
|
||||
table.insert( PositionTable, {Pos = "Pos"..sIndex, TcPos = "T502", Head = "H29", Group = "G4"})
|
||||
end
|
||||
|
||||
local UsePositionHead = true
|
||||
|
||||
local function IsInGeomSet( ToolHead, PosHead)
|
||||
for GsIndex = 1, #GS do
|
||||
|
||||
Binary file not shown.
Binary file not shown.
+4
-3
@@ -36,6 +36,7 @@
|
||||
4=s,DOUBLE
|
||||
|
||||
[MORTISE_STD]
|
||||
0=b,MORTISE
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
0=th,TH,
|
||||
1=b,MORTISE
|
||||
2=d,STEP
|
||||
3=d,SIDESTEP
|
||||
|
||||
@@ -39,6 +39,7 @@ Versione 2.7g1 (01/07/2025)
|
||||
|
||||
Versione 2.7f1 (04/06/2025)
|
||||
- (SIM) Aggiunta gestione qualità VMILL da impostazioni macchina. Tolto parametro 'CoeffVM'.
|
||||
- (GEN) Prima versione gestione tastatore
|
||||
- (GEN) Aggiunti parametri FMAXPINZE, MAXACC, MINACC configurabili da TS3. Ticket#2052
|
||||
|
||||
Versione 2.7e1 (28/05/2025)
|
||||
|
||||
Reference in New Issue
Block a user