Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d49127232e | |||
| 6627aae2de | |||
| 1b613a97a4 | |||
| 53e583b9d2 | |||
| 12e7ee1e0e | |||
| 8c31dbcf51 | |||
| 4cc33e3b95 | |||
| a4b6a9c93f | |||
| dc4bf6f405 | |||
| fbea0da2dd | |||
| 7284b417a9 | |||
| 28c911ebe1 | |||
| a613078e3f |
+23
-4
@@ -68,13 +68,16 @@ local BeamData = {
|
||||
KIOTP = 5, -- coefficiente moltiplicativo per attacco/uscita lama tangente anzichè perpendicolare
|
||||
MAXDIAM_POCK_CORNER = 31, -- diametro massimo utensile ammesso per tasche con angoli interni
|
||||
USE_LONGCUT = true, -- per i tagli longitudinali usare solo la lavorazione di lama LongCut
|
||||
PRECUT_HEAD = true, -- flag abilitazione pretaglio grezzo a zero in testa
|
||||
PRECUT_TAIL = true, -- flag abilitazione pretaglio grezzo a zero in coda
|
||||
HEAD_DIM_FOR_BH = 125, -- dimensione di ingombro della testa per block haus
|
||||
MAX_LEN_BH_FROM_BOTTOM = 210, -- massima lunghezza lavorabile da un lato di block haus da sotto
|
||||
MAX_DIST_BH_FROM_BOTTOM = 600, -- massima distanza tra naso mandrino e sopra della trave senza collisione
|
||||
ADVANCE_TAIL_CUT = true, -- per spostare prima del taglio di separazione il taglio di coda su pezzi corti con robabile caduta
|
||||
ADVANCE_TAIL_OFFS = 10, -- accorciamento taglio di coda avanzato (minimo 1)
|
||||
DOUBLE_HEAD_DOVETAIL = false, -- flag abilitazione lavorazione mortase a coda di rondine in doppio
|
||||
DOUBLE_HEAD_MORTISE = false, -- flag abilitazione lavorazione mortase in doppio
|
||||
DOUBLE_HEAD_DRILLING = false, -- flag abilitazione forature in doppio
|
||||
PRECUT_HEAD = true, -- flag abilitazione pretaglio grezzo a zero in testa
|
||||
PRECUT_TAIL = true, -- flag abilitazione pretaglio grezzo a zero in coda
|
||||
CLAMP5 = false -- presenza pinza speciale per pezzi piccoli
|
||||
}
|
||||
|
||||
@@ -99,6 +102,8 @@ if EgtExistsFile( sData) then
|
||||
if Machine.Offsets.DOUBLE_HEAD_DOVETAIL then BeamData.DOUBLE_HEAD_DOVETAIL = ( Machine.Offsets.DOUBLE_HEAD_DOVETAIL == 1) end
|
||||
if Machine.Offsets.DOUBLE_HEAD_MORTISE then BeamData.DOUBLE_HEAD_MORTISE = ( Machine.Offsets.DOUBLE_HEAD_MORTISE == 1) end
|
||||
if Machine.Offsets.DOUBLE_HEAD_DRILLING then BeamData.DOUBLE_HEAD_DRILLING = ( Machine.Offsets.DOUBLE_HEAD_DRILLING == 1) end
|
||||
if Machine.Offsets.PRECUT_HEAD_DISABLE then BeamData.PRECUT_HEAD = ( Machine.Offsets.PRECUT_HEAD_DISABLE == 0) end
|
||||
if Machine.Offsets.PRECUT_TAIL_DISABLE then BeamData.PRECUT_TAIL = ( Machine.Offsets.PRECUT_TAIL_DISABLE == 0) end
|
||||
BeamData.MINRAW_S = max( BeamData.MINRAW_S, Machine.Offsets.MINRAW_S or BeamData.MINRAW_S)
|
||||
BeamData.MINRAW_L = max( BeamData.MINRAW_L, Machine.Offsets.MINRAW_L or BeamData.MINRAW_L)
|
||||
BeamData.CUT_EXTRA = Machine.Offsets.CUT_EXTRA or BeamData.CUT_EXTRA
|
||||
@@ -106,8 +111,13 @@ if EgtExistsFile( sData) then
|
||||
BeamData.DIM_STRIP_SMALL = Machine.Offsets.DIM_STRIP_SMALL or BeamData.DIM_STRIP_SMALL
|
||||
BeamData.DIM_TO_CENTER_STRIP = Machine.Offsets.DIM_TO_CENTER_STRIP or BeamData.DIM_TO_CENTER_STRIP
|
||||
BeamData.MAXDIAM_POCK_CORNER = Machine.Offsets.MAXDIAM_POCK_CORNER or BeamData.MAXDIAM_POCK_CORNER
|
||||
if Machine.Offsets.PRECUT_HEAD_DISABLE then BeamData.PRECUT_HEAD = ( Machine.Offsets.PRECUT_HEAD_DISABLE == 0) end
|
||||
if Machine.Offsets.PRECUT_TAIL_DISABLE then BeamData.PRECUT_TAIL = ( Machine.Offsets.PRECUT_TAIL_DISABLE == 0) end
|
||||
BeamData.LONGCUT_ENDLEN = Machine.Offsets.LONGCUT_ENDLEN or BeamData.LONGCUT_ENDLEN
|
||||
BeamData.LONGCUT_MAXLEN = Machine.Offsets.LONGCUT_MAXLEN or BeamData.LONGCUT_MAXLEN
|
||||
BeamData.ADVANCE_TAIL_OFFS = Machine.Offsets.ADVANCE_TAIL_OFFS or BeamData.ADVANCE_TAIL_OFFS
|
||||
BeamData.LEN_VERY_SHORT_PART = Machine.Offsets.LEN_VERY_SHORT_PART or BeamData.LEN_VERY_SHORT_PART
|
||||
BeamData.LEN_SHORT_PART = Machine.Offsets.LEN_SHORT_PART or BeamData.LEN_SHORT_PART
|
||||
BeamData.OVM_MID = Machine.Offsets.OVM_MID or BeamData.OVM_MID
|
||||
if Machine.Offsets.ROT90 ~= nil then BeamData.ROT90 = ( Machine.Offsets.ROT90 == 1) end
|
||||
end
|
||||
if Machine.Trave then
|
||||
BeamData.MIN_WIDTH = Machine.Trave.XMIN or BeamData.MIN_WIDTH
|
||||
@@ -219,6 +229,7 @@ local function GetSetupInfo( sHead)
|
||||
SetupInfo.bIsCSymmetrical = true
|
||||
SetupInfo.dCAxisEncumbrance = 180
|
||||
SetupInfo.bToolOnAggregate = false
|
||||
SetupInfo.Head = {}
|
||||
|
||||
-- testa 5 assi da sopra, dietro
|
||||
if sHead == 'H11' then
|
||||
@@ -235,11 +246,19 @@ local function GetSetupInfo( sHead)
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = { bFront = false, bBack = true}
|
||||
SetupInfo.dMinNz = sin( -45)
|
||||
-- se con aggregato si considera non simmetrico
|
||||
SetupInfo.bIsCSymmetrical = false
|
||||
-- riduzione massimo materiale se usato in tagli orizzontali con affondamento verticale
|
||||
SetupInfo.dMaxMatDecrease = 20
|
||||
-- lama su testa 5 assi da sopra, davanti
|
||||
elseif sHead == 'H22' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
SetupInfo.PreferredSide = { bFront = true, bBack = false}
|
||||
SetupInfo.dMinNz = sin( -45)
|
||||
-- se con aggregato si considera non simmetrico
|
||||
SetupInfo.bIsCSymmetrical = false
|
||||
-- riduzione massimo materiale se usato in tagli orizzontali con affondamento verticale
|
||||
SetupInfo.dMaxMatDecrease = 20
|
||||
-- motosega 1
|
||||
elseif sHead == 'H13' or sHead == 'H23' then
|
||||
SetupInfo.HeadType = { bTop = true, bBottom = false}
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
22=Long2CutSide
|
||||
23=SmallToolContour
|
||||
24=AntiSplintMillCut
|
||||
25=Prof_end
|
||||
|
||||
[Pocketing]
|
||||
1=Pocket
|
||||
@@ -47,6 +48,3 @@
|
||||
|
||||
[Sawing]
|
||||
1=Sawing
|
||||
|
||||
[Probing]
|
||||
1=DTMortise
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
-- 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
|
||||
+200
-348
@@ -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, 60000, 155000) -- feed massima pinze
|
||||
EMT.FMAXPINZE = EgtClamp( MaxFeedPinze or 102000, 20000, 102000) -- 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
|
||||
|
||||
@@ -129,6 +129,11 @@ function OnToolData()
|
||||
local sOut = 'L1='..EgtNumToString( EMT.SMAX, 0)..' L2='..EmtLenToString( EMT.TDIST or ChSawLen, 1)
|
||||
sOut = sOut .. EgtIf( EMT.TCPOS == 'T111', ' G76H9998.2N411N414', ' G76H9998.2N511N514')
|
||||
EmtOutput( '('..sOut..')')
|
||||
-- emissione dati aggregato BlockHaus
|
||||
elseif EMT.HEAD == 'H17' then
|
||||
sPos = EgtIf( #EMT.TCPOS == 2, EMT.TCPOS:gsub( 'T', 'N30'), EMT.TCPOS:gsub( 'T', 'N3'))
|
||||
local sOut = 'L1='..EgtNumToString( EMT.SMAX, 0)..' L2='..EmtLenToString( ( AngTrBHOffs), 1)..' G76H9998.2'..sPos..sPos
|
||||
EmtOutput( '('..sOut..')')
|
||||
-- emissione dati utensile (esclusa sega a catena)
|
||||
else
|
||||
-- output info
|
||||
@@ -142,7 +147,6 @@ function OnToolData()
|
||||
if EMT.TCPOS == 'T201' then
|
||||
sPos = 'N411'
|
||||
else
|
||||
|
||||
sPos = EgtIf( #EMT.TCPOS == 2, EMT.TCPOS:gsub( 'T', 'N30'), EMT.TCPOS:gsub( 'T', 'N3'))
|
||||
end
|
||||
local sOut = 'L1='..EgtNumToString( EMT.SMAX, 0)..' L2='..EmtLenToString( dAddLen + EMT.TTOTLEN, 1)..' G76H9998.2'..sPos..sPos
|
||||
@@ -312,6 +316,8 @@ function OnDispositionEnd()
|
||||
MyOutputNoNum( '(PART UNLOAD)')
|
||||
for i = 1, #EMT.MDCHAR do
|
||||
EmitMoveDataChars( EMT.MDCHAR[i])
|
||||
if EMT.MDCHAR[i].V1 then EMT.V1POS = EMT.MDCHAR[i].V1 end
|
||||
if EMT.MDCHAR[i].V2 then EMT.V2POS = EMT.MDCHAR[i].V2 end
|
||||
end
|
||||
EmitMoveStartChars( 2)
|
||||
-- se dopo c'è scarico spezzone devo mettere attesa termine esecuzione
|
||||
@@ -327,7 +333,8 @@ function OnDispositionEnd()
|
||||
end
|
||||
elseif EMT.SPECUNLOADING then
|
||||
EmtOutput( '(PART SPEC UNLOADING)')
|
||||
EmitBeamHeadData( { T=EMT.L1, Pz5=2})
|
||||
local dAbsHeadPos = EMT.L1pp or EMT.L1
|
||||
EmitBeamHeadData( { T=dAbsHeadPos, Pz5=2})
|
||||
EMT.SPECUNLOADING = nil
|
||||
EMT.W2DELTA = nil
|
||||
-- emissione conclusione pezzo precedente
|
||||
@@ -412,7 +419,6 @@ 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
|
||||
|
||||
@@ -446,7 +452,6 @@ 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
|
||||
@@ -676,8 +681,8 @@ function OnPathStart()
|
||||
EMT.L1pp = EMT.L1op
|
||||
EMT.L2pp = EMT.L2op
|
||||
EMT.L3pp = EMT.L3op
|
||||
EMT.R1pp = EMT.R1p
|
||||
EMT.R2pp = EMT.R2p
|
||||
EMT.R1pp = EMT.R1p or EMT.R1pp
|
||||
EMT.R2pp = EMT.R2p or EMT.R2pp
|
||||
else
|
||||
EMT.L1pp = nil
|
||||
EMT.L2pp = nil
|
||||
@@ -814,8 +819,8 @@ function OnRapid()
|
||||
EMT.IPLGL = false
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
local HomeR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1 or nHSet == 11, 'C1', 'C2'))
|
||||
local HomeR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1 or nHSet == 11, 'B1', 'B2'))
|
||||
local HomeR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'C1', 'C2'))
|
||||
local HomeR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'B1', 'B2'))
|
||||
local PrevR1 = EMT.R1p or EMT.R1pp or HomeR1
|
||||
local PrevR2 = EMT.R2p or EMT.R2pp or HomeR2
|
||||
EmtResetPrev()
|
||||
@@ -825,101 +830,6 @@ 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) 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) 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) 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) 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
|
||||
@@ -1252,8 +1162,8 @@ function OnRapid()
|
||||
EMT.TO_XHOME = nil
|
||||
EMT.L1pp = nil
|
||||
EMT.L3pp = nil
|
||||
PrevR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1 or nHSet == 11, 'C1', 'C2'))
|
||||
PrevR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1 or nHSet == 11, 'B1', 'B2'))
|
||||
PrevR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'C1', 'C2'))
|
||||
PrevR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1, 'B1', 'B2'))
|
||||
end
|
||||
-- calcolo Movimento Pinze (potrebbe richiedere movimento testa in Home)
|
||||
for i = 1, #EMT.AUXCMD do
|
||||
@@ -1268,7 +1178,7 @@ function OnRapid()
|
||||
local nPrevHSet = GetHeadSet( EMT.PREVHEAD)
|
||||
-- vado in parcheggio sempre con utensile precedente
|
||||
if not HeadIsChainSaw( EMT.PREVHEAD) then
|
||||
if nPrevHSet == 1 or nPrevHSet == 11 then
|
||||
if nPrevHSet == 1 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')
|
||||
@@ -1615,91 +1525,85 @@ function OnRapid()
|
||||
end
|
||||
EMT.REFLOC = 0
|
||||
EMT.MCHFIRST = false
|
||||
EMT.PLANEACTIVE = true
|
||||
EMT.ZMAX = false
|
||||
-- se standard
|
||||
elseif EMT.FLAG == 0 or EMT.FLAG == 1 or EMT.FLAG == 2 then
|
||||
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
|
||||
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
|
||||
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 and nHSet~=22, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||
-- forzo successiva emissione assi rotanti
|
||||
EMT.R1p = nil
|
||||
EMT.R2p = nil
|
||||
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
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
sPreMove = ' EC3'
|
||||
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)
|
||||
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
|
||||
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
|
||||
-- se altrimenti risalita a Z max a fine lavorazione
|
||||
elseif EMT.FLAG == 3 then
|
||||
@@ -1708,19 +1612,17 @@ function OnRapid()
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
-- se Split o Presplit lascio agganciata solo la pinza Y2 alla fine dei movimenti
|
||||
local sNextTool = GetNextTool( EMT.MCHID)
|
||||
local sNextTool = GetNextTool( EMT.MCHID, true)
|
||||
-- vado in home se è ultimo movimento ed è ultima lavorazione, se sono con motosega e devo cambiare utensile, oppure se ho la lama
|
||||
local bToXhome = ( IsLastPath( EMT.PATHID) and not sNextTool) or ( EMT.HEAD == 'H23' and EMT.TOOL ~= sNextTool) or ( EMT.HEAD == 'H13' and EMT.TOOL ~= sNextTool) or
|
||||
( 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
|
||||
local bZMax = EmitZmax( true, true, bToXhome, EMT.R1p, EMT.R2p, EMT.MCHSPLIT)
|
||||
EmitZmax( true, true, bToXhome, EMT.R1p, EMT.R2p, EMT.MCHSPLIT)
|
||||
EMT.L3o = CurrL3o
|
||||
-- aggiorno quota finale trave dopo Zmax
|
||||
EMT.L1o = EMT.TPOS
|
||||
if bZMax then
|
||||
EMT.ZMAX = true
|
||||
end
|
||||
EMT.ZMAX = true
|
||||
-- se altrimenti movimento in Home
|
||||
elseif EMT.FLAG == 4 then
|
||||
-- non previsto
|
||||
@@ -1735,119 +1637,86 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function OnLinear()
|
||||
-- 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)
|
||||
|
||||
-- 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
|
||||
EmitMoveDataHead( GetHeadSet( EMT.HEAD), { X=-EMT.L2p, Z=ProbePosZ, B=EMT.R2p, C=EMT.R1p})
|
||||
EmitMoveStartHead( GetHeadSet( EMT.HEAD))
|
||||
EmitMoveWaitHead( GetHeadSet( EMT.HEAD))
|
||||
end
|
||||
|
||||
-- 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
|
||||
-- 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()
|
||||
|
||||
-- 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))
|
||||
end
|
||||
EmtOutput( "G157 EE1")
|
||||
end
|
||||
|
||||
-- aggiorno valori come precedenti
|
||||
EMT.TPOS = EMT.L1o
|
||||
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))
|
||||
end
|
||||
EmtOutput( "G157 EE1")
|
||||
end
|
||||
|
||||
-- aggiorno valori come precedenti
|
||||
EMT.TPOS = EMT.L1o
|
||||
EmtUpdatePrev()
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -1874,8 +1743,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 and nHSet~=22, ' EU1', ' EU2')..sDouFlag..' EF'..GetFmaxClamp())
|
||||
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')
|
||||
@@ -2557,6 +2426,9 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetV1ToCloseNum( UseCurrV1)
|
||||
if EMT.MCHPRECUT or EMT.MCHCUT then
|
||||
return false
|
||||
end
|
||||
--EmtOutput( string.format( 'L1m=%.3f L1M=%.3f', EMT.MAXMIN[1], EMT.MAXMAX[1]))
|
||||
--EmtOutput( string.format( 'LB=%.3f LT=%.3f', EMT.LB, EMT.LT))
|
||||
local dV1Pos
|
||||
@@ -2610,13 +2482,12 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetDiffRotAxAtStart( R1, R2)
|
||||
local nHSet = GetHeadSet( EMT.HEAD)
|
||||
local HomeR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1 or nHSet == 11, 'C1', 'C2'))
|
||||
local HomeR1 = EgtGetAxisHomePos( EgtIf( nHSet == 1, '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 or nHSet == 11, 'B1', 'B2'))
|
||||
local HomeR2 = EgtGetAxisHomePos( EgtIf( nHSet == 1, '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
|
||||
@@ -2632,12 +2503,12 @@ function MyAdjustLinearAxes()
|
||||
|
||||
if EMT.REFLOC then
|
||||
local vtE
|
||||
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' or EMT.HEAD == 'H19' then
|
||||
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' 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' or EMT.HEAD == 'H29' then
|
||||
elseif EMT.HEAD == 'H21' or EMT.HEAD == 'H22' then
|
||||
local dAddLen = EgtIf( EMT.HEAD == 'H22', -Saw2OffsZ, 0)
|
||||
local Len = EMT.TLEN + dAddLen + Mill2Offs
|
||||
local LenRef = Mill2Offs
|
||||
@@ -2650,10 +2521,15 @@ function MyAdjustLinearAxes()
|
||||
local Len = ( EMT.TDIST or ChSawLen) + Mill2Offs
|
||||
local LenRef = Mill2Offs
|
||||
vtE = Vector3d( EMT.ADIR) * Len - Z_AX() * LenRef
|
||||
elseif EMT.HEAD == 'H17' then
|
||||
local LenAux = AngTrBHOffs + MillOffs
|
||||
local LenRef = MillOffs
|
||||
local vtAux = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3)
|
||||
vtE = vtAux * LenAux - Z_AX() * LenRef
|
||||
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 EMT.HEAD == 'H19' then
|
||||
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' or EMT.HEAD == 'H13' or EMT.HEAD == 'H15' or sHead == 'H17' then
|
||||
EMT.L1 = EMT.L1 - vtE:getX()
|
||||
EMT.L2 = EMT.L2 - DeltaTabY - vtE:getY()
|
||||
EMT.L3 = EMT.L3 - DeltaTabZ - vtE:getZ()
|
||||
@@ -2766,6 +2642,9 @@ function GetToolRadLen()
|
||||
-- se sega a catena
|
||||
elseif HeadIsChainSaw( EMT.HEAD) then
|
||||
return EMT.TLEN, ( EMT.TDIST or ChSawLen)
|
||||
-- se aggregato BlockHaus
|
||||
elseif EMT.HEAD == 'H17' then
|
||||
return EMT.TDIAM / 2, AngTrBHOffs
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2859,40 +2738,13 @@ 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 or nHSet == 11 then
|
||||
if nHSet == 1 then
|
||||
-- posizioni sicure
|
||||
local dMaxZ1 = EgtGetAxisMax( 'Z1')
|
||||
local dSafeX1 = EgtGetAxisHomePos( 'X1')
|
||||
@@ -2966,9 +2818,7 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
||||
local MovH = { Z = EgtIf( dZref > EMT.L3o, dZref, EMT.L3o)}
|
||||
MovH.X = -dXPos ; MovH.B = EgtClamp( PrevR2, -90, 90) ; MovH.C = PrevR1 ;
|
||||
EmitMoveDataHead( 1, MovH)
|
||||
if EMT.HEAD == 'H12' and ( abs( dSafeC1 - PrevR1) > 30.1 or abs( dSafeB1 - PrevR2) > 30.1) or not( bProgress) then
|
||||
EmitMoveDataHead( 1, { Z=dMaxZ1, B=0})
|
||||
end
|
||||
EmitMoveDataHead( 1, { Z=dMaxZ1, B=0})
|
||||
EmitMoveDataHead( 1, { C=dSafeC1})
|
||||
EmitMoveDataHead( 1, { B=dSafeB1})
|
||||
EmitMoveDataHead( 1, { Z=dMaxZ1})
|
||||
@@ -3058,7 +2908,6 @@ function EmitZmax( bReset, bEnd, bXhome, PrevR1, PrevR2, bSplitCut, bUsePrevDelt
|
||||
EmitMoveWaitHead( 2)
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -3088,7 +2937,7 @@ function EmitXhome()
|
||||
-- gruppo della testa
|
||||
local nHSet = GetHeadSet( EMT.HEAD)
|
||||
-- se testa 1
|
||||
if nHSet == 1 or nHSet == 11 then
|
||||
if nHSet == 1 then
|
||||
local dMaxZ1 = EgtGetAxisMax( 'Z1')
|
||||
local dSafeX1 = EgtGetAxisHomePos( 'X1')
|
||||
local dSafeZ1 = EgtGetAxisHomePos( 'Z1')
|
||||
@@ -3120,15 +2969,18 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function EmitResetMachining()
|
||||
if not EMT.ISPROBING then
|
||||
if ( EMT.TOOL ~= GetNextTool( EMT.MCHID) and IsLastPath( EMT.PATHID)) or GetSpecUnloading( EMT.PATHID) or GetFall( EMT.PATHID) then
|
||||
-- se da MLDE parametro non settato, o settato a true, scrivo il comando arresto mandrino
|
||||
if WriteM05Command == nil or WriteM05Command then
|
||||
EmtOutput( 'M05')
|
||||
end
|
||||
if EMT.PLANEACTIVE 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')
|
||||
-- altrimenti spegnimento dipende da parametro
|
||||
elseif ( EMT.TOOL ~= GetNextTool( EMT.MCHID, false) and IsLastPath( EMT.PATHID)) or GetSpecUnloading( EMT.PATHID) or GetFall( EMT.PATHID) then
|
||||
EmtOutput( 'M05')
|
||||
end
|
||||
local sOut = 'G157 EA1'
|
||||
EmtOutput( sOut)
|
||||
-- piano non più attivo
|
||||
EMT.PLANEACTIVE = false
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3280,7 +3132,7 @@ function PreselectNextDiffHead( nMchId, sHead)
|
||||
EmitMoveStartHead( 1)
|
||||
EmitMoveWaitHead( 1)
|
||||
end
|
||||
-- Emetto preselezione (non ammessa per sega a catena H13 e H23)
|
||||
-- Emetto preselezione (non ammessa per sega a catena H13 e H23 e aggregato BlockHaus H17)
|
||||
if sNextHead == 'H11' then
|
||||
EmitMoveDataHead( 1, { X=-ParkX1, Z=MaxZ1, B=ParkB1, C=ParkC1, TPos=AdjustTcPos( false, sNextTcPos)})
|
||||
EmitMoveStartHead( 1)
|
||||
|
||||
+53
-249
@@ -88,10 +88,6 @@ 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
|
||||
@@ -241,9 +237,9 @@ function OnSimulDispositionStart()
|
||||
end
|
||||
end
|
||||
-- determino la risoluzione dello Zmap
|
||||
local dTol = 4.00
|
||||
local dTol = 4.71
|
||||
if EmtGetVMillStep then
|
||||
dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), 4.00)
|
||||
dTol = EmtGetVMillStep( b3Raw:getDimX(), b3Raw:getDimY(), b3Raw:getDimZ(), 4.71)
|
||||
else
|
||||
local dArea = b3Raw:getDimX() * b3Raw:getDimY() + b3Raw:getDimX() * b3Raw:getDimZ() + b3Raw:getDimY() * b3Raw:getDimZ()
|
||||
if dArea < 0.075e6 then
|
||||
@@ -507,11 +503,9 @@ 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 bIsFirstHead then
|
||||
if nSetHead == 1 then
|
||||
EgtSetAxisPos( 'X2', MinX2)
|
||||
else
|
||||
EgtSetAxisPos( 'X1', MaxX1)
|
||||
@@ -519,10 +513,8 @@ function OnSimulToolSelect( dPosA)
|
||||
end
|
||||
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
|
||||
if HeadIsChainSaw( EMT.HEAD) then
|
||||
-- se non Progress, apro le paratie
|
||||
if not Progress then
|
||||
ExecParkRoller( nil, nil, nil, nil, false, IsStartPhase( EMT.PHASE))
|
||||
end
|
||||
-- apro le paratie
|
||||
ExecParkRoller( nil, nil, nil, nil, false, IsStartPhase( EMT.PHASE))
|
||||
-- valore dell'asse virtuale
|
||||
dPosA = dPosA or GetNextChainSawingVirtualAxis( EMT.MCHID)
|
||||
-- imposto il valore di A
|
||||
@@ -549,75 +541,6 @@ 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) 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) 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) 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) 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( '')
|
||||
@@ -686,57 +609,10 @@ 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)) then
|
||||
;
|
||||
elseif nProbeHead == 21 and not( IsToolCompatibleWithProbe( EMT.PREVTOOL_H2)) 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 bSkipToolChange or ( ( EMT.NEXTTOOL == EMT.PREVTOOL_H1 or EMT.NEXTTOOL == EMT.PREVTOOL_H2) and not HeadIsChainSaw( EMT.NEXTHEAD)) then return end
|
||||
if ( 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
|
||||
@@ -745,7 +621,7 @@ function OnSimulToolDeselect( dPrevA)
|
||||
-- se ci sono due teste
|
||||
if EgtGetHeadId( 'H21') then
|
||||
local nSetHead = GetHeadSet( EMT.NEXTHEAD)
|
||||
if nSetHead == 1 or nSetHead == 11 then
|
||||
if nSetHead == 1 then
|
||||
-- porto in home testa 1
|
||||
SimulMoveAxis( 'X1', MaxX1, MCH_SIM_STEP.RAPID)
|
||||
-- deposito utensile fresa
|
||||
@@ -770,7 +646,7 @@ function OnSimulToolDeselect( dPrevA)
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||
-- deposito utensile lama
|
||||
elseif EMT.PREVHEAD_H1 == 'H12' then
|
||||
elseif EMT.PREVHEAD_H1 == 'H12' or EMT.PREVHEAD_H1 == 'H17' then
|
||||
-- simulo movimento
|
||||
SimulMoveAxes( 'B1', ParkB1, MCH_SIM_STEP.RAPROT, 'C1', ParkC1, MCH_SIM_STEP.RAPROT)
|
||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||
@@ -801,7 +677,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 nSetHead == 2 and EMT.PREVHEAD_H2 then
|
||||
elseif EMT.PREVHEAD_H2 then
|
||||
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
end
|
||||
@@ -832,18 +708,18 @@ function OnSimulToolDeselect( dPrevA)
|
||||
SimulMoveAxis( 'Z2', ParkCSawZ2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- per prossima testa gruppo 1
|
||||
elseif nNextSetHead == 1 then
|
||||
else
|
||||
-- visualizzo utensile su TcPos
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H1, true)
|
||||
-- nascondo l'utensile sulla testa
|
||||
EgtSetMode( EgtGetHeadId( EMT.PREVHEAD_H1 or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||
-- prendo utensile fresa o lama
|
||||
if EMT.NEXTHEAD == 'H11' or EMT.NEXTHEAD == 'H12' then
|
||||
if EMT.NEXTHEAD == 'H11' or EMT.NEXTHEAD == 'H12' or EMT.NEXTHEAD == 'H17' then
|
||||
local MyParkX1 = EgtIf( GetHeadTCSet( EMT.NEXTHEAD, EMT.NEXTTCPOS) == 'Head1_TC1', ParkX1, ParkFrnX1)
|
||||
local MyParkB1 = ParkB1
|
||||
local MyParkC1 = ParkC1
|
||||
-- se ho due teste oppure è progress, significa che ho CU verticale
|
||||
if EgtGetHeadId('H21') or bProgress then
|
||||
if EgtGetHeadId('H21') or Progress then
|
||||
MyParkB1 = EgtIf( GetHeadTCSet( EMT.NEXTHEAD, EMT.NEXTTCPOS) == 'Head1_TC1', ParkB1, ParkFrnB1)
|
||||
MyParkC1 = EgtIf( GetHeadTCSet( EMT.NEXTHEAD, EMT.NEXTTCPOS) == 'Head1_TC1', ParkC1, ParkFrnC1)
|
||||
-- altrimenti su one CU speciale motosega-utensile lungo
|
||||
@@ -894,6 +770,7 @@ function OnSimulMachiningStart()
|
||||
EMT.VMRS = ( EMT.MCHTYPE ~= MCH_MY.DRILLING and not EMT.MCHUSERNOTES:find( 'VMRS=0;', 1, true))
|
||||
EMT.MCHSPLIT = ( EMT.MCHUSERNOTES:find( 'Split;', 1, true) ~= nil)
|
||||
EMT.MCHPRECUT = ( EMT.MCHUSERNOTES:find( 'Precut;', 1, true) ~= nil)
|
||||
EMT.MCHCUT = ( EMT.MCHUSERNOTES:find( 'Cut;', 1, true) ~= nil)
|
||||
-- recupero TASKID della feature lavorata
|
||||
local vId = EgtGetMachiningGeometry()
|
||||
if vId and #vId > 0 and #vId[1] > 0 then
|
||||
@@ -964,7 +841,6 @@ 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
|
||||
@@ -1088,7 +964,12 @@ function OnSimulMoveStart()
|
||||
-- pinza 5
|
||||
if EMT.W2DELTA then
|
||||
EMT.A5n = 'W'
|
||||
EMT.A5m = 'T'
|
||||
local dPosQW = EgtGetAxisPos( 'QW') or 0
|
||||
if dPosQW < 1 then
|
||||
EMT.A5m = nil
|
||||
else
|
||||
EMT.A5m = 'T'
|
||||
end
|
||||
EMT.A5 = EMT.L1 + EMT.W2DELTA - EMT.A4
|
||||
VerifyWStroke( EMT.A5)
|
||||
end
|
||||
@@ -1176,9 +1057,9 @@ function OnSimulMoveStart()
|
||||
end
|
||||
-- altrimenti sega a catena
|
||||
else
|
||||
local dPosA = GetCurrChainSawingVirtualAxis()
|
||||
-- se anche precedente con sega a catena ma depositata, devo riprenderla
|
||||
if EMT.CHSAW_OUT then
|
||||
local dPosA = GetCurrChainSawingVirtualAxis()
|
||||
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
||||
OnSimulToolDeselect()
|
||||
EgtLoadTool( EMT.HEAD, 1, EMT.TOOL)
|
||||
@@ -1207,7 +1088,7 @@ function OnSimulMoveStart()
|
||||
else
|
||||
if GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC2' then
|
||||
-- se movimento iniziale da Zmax con lama o fresa
|
||||
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' then
|
||||
if EMT.HEAD == 'H11' or EMT.HEAD == 'H12' or EMT.HEAD == 'H17' then
|
||||
if EMT.ZMAX or EMT.FLAG == 1 or ( EMT.FLAG == 2 and EMT.FLAG2 == 1) then
|
||||
--EgtOutBox( 'Flag 2,1', 'Info Rapid')
|
||||
local bMoveZbeforeX = false
|
||||
@@ -1242,9 +1123,9 @@ function OnSimulMoveStart()
|
||||
end
|
||||
-- altrimenti sega a catena (H13 o H15)
|
||||
else
|
||||
local dPosA = GetCurrChainSawingVirtualAxis()
|
||||
-- se anche precedente con sega a catena ma depositata, devo riprenderla
|
||||
if EMT.CHSAW_OUT then
|
||||
local dPosA = GetCurrChainSawingVirtualAxis()
|
||||
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
||||
OnSimulToolDeselect()
|
||||
EgtLoadTool( EMT.HEAD, 1, EMT.TOOL)
|
||||
@@ -1318,9 +1199,9 @@ function OnSimulMoveStart()
|
||||
end
|
||||
-- altrimenti sega a catena
|
||||
else
|
||||
local dPosA = GetCurrChainSawingVirtualAxis()
|
||||
-- se anche precedente con sega a catena ma depositata, devo riprenderla
|
||||
if EMT.CHSAW_OUT then
|
||||
local dPosA = GetCurrChainSawingVirtualAxis()
|
||||
EgtSetMode( EgtGetHeadId( EMT.HEAD), GDB_MD.HIDDEN)
|
||||
OnSimulToolDeselect()
|
||||
EgtLoadTool( EMT.HEAD, 1, EMT.TOOL)
|
||||
@@ -1466,7 +1347,7 @@ function OnSimulMoveEnd()
|
||||
-- eventuale rimozione sfridi
|
||||
ExecRemoveScraps()
|
||||
-- se Split o Presplit lascio agganciata solo la pinza Y2 alla fine dei movimenti
|
||||
local sNextTool = GetNextTool( EMT.MCHID)
|
||||
local sNextTool = GetNextTool( EMT.MCHID, true)
|
||||
-- vado in home se è ultimo movimento ed è ultima lavorazione, se sono con motosega e devo cambiare utensile, oppure se ho la lama
|
||||
local bToXhome = ( IsLastPath( EMT.PATHID) and not sNextTool) or ( EMT.HEAD == 'H23' and EMT.TOOL ~= sNextTool) or ( EMT.HEAD == 'H13' and EMT.TOOL ~= sNextTool) or
|
||||
( EMT.HEAD == 'H12' and EMT.TOOL ~= sNextTool ) or ( EMT.HEAD == 'H22' and EMT.TOOL ~= sNextTool) or EMT.MCHSPLIT
|
||||
@@ -1600,7 +1481,7 @@ function ExecAuxCmd( sCmd, bPathStart)
|
||||
ExecMoveHome( Cmd[2] == '1', EgtIf( bPathStart, false, EMT.MCHSPLIT))
|
||||
elseif Cmd[1] == '11' then
|
||||
local bClose = Cmd[2] ~= '0'
|
||||
if bPathStart and EMT.MCHSPLIT and not EMT.FALL and GetPY2Light() then bClose = false end
|
||||
if bPathStart and EMT.MCHSPLIT and not ( EMT.FALL or EMT.TO_FALL) and GetPY2Light() then bClose = false end
|
||||
ExecMovePY1( bClose)
|
||||
elseif Cmd[1] == '12' then
|
||||
ExecMovePY2( Cmd[2] ~= '0')
|
||||
@@ -1734,50 +1615,16 @@ 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( bIsFirstHead, 'X1', 'X2'))
|
||||
local CurrZ = EgtGetAxisPos( EgtIf( bIsFirstHead, 'Z1', 'Z2'))
|
||||
local CurrC = EgtGetAxisPos( EgtIf( bIsFirstHead, 'C1', 'C2'))
|
||||
local CurrB = EgtGetAxisPos( EgtIf( bIsFirstHead, 'B1', 'B2'))
|
||||
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'))
|
||||
-- posizioni home degli assi testa
|
||||
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'))
|
||||
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'))
|
||||
-- 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
|
||||
@@ -1788,7 +1635,7 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
||||
ExecParkRoller( nil, nil, nil, nil, bMchSplit, bAgg)
|
||||
end
|
||||
-- se testa 1
|
||||
if bIsFirstHead then
|
||||
if nSetHead == 1 then
|
||||
-- se fresa o lama
|
||||
if GetHeadTCSet( EMT.HEAD, EMT.TCPOS) == 'Head1_TC1' then
|
||||
if not HeadIsChainSaw( EMT.HEAD) then
|
||||
@@ -1832,14 +1679,12 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
||||
SimulMoveAxes( 'X1', HomeX, MCH_SIM_STEP.RAPID, 'C1', HomeC, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
else
|
||||
-- se sega a catena
|
||||
-- se fresa o lama
|
||||
if not HeadIsChainSaw( EMT.HEAD) then
|
||||
if abs( HomeC - CurrC) > 0.1 or abs( HomeB - CurrB) > 0.1 then
|
||||
local dZref = HomeZ + GetZExtra( EMT.HEAD, CurrB)
|
||||
SimulMoveAxes( 'Z1', EgtIf( dZref > CurrZ, dZref, CurrZ), MCH_SIM_STEP.RAPID, 'B1', EgtClamp( CurrB, -90, 90), MCH_SIM_STEP.COLLROT)
|
||||
if EMT.HEAD == 'H12' and ( abs( HomeC - CurrC) > 30.1 or abs( HomeB - CurrB) > 30.1) or not( bProgress) then
|
||||
SimulMoveAxes( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID, 'B1', 0, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
SimulMoveAxes( 'Z1', MaxZ1, MCH_SIM_STEP.RAPID, 'B1', 0, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'C1', HomeC, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxis( 'B1', HomeB, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
@@ -1885,13 +1730,13 @@ function ExecMoveZmax( bMchSplit, btoXHome)
|
||||
EMT.XHOME = true
|
||||
SimulMoveAxis( 'X2', ParkX2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
-- altrimenti sega a catena
|
||||
-- altrimenti sega a catena
|
||||
else
|
||||
SimulMoveAxes( 'Z2', HomeZ, MCH_SIM_STEP.RAPID, 'B2', HomeB, MCH_SIM_STEP.COLLROT)
|
||||
if EMT.R3 and abs( EMT.R3) < 0.1 then
|
||||
SimulMoveAxis( 'Z2', ParkCSawZ2, MCH_SIM_STEP.RAPID)
|
||||
end
|
||||
SimulMoveAxes( 'X2', HomeX, MCH_SIM_STEP.RAPID, 'C2', HomeC, MCH_SIM_STEP.COLLROT)
|
||||
SimulMoveAxes( 'X2', ParkCSawX2, MCH_SIM_STEP.RAPID, 'C2', HomeC, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
end
|
||||
EMT.ZMAX = true
|
||||
@@ -2363,6 +2208,9 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetV1ToClose()
|
||||
if EMT.MCHPRECUT or EMT.MCHCUT then
|
||||
return false
|
||||
end
|
||||
--EgtOutLog( string.format( 'L1m=%.3f L1M=%.3f V2NP=%.3f LB=%.3f', EMT.MAXMIN[1], EMT.MAXMAX[1], EMT.V2NEXTPOS, EMT.LB))
|
||||
--EgtOutLog( string.format( 'LB=%.3f LT=%.3f', EMT.LB, EMT.LT or 0))
|
||||
return ( EMT.MAXMAX[1] <= EMT.V1NEXTPOS + RollCageMin and EMT.MAXMIN[1] + EMT.LB >= EMT.V1NEXTPOS + RollCageMax)
|
||||
@@ -2377,11 +2225,17 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function ShowToolInTcPos( sTcPos, bShow)
|
||||
-- recupero identificativo della posizione sul TC
|
||||
local TcPosId = EgtGetTcPosId( sTcPos or '')
|
||||
if not TcPosId then return end
|
||||
-- recupero il gruppo dell'utensile
|
||||
local TcExitId = EgtGetFirstNameInGroup( EgtGetTcPosId( sTcPos or '') or GDB_ID.NULL, 'T1')
|
||||
local TcExitId = EgtGetFirstNameInGroup( TcPosId or GDB_ID.NULL, 'T1')
|
||||
if not TcExitId then return end
|
||||
-- imposto lo stato di visualizzazione
|
||||
EgtSetStatus( TcExitId, EgtIf( bShow, GDB_ST.ON, GDB_ST.OFF))
|
||||
-- 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
|
||||
|
||||
---------------------------------------------------------------------
|
||||
@@ -2439,56 +2293,6 @@ function LoadNextTool( nHSet, sTcPosDef, bFirst)
|
||||
return sTool
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function IsToolCompatibleWithProbe( sToolName)
|
||||
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( EMT.TOOL)
|
||||
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
|
||||
|
||||
---------------------------------------------------------------------
|
||||
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 ***
|
||||
---------------------------------------------------------------------
|
||||
@@ -2895,7 +2699,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', '501'}
|
||||
TCPOS_1A = { 'T1', 'T3', 'T4', 'T5', 'T6', 'T7', 'T8', 'T9', 'T10'}
|
||||
TCPOS_1B = { 'T101'}
|
||||
TCPOS_2A = { 'T11', 'T12', 'T13', 'T14', 'T15', 'T16', 'T17', 'T18', 'T19', 'T20'}
|
||||
TCPOS_2B = { 'T111'}
|
||||
@@ -2903,7 +2707,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', '502'}
|
||||
TCPOS_2A = { 'T11', 'T12', 'T13', 'T14', 'T15', 'T16', 'T17', 'T18', 'T19', 'T20'}
|
||||
end
|
||||
for _, sVal in ipairs( TCPOS_1A) do
|
||||
if sVal == sTcPos then return 1, 1 end
|
||||
@@ -3022,7 +2826,7 @@ function GetNextChainSawingVirtualAxis( MchId)
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetNextTool( nMchId)
|
||||
function GetNextTool( nMchId, bResetOnStart)
|
||||
-- inizializzo prossimo utensile
|
||||
local sNextTool
|
||||
-- recupero lavorazione successiva
|
||||
@@ -3030,7 +2834,7 @@ function GetNextTool( nMchId)
|
||||
while nNextMchId do
|
||||
-- se la prossima lavorazione è lo start di un altro pezzo, faccio finta che cambia utensile in modo che vada in parcheggio con utensili speciali
|
||||
if EgtGetOperationType( nNextMchId) == MCH_OY.DISP then
|
||||
if IsStartOrRestPhase( EMT.PHASE+1) then
|
||||
if IsStartOrRestPhase( EMT.PHASE+1) and bResetOnStart then
|
||||
return nil
|
||||
end
|
||||
else
|
||||
@@ -3055,7 +2859,7 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function RollerParkingNeeded( sHead, dAng1p, dAng2p, dAng1, dAng2)
|
||||
if sHead == 'H11' or sHead == 'H12' or HeadIsChainSaw( sHead) then
|
||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H17' or HeadIsChainSaw( sHead) then
|
||||
return ( abs( dAng1 - dAng1p) > 1 or ( abs( dAng2 - dAng2p) > 1 and abs( dAng1 % 180.0) > 1))
|
||||
elseif sHead == 'H21' or sHead == 'H22' or HeadIsChainSaw( sHead) then
|
||||
return ( abs( dAng1 - dAng1p) > 1 or ( abs( dAng2 - dAng2p) > 1 and abs( dAng1 % 180.0) > 1))
|
||||
|
||||
+18
-19
@@ -4,12 +4,6 @@
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- *** Generic Machinings ***
|
||||
---------------------------------------------------------------------
|
||||
require( 'EmtGenMachining')
|
||||
---------------------------------------------------------------------
|
||||
|
||||
-- Carico libreria
|
||||
local BD = require( 'BeamData')
|
||||
|
||||
@@ -78,7 +72,7 @@ function OnSpecialGetMaxZ()
|
||||
local vMZ = {{ Tz=0.85, Ez=390}, { Tz=0.5, Ez=280}, { Tz=-0.01, Ez=160}, { Tz=-0.5, Ez=1}, { Tz=-0.61, Ez=1}}
|
||||
EMC.MAXZ = ParkZ1 + CalcExtraZ( vtTpZm, vtT, vMZ)
|
||||
end
|
||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC1' then
|
||||
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
|
||||
if vtTp:getX() > 0.4 and vtT:getX() > 0.4 then
|
||||
if bBSameSign and abs( EMC.R1 - EMC.R1p) < 165 then
|
||||
EMC.MAXZ = MaxZ1 - EgtIf( abs( EMC.R2) < 90.1 and abs( EMC.R2p) < 90.1, 0, 130)
|
||||
@@ -179,7 +173,7 @@ function OnSpecialMoveZup()
|
||||
if EMC.HEAD == 'H11' or EMC.HEAD == 'H21' then
|
||||
;
|
||||
-- se lama posizionata su CU prossimo a testa 1
|
||||
elseif EMC.HEAD == 'H12' and sHead_TC == 'Head1_TC1' then
|
||||
elseif ( EMC.HEAD == 'H12' or EMC.HEAD == 'H17') and sHead_TC == 'Head1_TC1' then
|
||||
-- se inclinata oltre 90 gradi e interferisce con la trave
|
||||
if ( EMC.R2 > 87.9 and ( EMC.R1 < 15.0 or EMC.R1 > 180.0)) or ( EMC.R2 < -87.9 and ( EMC.R1 > -15.0 and EMC.R1 < 180.0)) then
|
||||
local dZref = dZmax + min( 330 * vtT:getZ(), 0) + 260 * ( 1 - sqrt( 1- vtT:getZ() * vtT:getZ()))
|
||||
@@ -229,7 +223,7 @@ local MIN_BACK_ENG_V = 115 -- ingombro asse Z a sinistra
|
||||
local AGG_V = MinDeltaYV -- ingombro rulli pressori + sicurezza
|
||||
local MIN_CLAMP_5 = 150 -- minima presa con la pinza speciale (pinza 5)
|
||||
local SIC_CLAMP_5 = 50 -- sicurezza testa da pinza speciale
|
||||
local MAX_BACK_CLAMP_5 = 320 -- massima sporgenza posteriore del pezzo da pinza speciale
|
||||
local MAX_BACK_CLAMP_5 = EgtClamp( MaxBackClamp5 or 320, 200, 380) -- massima sporgenza posteriore del pezzo da pinza speciale
|
||||
|
||||
----------------------- Variabili -----------------------------------
|
||||
local Test = false
|
||||
@@ -1113,10 +1107,8 @@ function SpecialCalcMachiningEncumbrance( nMchId, bPreCut)
|
||||
end
|
||||
-- Calcolo dell'ingombro della testa rispetto allo Zero Macchina
|
||||
local b3Enc
|
||||
local nSetHead = GetHeadSet( sHead)
|
||||
local bIsFirstHead = ( nSetHead == 1 or nSetHead == 11)
|
||||
|
||||
if bIsFirstHead then
|
||||
|
||||
if sHead ~= 'H21' and sHead ~= 'H22' and sHead ~= 'H23' then
|
||||
EgtSetAxisPos( 'C1', vAxes[4])
|
||||
EgtSetAxisPos( 'B1', vAxes[5])
|
||||
if sHead == 'H13' or sHead == 'H15' then
|
||||
@@ -1561,8 +1553,11 @@ function SpecCalcUnload()
|
||||
EgtOutLog( ' *[U1]', 1)
|
||||
end
|
||||
local vCmd = {}
|
||||
-- Tipo di scarico
|
||||
local bStdUl = ( not MaxUnloadLen or MaxUnloadLen < 1 or EMC.LB - EMC.HOVM < MaxUnloadLen + 1)
|
||||
|
||||
-- Commento
|
||||
table.insert( vCmd, { 0, 'Unloading'})
|
||||
table.insert( vCmd, { 0, 'Unloading', EgtIf( bStdUl, 'Unloading', 'Manual Unloading')})
|
||||
-- posizionamento sicuro teste e rulli (non serve ?)
|
||||
--table.insert( vCmd, { 4, 0})
|
||||
-- Se pinza Y chiusa, la apro
|
||||
@@ -1570,11 +1565,15 @@ function SpecCalcUnload()
|
||||
table.insert( vCmd, { 11, 0})
|
||||
EMC.CNT = nil
|
||||
end
|
||||
-- Sposto il pezzo in posizione di scarico
|
||||
local dFinT = UnloadT - EMC.LB
|
||||
local dFinY2 = dFinT + EMC.Y2DELTA
|
||||
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
||||
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
||||
-- Se non supero la lunghezza massima di scarico, sposto il pezzo in posizione di scarico
|
||||
if bStdUl then
|
||||
local dFinT = UnloadT - EMC.LB
|
||||
local dFinY2 = dFinT + EMC.Y2DELTA
|
||||
table.insert( vCmd, { 2, 'T', dFinT, 'Y2', dFinY2})
|
||||
EgtOutLog( ' Y2PosF=' .. EgtNumToString( dFinY2), 1)
|
||||
else
|
||||
table.insert( vCmd, { 1, 'Y2', MaxY2})
|
||||
end
|
||||
-- apro la morsa
|
||||
table.insert( vCmd, { 12, 0})
|
||||
-- riporto il carrello in home
|
||||
|
||||
Binary file not shown.
+3
-11
@@ -91,13 +91,11 @@ 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
|
||||
@@ -110,12 +108,12 @@ H11.1=Standard.nge
|
||||
H11.1:MILL_NOTIP=MillNoTip.nge
|
||||
H12.1=Saw.nge
|
||||
H13.1=ChainSaw.nge
|
||||
H17.1=AngTransmBH.nge
|
||||
H21.1=Standard.nge
|
||||
H21.1:MILL_NOTIP=MillNoTip.nge
|
||||
H22.1=Saw.nge
|
||||
|
||||
[Machinings]
|
||||
Probing=1
|
||||
Drilling=1
|
||||
Sawing=1
|
||||
Milling=1
|
||||
@@ -128,8 +126,6 @@ SawFinishing=0
|
||||
[Machining]
|
||||
InitScript=InitMach.lua
|
||||
ExitScript=ExitMach.lua
|
||||
[Probing]
|
||||
PrbScript1=StdProbe
|
||||
|
||||
[Disposition]
|
||||
;InitScript=InitDisp.lua
|
||||
@@ -141,14 +137,12 @@ H11=6608
|
||||
H12=6615
|
||||
; Chainsaw
|
||||
H13=6616
|
||||
; Probe
|
||||
H19=6618
|
||||
; Angular transmission
|
||||
H17=6617
|
||||
; Second 5 axis head
|
||||
H21=6620
|
||||
; Second 5 axis saw
|
||||
H22=6623
|
||||
; Probe
|
||||
H29=6618
|
||||
|
||||
[SetUp]
|
||||
Default=Standard
|
||||
@@ -161,5 +155,3 @@ WinPlace=0,514,138,628,810
|
||||
Enable=1
|
||||
Save=0
|
||||
|
||||
[ToolTrace]
|
||||
Enable=1
|
||||
+52
-74
@@ -44,8 +44,8 @@
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '2.7f1_DEV15'
|
||||
PP_NVER = '2.7.6.1'
|
||||
PP_VER = '2.7h2_DEV1'
|
||||
PP_NVER = '2.7.8.2'
|
||||
MIN_MACH_VER = '2.5k1'
|
||||
MACH_NAME = string.match( EgtGetCurrMachineDir(), "[^\\]+$") -- si ricava il nome della macchina dal direttorio
|
||||
|
||||
@@ -155,6 +155,8 @@ ParkB2 = -90
|
||||
MinDeltaX1X2 = 650
|
||||
MinDistToolX1X2 = 40
|
||||
LimX2RotSaw = 800
|
||||
AngTrBHOffs = 154.5
|
||||
AngTrBHLen = 90
|
||||
TurnerOffs = 120.0
|
||||
AggLoad = 50
|
||||
DeltaTabY = 1170.0
|
||||
@@ -174,10 +176,9 @@ SecondSaw = false
|
||||
AutomaticRotation = true
|
||||
OptimizedLoadBeam = true
|
||||
AutoRotMinLen = 0
|
||||
CoeffVM = 0.5
|
||||
EstimationRapidMultiplier = 1
|
||||
ForceToCloseRollersGate = false
|
||||
Probe = nil
|
||||
AggreBlockHaus = false
|
||||
|
||||
-- Aggiornamento con dati da TechnoEssetre7
|
||||
local sTs3Data = EgtGetStringFromIni( 'Beam', 'DATA_DIR', "C:\\TechnoEssetre7\\EgtData", EgtGetIniFile()).."\\Essetre-PFrl.data"
|
||||
@@ -261,13 +262,17 @@ if EgtExistsFile( sData) then
|
||||
if Machine.Offsets.SAW2OFFSZ then Saw2OffsZ = Machine.Offsets.SAW2OFFSZ end
|
||||
if Machine.Offsets.DEFTCPOS1 then DefTcPos1 = ( 'T' .. Machine.Offsets.DEFTCPOS1) end
|
||||
if Machine.Offsets.DEFTCPOS2 then DefTcPos2 = ( 'T' .. Machine.Offsets.DEFTCPOS2) end
|
||||
if Machine.Offsets.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI end
|
||||
if Machine.Offsets.NOULOAD then MaxUnloadLen = Machine.Offsets.NOULOAD 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.COEFF_STIMATEMPI and Machine.Offsets.COEFF_STIMATEMPI > 0 then EstimationRapidMultiplier = Machine.Offsets.COEFF_STIMATEMPI 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
|
||||
if Machine.Offsets.MAX_BACK_CLAMP_5 then MaxBackClamp5 = Machine.Offsets.MAX_BACK_CLAMP_5 end
|
||||
-- aggiustamenti
|
||||
MinY1 = MinV1 + MinDeltaYV
|
||||
MaxY1 = MaxMchY1
|
||||
@@ -339,13 +344,6 @@ 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',
|
||||
@@ -356,7 +354,7 @@ EmtAxis {
|
||||
Stroke = {MinB1, MaxB1},
|
||||
Home = ParkB1,
|
||||
Geo = 'B1_AXIS/GEO',
|
||||
Aux = sBAxisAuxGeom }
|
||||
Aux = {'B1_AXIS/SOLID', 'B1_AXIS/COLLISION'}}
|
||||
-- Frese
|
||||
local H11Id = EmtHead {
|
||||
Name = 'H11',
|
||||
@@ -384,22 +382,6 @@ 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',
|
||||
@@ -426,6 +408,24 @@ local H13Id = EmtHead {
|
||||
Geo = 'H13_HEAD/GEO'}
|
||||
EgtSetInfo( H13Id, 'ZSAFEDELTA', '60')
|
||||
EgtSetInfo( H13Id, 'ZMAXONROT', '1,80')
|
||||
|
||||
-- Eventuale aggregato per lavorazioni BlockHaus
|
||||
if AggreBlockHaus then
|
||||
local H17Id = EmtHead {
|
||||
Name = 'H17',
|
||||
Parent = 'B1',
|
||||
HSet = 'H11',
|
||||
Type = MCH_HT.STD,
|
||||
Pos = Point3d( -AngTrBHLen, 0, -AngTrBHOffs),
|
||||
TDir = X_AX(),
|
||||
ADir = Z_AX(),
|
||||
Rot1W = 0.2,
|
||||
SolCh = MCH_SCC.ADIR_NEAR,
|
||||
OthColl = {'H2', 'B/SOLID', 'C/SOLID'},
|
||||
Geo = 'H17_HEAD/GEO',
|
||||
Aux = {'H17_HEAD/SOLID', 'H17_HEAD/COLLISION'}}
|
||||
end
|
||||
|
||||
-- *** Testa 2 ***
|
||||
local X2Id = EmtAxis {
|
||||
Name = 'X2',
|
||||
@@ -461,12 +461,6 @@ 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',
|
||||
@@ -477,7 +471,7 @@ local B2Id = EmtAxis {
|
||||
Stroke = {MinB2, MaxB2},
|
||||
Home = ParkB2,
|
||||
Geo = 'B2_AXIS/GEO',
|
||||
Aux = sBAxisAuxGeom}
|
||||
Aux = {'B2_AXIS/SOLID', 'B2_AXIS/COLLISION'}}
|
||||
local vtMove2 = Vector3d( 0, Head2Y, Head2Z)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMove2, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'COLLISION'), vtMove2, GDB_RT.GLOB)
|
||||
@@ -487,10 +481,6 @@ 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',
|
||||
@@ -519,22 +509,6 @@ 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 {
|
||||
@@ -741,13 +715,24 @@ EmtTcPos {
|
||||
TDir = -Y_AX(),
|
||||
ADir = -X_AX(),
|
||||
Geo = 'BASE/T8'}
|
||||
EmtTcPos {
|
||||
if AggreBlockHaus then
|
||||
local TcpSsId = EmtTcPos {
|
||||
Name = 'T9',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + 8 * vtDt1 + Vector3d( -AngTrBHLen, AngTrBHOffs, 0),
|
||||
TDir = X_AX(),
|
||||
ADir = -Y_AX(),
|
||||
Geo = 'BASE/T9_BH',
|
||||
Aux = 'BASE/T9_HS'}
|
||||
else
|
||||
EmtTcPos {
|
||||
Name = 'T9',
|
||||
Parent = 'Base',
|
||||
Pos = ptTc1 + 8 * vtDt1,
|
||||
TDir = -Y_AX(),
|
||||
ADir = -X_AX(),
|
||||
Geo = 'BASE/T9'}
|
||||
end
|
||||
EmtTcPos {
|
||||
Name = 'T10',
|
||||
Parent = 'Base',
|
||||
@@ -857,6 +842,10 @@ EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC3') or GDB_ID.NULL, vtMovB, GDB_RT.G
|
||||
if Mortiser then
|
||||
EgtMove( EgtGetFirstNameInGroup( BaseId, 'TC4') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||
end
|
||||
-- sposto geometria aggiuntiva agrgegato BlockHaus
|
||||
if AggreBlockHaus then
|
||||
EgtMove( EgtGetFirstNameInGroup( EgtGetFirstNameInGroup( BaseId, 'T9'), 'T9_HS') or GDB_ID.NULL, vtMovB, GDB_RT.GLOB)
|
||||
end
|
||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X1Id, 'COLLISION'), vtMovB, GDB_RT.GLOB)
|
||||
EgtMove( EgtGetFirstNameInGroup( X2Id, 'SOLID'), vtMovB, GDB_RT.GLOB)
|
||||
@@ -904,7 +893,7 @@ function OnSetHead()
|
||||
EmtModifyAxisHome( 'B1', ParkB1)
|
||||
EmtModifyAxisDirection( 'B1', X_AX())
|
||||
-- se testa H12 (lama)
|
||||
elseif EMC.HEAD == 'H12' then
|
||||
elseif EMC.HEAD == 'H12' or EMC.HEAD == 'H17' then
|
||||
EmtModifyAxisHome( 'X1', ParkX1)
|
||||
EmtModifyAxisHome( 'Z1', ParkZ1)
|
||||
EmtModifyAxisHome( 'C1', ParkC1)
|
||||
@@ -946,14 +935,10 @@ end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
function GetHeadSet( sHead)
|
||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' then
|
||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' or sHead == 'H17' then
|
||||
return 1
|
||||
elseif sHead == 'H19' then
|
||||
return 11
|
||||
elseif sHead == 'H21' or sHead == 'H22' then
|
||||
elseif sHead == 'H21' or sHead == 'H22' or sHead == 'H23' then
|
||||
return 2
|
||||
elseif sHead == 'H29' then
|
||||
return 21
|
||||
else
|
||||
return 0
|
||||
end
|
||||
@@ -964,7 +949,7 @@ end
|
||||
function GetHeadTCSet( sHead, sTcPos)
|
||||
local nPos = tonumber( string.sub( sTcPos, 2)) or 0
|
||||
-- testa 1
|
||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' then
|
||||
if sHead == 'H11' or sHead == 'H12' or sHead == 'H13' or sHead == 'H15' or sHead == 'H17' then
|
||||
-- testa 1 su CU prossimo a testa 2
|
||||
if nPos > 10 then
|
||||
return 'Head1_TC2'
|
||||
@@ -1001,12 +986,6 @@ function HeadIsChainSaw( sHead)
|
||||
return ( sHead == 'H13')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione che riconosce testa per tastatore
|
||||
function HeadIsProbe( sHead)
|
||||
return ( sHead == 'H19' or sHead == 'H29')
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione che calcola la posizione Home di Z per la sega a catena dal valore dell'asse virtuale
|
||||
function GetChainSawZHomeFromVirtualAxis( dPosA)
|
||||
@@ -1034,7 +1013,7 @@ end
|
||||
---------------------------------------------------------------------
|
||||
-- Funzione che ritorna ZExtra partendo dalla testa e dall'angolo verticale
|
||||
function GetZExtra( sHead, dAngV)
|
||||
if sHead == 'H11' or sHead == 'H21' then
|
||||
if sHead == 'H11' or sHead == 'H21' or sHead == 'H17' then
|
||||
if abs( dAngV) < 30.1 then
|
||||
return 400
|
||||
elseif abs( dAngV) < 45.1 then
|
||||
@@ -1061,7 +1040,6 @@ function GetZExtra( sHead, dAngV)
|
||||
return 0
|
||||
end
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
@@ -2,9 +2,6 @@
|
||||
;Index = Type, Description, Default Value
|
||||
; Type : b=boolean, d=double, l=lenght, s=string
|
||||
|
||||
[Probing]
|
||||
0=s,Type,Head
|
||||
|
||||
[Drilling]
|
||||
|
||||
[Sawing]
|
||||
@@ -16,9 +13,6 @@
|
||||
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
|
||||
|
||||
+4
-15
@@ -30,8 +30,7 @@ local GS = {}
|
||||
-- Configurazione posizioni (con o senza TC2)
|
||||
local PositionTable = {}
|
||||
local SecondSaw = ( EgtGetHeadId( 'H22') ~= nil)
|
||||
local ProbeFirstHead = ( EgtGetHeadId( 'H19') ~= nil)
|
||||
local ProbeSecondHead = ( EgtGetHeadId( 'H29') ~= nil)
|
||||
local AggreBH = ( EgtGetHeadId( 'H17') ~= nil)
|
||||
if SecondSaw then
|
||||
PositionTable = {{Pos = "Pos1", TcPos = "T1", Head = "H12", Group = "G1"},
|
||||
{Pos = "Pos2", TcPos = "T3", Head = "H11", Group = "G1"},
|
||||
@@ -40,7 +39,7 @@ if SecondSaw then
|
||||
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos8", TcPos = "T9", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos8", TcPos = "T9", Head = EgtIf( AggreBH, "H17", "H11"), Group = "G1"},
|
||||
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos10", TcPos = "T11", Head = "H22", Group = "G3"},
|
||||
{Pos = "Pos11", TcPos = "T13", Head = "H21", Group = "G3"},
|
||||
@@ -63,7 +62,7 @@ else
|
||||
{Pos = "Pos5", TcPos = "T6", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos6", TcPos = "T7", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos7", TcPos = "T8", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos8", TcPos = "T9", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos8", TcPos = "T9", Head = EgtIf( AggreBH, "H17", "H11"), Group = "G1"},
|
||||
{Pos = "Pos9", TcPos = "T10", Head = "H11", Group = "G1"},
|
||||
{Pos = "Pos10", TcPos = "T11", Head = "H21", Group = "G3"},
|
||||
{Pos = "Pos11", TcPos = "T12", Head = "H21", Group = "G3"},
|
||||
@@ -80,17 +79,7 @@ else
|
||||
table.insert( PositionTable, {Pos = "Pos21", TcPos = "T201", Head = "H13", Group = "G2"})
|
||||
end
|
||||
end
|
||||
-- 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 UsePositionHead = false
|
||||
|
||||
local function IsInGeomSet( ToolHead, PosHead)
|
||||
for GsIndex = 1, #GS do
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
+3
-4
@@ -36,7 +36,6 @@
|
||||
4=s,DOUBLE
|
||||
|
||||
[MORTISE_STD]
|
||||
0=th,TH,
|
||||
1=b,MORTISE
|
||||
2=d,STEP
|
||||
3=d,SIDESTEP
|
||||
0=b,MORTISE
|
||||
1=d,STEP
|
||||
2=d,SIDESTEP
|
||||
|
||||
+24
-1
@@ -1,8 +1,31 @@
|
||||
==== Common_ONE-PF Update Log ====
|
||||
|
||||
Versione 2.7h2 (28/08/2025)
|
||||
- (GEN) Migliorata gestione spegnimento utensile e disattivazione piano
|
||||
- (SIM-GEN) Corretto nome variabile e altre piccole modifiche per Progress
|
||||
|
||||
Versione 2.7h1 (20/08/2025)
|
||||
- (SIM-GEN) Non si chiudono i rulli se tagli o pretagli di testa e coda
|
||||
- (SIM) Corretto movimento pinza 5 in caso di riposizionamento pinza 1
|
||||
- (GEN) Corretta quota assoluta posizione testa trave in caso di pinza 5 e testa rimasta bassa
|
||||
- (GEN) Se ultima lavorazione pezzo precedente ha stesso utensile della prima lavorazione pezzo successivo, la speed resta accesa
|
||||
|
||||
Versione 2.7g4 (23/07/2025)
|
||||
- (SIM-GEN) Aggiunto parametro configurabile da TS3 per massima sporgenza trave in coda per pinza 5. Ticket#2538
|
||||
|
||||
Versione 2.7g3 (22/07/2025)
|
||||
- (SIM) Corretto lettura angolo di presa della motosega
|
||||
|
||||
Versione 2.7g2 (08/07/2025)
|
||||
- (SIM) Corretto movimento a parcheggio sega a catena. Ticket#2517
|
||||
|
||||
Versione 2.7g1 (01/07/2025)
|
||||
- (GEN) Rimossa gestione PROBE inserita per sbaglio
|
||||
- (GEN) Corretto gestione accelerazioni
|
||||
- (SIM-GEN) Aggiunta gestione massima lunghezza scarico
|
||||
|
||||
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)
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
local InfoCommon_STD_PP = {
|
||||
NAME = 'Common_ONE-PF', -- nome script PP standard
|
||||
VERSION = '2.7f1', -- versione script
|
||||
VERSION = '2.7h2', -- versione script
|
||||
MIN_MACH_VER_PP_COMMON = '2.5k1' -- versione minima kernel
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user