From 1b8b079e5446e73325bd0b28459b3c05523f40ad Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 4 Mar 2021 09:46:48 +0000 Subject: [PATCH] DataBeam : - correzione lavorazione LapJoint con due facce sotto con macchina PF1250. --- LuaLibs/ProcessLapJoint.lua | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index b7a28d3..6147c2e 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -1,9 +1,10 @@ --- ProcessLapJoint.lua by Egaltech s.r.l. 2021/03/01 +-- ProcessLapJoint.lua by Egaltech s.r.l. 2021/03/04 -- Gestione calcolo mezzo-legno per Travi -- 2019/10/08 Agg. gestione OpenPocket. -- 2021/01/24 Con sega a catena ora sempre impostato asse A. -- 2021/02/03 Corretto riconoscimento feature di coda. -- 2021/02/04 Razionalizzata gestione forzatura lama. Corretta gestione diametro minimo utensile per svuotatura. +-- 2021/03/04 Due facce con testa da sotto. -- Tabella per definizione modulo local ProcessLapJoint = {} @@ -528,6 +529,7 @@ function ProcessLapJoint.Classify( Proc, b3Raw) local bDown = ( vtN[1]:getZ() < BD.NZ_MINB and vtN[2]:getZ() < BD.NZ_MINB) or ( vtN[1]:getZ() < BD.NZ_MINA and ( vtN[2]:getZ() < -0.1 or not bSmall)) or ( vtN[2]:getZ() < BD.NZ_MINA and ( vtN[1]:getZ() < -0.1 or not bSmall)) + bDown = ( bDown and not BD.DOWN_HEAD) return true, bDown -- se più di 2 facce else @@ -610,7 +612,7 @@ function ProcessLapJoint.Classify( Proc, b3Raw) local nFaceAdj = GetFaceAdj( Proc, nFacInd, dH, dV) or -1 local bIsL = ( Proc.Fct == 2 or TestElleShape3( Proc) or TestElleShape4( Proc) == 2) -- verifico se è lavorabile solo dal basso - local bDown = ( vtN:getZ() < BD.NZ_MINA) + local bDown = ( vtN:getZ() < BD.NZ_MINA and not BD.DOWN_HEAD) -- se verso il basso, verifico se utilizzabile seconda faccia if bDown then if nFacInd2 and dElev2 < 2 * dElev then @@ -3862,10 +3864,20 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) end -- due facce elseif Proc.Fct == 2 then + -- verifico se da lavorare con testa da sotto + local bDownHead = false + if BD.DOWN_HEAD then + local ptC = {} + local vtN = {} + ptC[1], vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT) + ptC[2], vtN[2] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT) + local vtNm = ( vtN[1] + vtN[2]) ; vtNm:normalize() + bDownHead = vtNm:getZ() < -0.5 + end -- determino l'angolo tra le facce local bAdj, _, _, dAng = EgtSurfTmFacetsContact( Proc.Id, 0, 1, GDB_ID.ROOT) - -- se ortogonali e non forzata lama, con fresa - if not bUseBlade and bAdj and abs( dAng + 90) < 1 then + -- se ortogonali e non forzata lama oppure con testa da sotto, con fresa + if ( not bUseBlade and bAdj and abs( dAng + 90) < 1) or bDownHead then -- se piccole if ( Proc.Box:getDimX() < MAX_MILL_LIN and ( Proc.Box:getDimZ() < MAX_MILL_LIN or Proc.Box:getDimY() < MAX_MILL_LIN)) then return MakeTwoFacesByMill( Proc, nPhase, nRawId, nPartId)