Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 872f74c9a7 |
@@ -1002,7 +1002,7 @@ function OnRapid()
|
||||
EMT.MCHFIRST = false
|
||||
-- movimento standard CLIMB
|
||||
elseif EMT.FLAG == 2 then
|
||||
-- se non ho ancora impostato il piano movimenti in assoluto
|
||||
-- se non ho ancora impostato il piano, movimenti in assoluto
|
||||
if not EMT.PLANEACTIVE then
|
||||
MyAdjustLinearAxes()
|
||||
EmtAdjustRotaryAxes()
|
||||
|
||||
+52
-23
@@ -538,13 +538,13 @@ function OnSimulToolSelect( dPosA)
|
||||
end
|
||||
|
||||
-- se ho due teste, verifico che l'altra sia dalla parte opposta
|
||||
if EgtGetHeadId( 'H21') then
|
||||
if nSetHead == 1 then
|
||||
EgtSetAxisPos( 'X2', MinX2)
|
||||
else
|
||||
EgtSetAxisPos( 'X1', MaxX1)
|
||||
end
|
||||
end
|
||||
--if EgtGetHeadId( 'H21') then
|
||||
-- if nSetHead == 1 then
|
||||
-- EgtSetAxisPos( 'X2', MinX2)
|
||||
-- else
|
||||
-- EgtSetAxisPos( 'X1', MaxX1)
|
||||
-- end
|
||||
--end
|
||||
-- se sega a catena, imposto subito angolo scelto per asse virtuale A
|
||||
if HeadIsChainSaw( EMT.HEAD) then
|
||||
-- apro le paratie
|
||||
@@ -561,7 +561,9 @@ function OnSimulToolSelect( dPosA)
|
||||
EgtSetAxisPos( 'B1', ParkCSawB1)
|
||||
EgtSetAxisPos( 'X1', ParkCSawX1)
|
||||
-- l'utensile viene caricato qui, quindi setto come già cambiato
|
||||
EMT.PREVTOOL_H1 = EMT.TOOL
|
||||
EMT.PREVHEAD_H1 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H1 = EMT.TCPOS
|
||||
else
|
||||
-- imposto home dell'asse C2 (A=0 -> T111, A=-90 -> T112)
|
||||
local MyParkCSawC2 = GetChainSawCHomeFromVirtualAxis( dPosA)
|
||||
@@ -570,7 +572,9 @@ function OnSimulToolSelect( dPosA)
|
||||
EgtSetAxisPos( 'B2', ParkCSawB2)
|
||||
EgtSetAxisPos( 'X2', ParkCSawX2)
|
||||
-- l'utensile viene caricato qui, quindi setto come già cambiato
|
||||
EMT.PREVTOOL_H2 = EMT.TOOL
|
||||
EMT.PREVHEAD_H2 = EMT.HEAD
|
||||
EMT.PREVTCPOS_H2 = EMT.TCPOS
|
||||
end
|
||||
end
|
||||
|
||||
@@ -621,12 +625,21 @@ function OnSimulToolDeselect( dPrevA)
|
||||
EgtSetMode( EgtGetHeadId( EMT.PREVHEAD_H1 or '') or GDB_ID.NULL, GDB_MD.HIDDEN)
|
||||
-- se non è chiamata per cambio angolo di presa della sega a catena
|
||||
if not dPrevA then
|
||||
-- cambio utensile
|
||||
EgtSetAxisPos( 'C1', ParkC1)
|
||||
EgtSetAxisPos( 'B1', ParkB1)
|
||||
EgtSetAxisPos( 'Z1', MaxZ1)
|
||||
SimulMoveAxis( 'X1', ParkX1, MCH_SIM_STEP.RAPID)
|
||||
local sTool, sHead, sTcPos = FindNextToolOnHeadSet( 1, false)
|
||||
-- imposto correttamente i dati di testa
|
||||
local OrigEMC = EMC
|
||||
EMC = { HEAD = sHead, TOOL = sTool, TCPOS = sTcPos, TOTDIAM = 0}
|
||||
OnSetHead()
|
||||
EMC = OrigEMC
|
||||
local dHomeX1 = EgtGetAxisHomePos( 'X1')
|
||||
local dHomeC1 = EgtGetAxisHomePos( 'C1')
|
||||
local dHomeB1 = EgtGetAxisHomePos( 'B1')
|
||||
|
||||
-- cambio utensile
|
||||
EgtSetAxisPos( 'C1', dHomeC1)
|
||||
EgtSetAxisPos( 'B1', dHomeB1)
|
||||
EgtSetAxisPos( 'Z1', MaxZ1)
|
||||
SimulMoveAxis( 'X1', dHomeX1, MCH_SIM_STEP.RAPID)
|
||||
if sTcPos then
|
||||
LoadNextTool( 1, DefTcPos1)
|
||||
end
|
||||
@@ -659,6 +672,16 @@ function OnSimulToolDeselect( dPrevA)
|
||||
-- se prossimo utensile sega a catena, devo mettere in home testa 1 e depositare l'utensile sulla testa 2 o viceversa
|
||||
|
||||
local dHeadSet = GetHeadSet( EMT.PREVHEAD)
|
||||
|
||||
-- vado a quota home testa attuale
|
||||
if dHeadSet == 1 then
|
||||
SimulMoveAxes( 'X1', EgtGetAxisHomePos( 'X1'), MCH_SIM_STEP.RAPID, 'Z1', EgtGetAxisHomePos( 'Z1'), MCH_SIM_STEP.RAPID,
|
||||
'B1', EgtGetAxisHomePos( 'B1'), MCH_SIM_STEP.COLLROT, 'C1', EgtGetAxisHomePos( 'C1'), MCH_SIM_STEP.COLLROT)
|
||||
elseif dHeadSet == 2 then
|
||||
SimulMoveAxes( 'X2', EgtGetAxisHomePos( 'X2'), MCH_SIM_STEP.RAPID, 'Z2', EgtGetAxisHomePos( 'Z2'), MCH_SIM_STEP.RAPID,
|
||||
'B2', EgtGetAxisHomePos( 'B2'), MCH_SIM_STEP.COLLROT, 'C2', EgtGetAxisHomePos( 'C2'), MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
|
||||
if dHeadSet == 1 then
|
||||
-- visualizzo utensile su TcPos
|
||||
ShowToolInTcPos( EMT.PREVTCPOS_H1, true)
|
||||
@@ -1021,8 +1044,18 @@ function OnSimulMoveStart()
|
||||
else
|
||||
local bFirstMoveOnlyH1 = sHeadToMoveFirst and sHeadToMoveFirst == 'H1'
|
||||
local bFirstMoveOnlyH2 = sHeadToMoveFirst and sHeadToMoveFirst == 'H2'
|
||||
-- se bisogna muovere prima la testa 2, si esegue subito il primo movimento della testa, priam di muovere la testa 1
|
||||
if bFirstMoveOnlyH2 then
|
||||
if #EMT.APPROACH.DBLCLIMBS > 0 then
|
||||
EMT.INDEX_APPROACH_MOVE = EMT.INDEX_APPROACH_MOVE + 1
|
||||
EMT.A5 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].L2
|
||||
EMT.A6 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].L3
|
||||
EMT.A7 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].R1
|
||||
EMT.A8 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].R2
|
||||
SimulMoveAxes( 'X2', EMT.A5, MCH_SIM_STEP.RAPID, 'Z2', EMT.A6, MCH_SIM_STEP.RAPID, 'C2', EMT.A7, MCH_SIM_STEP.COLLROT, 'B2', EMT.A8, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
-- se bisogna muovere prima la testa 1, il movimento della testa 2 non si esegue adesso
|
||||
if not bFirstMoveOnlyH1 then
|
||||
elseif not bFirstMoveOnlyH1 then
|
||||
-- incremento indice approccio
|
||||
EMT.INDEX_APPROACH_MOVE = EMT.INDEX_APPROACH_MOVE + 1
|
||||
-- se non esiste movimento sulla testa due, significa che gli approcci della testa 1 sono in maggior numero
|
||||
@@ -1045,16 +1078,6 @@ function OnSimulMoveStart()
|
||||
EMT.A8 = EMT.APPROACH.DBLRISES[EMT.INDEX_APPROACH_MOVE].R2
|
||||
end
|
||||
end
|
||||
-- se bisogna muovere prima la testa 2, si esegue subito il primo movimento della testa, priam di muovere la testa 1
|
||||
elseif bFirstMoveOnlyH2 then
|
||||
if #EMT.APPROACH.DBLCLIMBS > 0 then
|
||||
EMT.INDEX_APPROACH_MOVE = EMT.INDEX_APPROACH_MOVE + 1
|
||||
EMT.A5 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].L2
|
||||
EMT.A6 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].L3
|
||||
EMT.A7 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].R1
|
||||
EMT.A8 = EMT.APPROACH.DBLCLIMBS[EMT.INDEX_APPROACH_MOVE].R2
|
||||
SimulMoveAxes( 'X2', EMT.A5, MCH_SIM_STEP.RAPID, 'Z2', EMT.A6, MCH_SIM_STEP.RAPID, 'C2', EMT.A7, MCH_SIM_STEP.COLLROT, 'B2', EMT.A8, MCH_SIM_STEP.COLLROT)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1129,6 +1152,12 @@ function OnSimulMoveStart()
|
||||
EMT.TFLOAT_CMP = EMT.MOVEID
|
||||
end
|
||||
|
||||
-- reset movimenti
|
||||
if EMT.IS_CLIMB and EMT.APPROACH.DBLCLIMBS and #EMT.APPROACH.DBLCLIMBS == EMT.INDEX_APPROACH_MOVE then
|
||||
EMT.APPROACH.DBLCLIMBS = {}
|
||||
elseif EMT.IS_RISE and EMT.APPROACH.DBLRISES and #EMT.APPROACH.DBLRISES == EMT.INDEX_APPROACH_MOVE then
|
||||
EMT.APPROACH.DBLRISES = {}
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
+18
-3
@@ -359,10 +359,17 @@ function OnSpecialLink()
|
||||
-- altrimenti collegamento tra due lavorazioni (3)
|
||||
else
|
||||
-- recupero quota massima di collegamento
|
||||
local vLFiAx = EmtGetFinalAxesPos( EMC.PREVMCHID, EMC.PREVMAIN, false)
|
||||
local vLInAx = EmtGetInitialAxesPos( EMC.NEXTMCHID, EMC.NEXTMAIN, false)
|
||||
local vFinalAxLink = EmtGetFinalAxesPos( EMC.PREVMCHID, EMC.PREVMAIN, false)
|
||||
local vInitAxLink = EmtGetInitialAxesPos( EMC.NEXTMCHID, EMC.NEXTMAIN, false)
|
||||
local bSafeMove = IsLinkSafe( vFinalAxLink, vInitAxLink)
|
||||
|
||||
-- se gli assi rotanti non sono cambiati e il collegamento è come ultimo punto della lavorazione
|
||||
if abs( EMC.R1 - EMC.R1p) < 1 and abs( EMC.R2 - EMC.R2p) < 1 and abs( EMC.L3p - vFinalAxLink[3]) < 1 and abs( EMC.L3 - vInitAxLink[3]) < 1 then
|
||||
bSafeMove = true
|
||||
end
|
||||
|
||||
-- se superata quota massima ammessa
|
||||
if max( vLFiAx[3], vLInAx[3]) > ParkZ1 + 1 then
|
||||
if not bSafeMove then
|
||||
-- retrazione
|
||||
EmtRemoveRise( EMC.PREVMCHID, EMC.PREVMAIN)
|
||||
EmtAddRise( EMC.PREVMCHID, EMC.PREVMAIN, { EMC.L1p, EMC.L2p, MaxZ1, EMC.R1p, 0}, 30, 3, 2, 'UniqueRise=1;')
|
||||
@@ -370,6 +377,14 @@ function OnSpecialLink()
|
||||
EmtRemoveClimb( EMC.NEXTMCHID, EMC.NEXTMAIN)
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, MaxZ1, EMC.R1, 0}, 30, 2, 2, 'FirstClimb=1;')
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3, EMC.R1, EMC.R2}, 30, 2, 2, 'LastClimb=1;')
|
||||
else
|
||||
-- GESTIONE PER DOPPIO
|
||||
-- se altra testa arriva da home, devo per forza avere un CLIMB, creo il punto
|
||||
if EMC.OTHERLINKTYPE == 1 then
|
||||
EmtRemoveClimb( EMC.NEXTMCHID, EMC.NEXTMAIN)
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, vInitAxLink, 30, 2, 2, 'FirstClimb=1;HeadToMoveFirst=H2;')
|
||||
EmtAddClimb( EMC.NEXTMCHID, EMC.NEXTMAIN, { EMC.L1, EMC.L2, EMC.L3, EMC.R1, EMC.R2}, 30, 2, 2, 'LastClimb=1;')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
require( 'EmtGenerator')
|
||||
EgtEnableDebug( false)
|
||||
|
||||
PP_VER = '3.1f1_CR4'
|
||||
PP_VER = '3.1f1_CR5'
|
||||
PP_NVER = '3.1.6.1'
|
||||
MIN_MACH_VER = '2.5k1'
|
||||
MACH_NAME = EgtGetCurrMachineName()
|
||||
|
||||
Reference in New Issue
Block a user