diff --git a/Common_ONE-PF.NUM.mlpe b/Common_ONE-PF.NUM.mlpe index 20f3722..01af957 100644 --- a/Common_ONE-PF.NUM.mlpe +++ b/Common_ONE-PF.NUM.mlpe @@ -637,7 +637,11 @@ function OnPathStart() EMT.MCHFIRST = true EMT.MCHFIRSTFEED = true -- se piano locale compatibile - local vtExtr = Vector3d( EMT.EXTR) + if not HeadIsChainSaw( EMT.HEAD) then + vtExtr = Vector3d( EMT.EXTR) + else + vtExtr = EgtGetCalcAuxDirFromAngles( EMT.R1, EMT.R2, EMT.R3) + end if EMT.REFLOC and AreSameVectorApprox( vtExtr, EMT.IPLGLFR:getVersZ()) then ; -- altrimenti primo posizionamento sempre in globale diff --git a/Common_ONE-PF.mlse b/Common_ONE-PF.mlse index 0d973cf..c1990a7 100644 --- a/Common_ONE-PF.mlse +++ b/Common_ONE-PF.mlse @@ -92,8 +92,15 @@ local function IsLinkSafe( vPrec, vNext) for t=1, #DirectionsToTest do local vtToolDir = EgtGetCalcToolDirFromAngles( DirectionsToTest[t].C, DirectionsToTest[t].B) + -- se testa standard + if EMC.HEAD == 'H11' then + -- TODO considerare caso sotto la traversa + -- se sotto la traversa + if vtToolDir:getX() > -0.1 then + bSafeMove = true + end -- se lama su aggregato - if EMC.HEAD == 'H12' then + elseif EMC.HEAD == 'H12' then -- se sotto la traversa if vtToolDir:getX() < 0.342 then local dLen = SawOffsZ - MillOffs @@ -150,10 +157,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;') diff --git a/Essetre-ONE.mlde b/Essetre-ONE.mlde index 0e13cd1..5dac37e 100644 --- a/Essetre-ONE.mlde +++ b/Essetre-ONE.mlde @@ -32,7 +32,7 @@ require( 'EmtGenerator') EgtEnableDebug( false) -PP_VER = '3.1e1_NL3' +PP_VER = '3.1e1_NL4' PP_NVER = '3.1.3.2' MIN_MACH_VER = '2.5k1' MACH_NAME = EgtGetCurrMachineName()