From 5f1aaac719e16ed9b0222beb29f4fb78849e7f6e Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Thu, 4 Apr 2024 08:48:13 +0200 Subject: [PATCH] - in sawpluschain migliorati approccio e retrazione lama --- LuaLibs/ProcessLapJoint.lua | 55 ++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/LuaLibs/ProcessLapJoint.lua b/LuaLibs/ProcessLapJoint.lua index 780d6b9..7bb7b0b 100644 --- a/LuaLibs/ProcessLapJoint.lua +++ b/LuaLibs/ProcessLapJoint.lua @@ -4791,11 +4791,12 @@ function SawPlusChain.GetHorizontalSteps( Machining) end -function SawPlusChain.GetLeadInOut( Proc, Machining) +function SawPlusChain.CalculateLeadInOut( Proc, Machining) -- si determina se l'inizio o la fine della lavorazione sono chiusi e l'eventuale riduzione da applicare local bIsStartClosed = false local bIsEndClosed = false local bIsMortising = ( Machining.Type == MCH_OY.MORTISING) + local dExtraPerpDistance = EgtMdbGetGeneralParam( MCH_GP.SAFEZ) local dAddLengthToReduce = 0 if bIsMortising then dAddLengthToReduce = Machining.Tool.Diameter / 2 @@ -4834,32 +4835,33 @@ function SawPlusChain.GetLeadInOut( Proc, Machining) LeadOut.Type = MCH_MILL_LI.LINEAR LeadIn.TangentDistance = 0 LeadOut.TangentDistance = 0 - LeadIn.PerpDistance = 0 - LeadOut.PerpDistance = 0 + LeadIn.PerpDistance = Machining.Depth + dExtraPerpDistance - Machining.RadialOffset + BD.CUT_EXTRA + LeadOut.PerpDistance = Machining.Depth + dExtraPerpDistance - Machining.RadialOffset + BD.CUT_EXTRA LeadIn.Elevation = 0 LeadOut.Elevation = 0 LeadIn.CompLength = 0 LeadOut.CompLength = 0 + if bIsStartClosed and bIsEndClosed then + LeadIn.StartAddLength = -dAddLengthToReduce + LeadOut.EndAddLength = -dAddLengthToReduce + elseif bIsStartClosed then + LeadIn.StartAddLength = -dAddLengthToReduce + LeadOut.EndAddLength = BD.CUT_EXTRA + max( -LeadIn.StartAddLength - Proc.Pocket.Width, 0) + elseif bIsEndClosed then + LeadOut.EndAddLength = -dAddLengthToReduce + LeadIn.StartAddLength = BD.CUT_EXTRA + max( -LeadOut.EndAddLength - Proc.Pocket.Width, 0) + end + else if bIsStartClosed then LeadIn.StartAddLength = -dAddLengthToReduce - LeadIn.PerpDistance = 1 + else + LeadIn.StartAddLength = BD.CUT_EXTRA end if bIsEndClosed then LeadOut.EndAddLength = -dAddLengthToReduce - LeadOut.PerpDistance = 1 + else + LeadOut.EndAddLength = BD.CUT_EXTRA end - if abs( LeadIn.StartAddLength) > Proc.Pocket.Width - 10 * GEO.EPS_SMALL then - LeadOut.EndAddLength = -LeadIn.StartAddLength - Proc.Pocket.Width + 1 - end - if abs( LeadOut.EndAddLength) > Proc.Pocket.Width - 10 * GEO.EPS_SMALL then - LeadIn.StartAddLength = -LeadOut.EndAddLength - Proc.Pocket.Width + 1 - end - end - if bIsStartClosed then - LeadIn.StartAddLength = -dAddLengthToReduce - end - if bIsEndClosed then - LeadOut.EndAddLength = -dAddLengthToReduce end return LeadIn, LeadOut @@ -5009,7 +5011,7 @@ function SawPlusChain.Saw.CalculateMachiningParameters( Proc) Cutting.BlockedAxis.Orientation = 'perpendicular' Cutting.BlockedAxis.VtOut = EgtIf( Cutting.FaceToMachine.VtN:getX() > 0, X_AX(), -X_AX()) -- approccio e retrazione - Cutting.LeadIn, Cutting.LeadOut = SawPlusChain.GetLeadInOut( Proc, Cutting) + Cutting.LeadIn, Cutting.LeadOut = SawPlusChain.CalculateLeadInOut( Proc, Cutting) -- eventuale step orizzontale if Cutting.Tool.SideStep then Cutting.HorizontalSteps = SawPlusChain.GetHorizontalSteps( Cutting) @@ -5058,7 +5060,7 @@ function SawPlusChain.Chainsaw.CalculateMachiningParameters( Proc) end end - -- parametri della lavorazione con sega a catena + -- parametri della lavorazione -- lato di lavoro e inversioni if Chainsawing.Tool.IsCCW then Chainsawing.Workside = MCH_MILL_WS.RIGHT @@ -5093,7 +5095,7 @@ function SawPlusChain.Chainsaw.CalculateMachiningParameters( Proc) Chainsawing.BlockedAxis = {} Chainsawing.BlockedAxis.Orientation = 'perpendicular' -- approccio e retrazione - Chainsawing.LeadIn, Chainsawing.LeadOut = SawPlusChain.GetLeadInOut( Proc, Chainsawing) + Chainsawing.LeadIn, Chainsawing.LeadOut = SawPlusChain.CalculateLeadInOut( Proc, Chainsawing) -- eventuale step verticale Chainsawing.VerticalSteps = SawPlusChain.GetVerticalSteps( Proc, Chainsawing) @@ -5129,14 +5131,21 @@ function SawPlusChain.Make( Proc, b3Raw, bOnlySaw) -- parametri lavorazione di lama local Cutting = SawPlusChain.Saw.CalculateMachiningParameters( Proc) - -- applicazione lavorazione di lama + -- applicazione lavorazione di lama con eventuali step XY local bIsCuttingOk = false local sCuttingApplyMessage = '' if Cutting.CanApply then local dOriginalRadialOffset = Cutting.RadialOffset + local dOriginalLeadInPerpDistance = Cutting.LeadIn.PerpDistance + local dOriginalLeadOutPerpDistance = Cutting.LeadOut.PerpDistance for i = Cutting.HorizontalSteps.Count, 1, -1 do Cutting.RadialOffset = dOriginalRadialOffset + Cutting.HorizontalSteps.StepLength * ( i - 1) + -- update distanza perpendicolare attacco per contemplare l'offset applicato + Cutting.LeadIn.PerpDistance = dOriginalLeadInPerpDistance - Cutting.RadialOffset + Cutting.LeadOut.PerpDistance = dOriginalLeadOutPerpDistance - Cutting.RadialOffset + -- applicazione lavorazione bIsCuttingOk, sCuttingApplyMessage = SawPlusChain.ApplyMachining( Cutting, 'Cut_', b3Raw) + -- update messaggi if sCuttingApplyMessage and #sCuttingApplyMessage > 0 then Cutting.Message = Cutting.Message .. '\n' .. 'Apply : ' .. sCuttingApplyMessage end @@ -5152,14 +5161,16 @@ function SawPlusChain.Make( Proc, b3Raw, bOnlySaw) -- si lavora solo quanto non lavorato dalla lama Chainsawing.MaxElev = Cutting.RadialOffset + BD.CUT_EXTRA - -- applicazione lavorazione con sega a catena + -- applicazione lavorazione con sega a catena con eventuali step in Z local bIsChainsawingOk = false local sChainsawingApplyMessage = '' if Chainsawing.CanApply then local dOriginalRadialOffsetChainsawing = Chainsawing.RadialOffset for i = Chainsawing.VerticalSteps.Count, 1, -1 do Chainsawing.RadialOffset = dOriginalRadialOffsetChainsawing + Chainsawing.VerticalSteps.StepLength * ( i - 1) + -- applicazione lavorazione bIsChainsawingOk, sChainsawingApplyMessage = SawPlusChain.ApplyMachining( Chainsawing, 'Chainsaw_', b3Raw) + -- update messaggi if sChainsawingApplyMessage and #sChainsawingApplyMessage > 0 then Chainsawing.Message = Chainsawing.Message .. '\n' .. 'Apply : ' .. sChainsawingApplyMessage end