diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 739c97e..ae03b55 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -1,4 +1,4 @@ --- ProcessLapJoint.lua by Egaltech s.r.l. 2022/01/19 +-- ProcessLapJoint.lua by Egaltech s.r.l. 2022/01/28 -- Gestione calcolo mezzo-legno per Travi -- 2019/10/08 Agg. gestione OpenPocket. -- 2021/01/24 Con sega a catena ora sempre impostato asse A. @@ -35,6 +35,7 @@ -- 2021/12/17 Lettura parametri Q una volta sola all'inizio. -- 2022/01/13 Estrapolazione da MakeMoreFaces() di MakeTwoFaces() e MakeThreeFaces(), e varie ottimizzazioni. -- 2022/01/19 Cambiata % lunghezza pezzo per spezzatura. Tolta correzione spessore fresa a disco con superficie da lavorare verso Z-. +-- 2022/01/26 Migliorato controllo uso testa da sotto nel caso due facce con lama. -- 2022/01/28 Aggiunte funzioni DoClean, DoPocketing, DoHeadChainSaw, DoSideChainSaw e DoHeadCut. -- Tabella per definizione modulo @@ -4991,6 +4992,23 @@ local function MakeLongFaces( Proc, Func) return true, sWarn end +--------------------------------------------------------------------- +local function TestTwoFacesDownHead( Proc) + -- verifico ci siano due facce + if Proc.Fct ~= 2 then return false end + -- 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 + return bDownHead +end + --------------------------------------------------------------------- -- Applicazione della lavorazione --------------------------------------------------------------------- @@ -5041,6 +5059,8 @@ 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 = TestTwoFacesDownHead( Proc) -- determino se due facce lunghe oppure una lunga e l'altra terminale local b3Fac1 = EgtSurfTmGetFacetBBoxGlob( Proc.Id, 0, GDB_BB.STANDARD) local b3Fac2 = EgtSurfTmGetFacetBBoxGlob( Proc.Id, 1, GDB_BB.STANDARD) @@ -5054,14 +5074,14 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) if nForceUseBladeOnNotContinueFace and nForceUseBladeOnNotContinueFace > 0 then return LongCut.Make( Proc, _nPhase, _nRawId, _nPartId, bUseBlade, nForceUseBladeOnNotContinueFace) else - return Fbs.MakeTwo( Proc, _nPhase, _nRawId, _nPartId, _dOvmHead, 'HeadSide') + return Fbs.MakeTwo( Proc, _nPhase, _nRawId, _nPartId, _dOvmHead, 'HeadSide' .. EgtIf( bDownHead, '_H2', ''), true, bDownHead) end else return LongCut.Make( Proc, _nPhase, _nRawId, _nPartId) end else if bUseBlade then - return Fbs.MakeTwo( Proc, _nPhase, _nRawId, _nPartId, _dOvmHead, 'HeadSide') + return Fbs.MakeTwo( Proc, _nPhase, _nRawId, _nPartId, _dOvmHead, 'HeadSide' .. EgtIf( bDownHead, '_H2', ''), true, bDownHead) else return MakeLongFaces( Proc, MakeTwoFaces) end @@ -5114,7 +5134,7 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead) -- altrimenti else -- verifico se da lavorare con testa da sotto - local bDownHead = false + local bDownHead = TestTwoFacesDownHead( Proc) if BD.DOWN_HEAD then local ptC = {} local vtN = {}