diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index c59a34b..ca86107 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -1,4 +1,4 @@ --- ProcessLapJoint.lua by Egaltech s.r.l. 2021/10/19 +-- ProcessLapJoint.lua by Egaltech s.r.l. 2021/10/21 -- Gestione calcolo mezzo-legno per Travi -- 2019/10/08 Agg. gestione OpenPocket. -- 2021/01/24 Con sega a catena ora sempre impostato asse A. @@ -27,6 +27,7 @@ -- migliorata applicazione lavorazioni BH su feature lunghe lavorte a passi -- 2021/10/06 Ad antischeggia con lama in presenza di testa da sotto aggiunta preferenza a testa da sopra. -- 2021/10/19 Corretta gestione inversione per Tunnel. OpenPocket anche se spezzato ma 1 o 2 facce. Introdotta lunghezza minima per lamello. +-- 2021/10/21 Migliorato controllo affondamento utensile in U lavorato da 3 parti (anche da sotto). -- Tabella per definizione modulo local ProcessLapJoint = {} @@ -3542,7 +3543,7 @@ local function MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCha -- se smusso non è esclusivo if nChamfer < 2 then -- ricalcolo se è lavorabile da sotto - bMillDown = ( BD.DOWN_HEAD and abs( vtOrtho:getZ()) >= 0.707) + bMillDown = ( BD.DOWN_HEAD == true) -- verifico se può essere fatto con svuotatura local bMakePocket, sPocketing, dMaxDepth, dDiamTool = VerifyPocket( Proc, dDimMin, dDepth / 2, nil, sMchFind) local bMakePocketDn, sPocketingDn, dMaxDepthDn, dDiamToolDn @@ -3761,17 +3762,21 @@ local function MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCha -- se non completo e U, cerco di lavorare anche la faccia di fondo (con il massimo affondamento possibile) if not bComplete and bIs3Faces then -- recupero la faccia da lavorare - local nFacInd = BL.GetFaceWithMostAdj( Proc.Id, nPartId) + local nFacInd, dFacElev = BL.GetFaceWithMostAdj( Proc.Id, nPartId) local vtN local bPock3rd = false if nFacInd then vtN = EgtSurfTmFacetNormVersor( Proc.Id, nFacInd, GDB_ID.ROOT) - bPock3rd = ( vtN and vtN:getZ() >= BD.NZ_MINA) + bPock3rd = ( vtN and ( vtN:getZ() >= BD.NZ_MINA or bMakePocketDn)) end if bPock3rd then + -- recupero la distanza di sicurezza aggiuntiva + local dFacCollSic = CalcCollisionSafety( vtN) + -- scelgo se lavorare da sotto + local bFacPocketDn = ( bMakePocketDn and vtN:getZ() < -0.174) -- inserisco la lavorazione di svuotatura local sName = EgtIf( bDoubleSide, 'Pock3rd_', 'Pock2nd_') .. ( EgtGetName( Proc.Id) or tostring( Proc.Id)) - local nMchFId = EgtAddMachining( sName, sPocketing) + local nMchFId = EgtAddMachining( sName, EgtIf( bFacPocketDn, sPocketingDn, sPocketing)) if not nMchFId then local sErr = 'Error adding machining ' .. sName .. '-' .. sPocketing EgtOutLog( sErr) @@ -3804,7 +3809,12 @@ local function MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCha -- inverto il percorso di lavorazione per lavorare sinistro EgtSetMachiningParam( MCH_MP.INVERT, true) -- imposto affondamento - EgtSetMachiningParam( MCH_MP.DEPTH, 0) + local dDepth = 0 + local dActMaxDepth = EgtIf( bFacPocketDn, dMaxDepthDn, dMaxDepth) + if dActMaxDepth < dFacElev + dFacCollSic then + dDepth = dActMaxDepth - ( dFacElev + dFacCollSic) + end + EgtSetMachiningParam( MCH_MP.DEPTH, dDepth) -- dichiaro non si generano sfridi per VMill local sNotes = 'VMRS=0;' EgtSetMachiningParam( MCH_MP.USERNOTES, sNotes)