From d5709be6b0a3332f4b761f6b72f5f2fc8a55c5aa Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Fri, 1 Jul 2022 09:10:37 +0200 Subject: [PATCH] miglioramento e correzione gestione MaxElev per affondamento foro --- LuaLibs/BeamExec.lua | 2 ++ LuaLibs/ProcessDrill.lua | 25 ++++++++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 8bae782..4d8d1d1 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -1318,10 +1318,12 @@ local function SetDrillingsToMachineAfterHeadOrTailCut( vProc, vMachineBeforeInt if vMachineBeforeIntersectingDrillings.Head.Box and vProc[i].Box:getMin():getX() < vMachineBeforeIntersectingDrillings.Head.Box:getMax():getX() + 100 * GEO.EPS_SMALL and vMachineBeforeIntersectingDrillings.Head.Box:getMin():getX() < vProc[i].Box:getMax():getX() + 100 * GEO.EPS_SMALL then vProc[i].MachineAfterHeadCutId = vMachineBeforeIntersectingDrillings.Head.Id + --vProc[i].Head = true -- se esiste intersezione tra il foro e la feature di coda elseif vMachineBeforeIntersectingDrillings.Tail.Box and vProc[i].Box:getMin():getX() < vMachineBeforeIntersectingDrillings.Tail.Box:getMax():getX() + 100 * GEO.EPS_SMALL and vMachineBeforeIntersectingDrillings.Tail.Box:getMin():getX() < vProc[i].Box:getMax():getX() + 100 * GEO.EPS_SMALL then vProc[i].MachineAfterTailCutId = vMachineBeforeIntersectingDrillings.Tail.Id + --vProc[i].Tail = true end end end diff --git a/LuaLibs/ProcessDrill.lua b/LuaLibs/ProcessDrill.lua index e387c63..183e834 100644 --- a/LuaLibs/ProcessDrill.lua +++ b/LuaLibs/ProcessDrill.lua @@ -396,17 +396,28 @@ function ProcessDrill.Make( Proc, nPhase, nRawId, nPartId) -- test local dMaxElev = dDepth - if Proc.MachineAfterHeadCutId or Proc.MachineAfterTailCutId then + local dToolHolderExtraLength = 0 + local dSafetyExtraLength = 0 + if ( Proc.MachineAfterHeadCutId and vtExtr:getX() > 0) or ( Proc.MachineAfterTailCutId and vtExtr:getX() < 0) then local ptCen = EgtCP( AuxId, GDB_RT.GLOB) - if ( Proc.MachineAfterHeadCutId and vtExtr:getX() < 0) or ( Proc.MachineAfterTailCutId and vtExtr:getX() > 0) then - local vtMove = -vtExtr * dLen - ptCen:move( vtMove) - end local bIntersectionOk, _, vDistance = EgtLineSurfTmInters( ptCen, -vtExtr, Proc.MachineAfterHeadCutId or Proc.MachineAfterTailCutId, GDB_RT.GLOB) - if bIntersectionOk == true then - dMaxElev = abs( vDistance[1]) + dHoleEndToCutDistance = vDistance[1] + if bIntersectionOk then + if dHoleEndToCutDistance > 0 then + dMaxElev = dLen - dHoleEndToCutDistance + dToolHolderExtraLength + dSafetyExtraLength + elseif dHoleEndToCutDistance < 0 then + dMaxElev = dHoleEndToCutDistance + dToolHolderExtraLength + dSafetyExtraLength + end end end +-- local vtMove = -vtExtr * dLen +-- ptCen:move( vtMove) +-- end +-- local bIntersectionOk, _, vDistance = EgtLineSurfTmInters( ptCen, -vtExtr, Proc.MachineAfterHeadCutId or Proc.MachineAfterTailCutId, GDB_RT.GLOB) +-- if bIntersectionOk == true then +-- dMaxElev = dDepth - abs( vDistance[1]) +-- end +-- end -- fine test if dMaxElev > dMaxDepth + 10 * GEO.EPS_SMALL then