From 2b929974dcdf8e8a4800c080e2e798b583c0bd28 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Mon, 17 Mar 2025 13:03:17 +0100 Subject: [PATCH] Piccole migliorie strategie Tenone e TenoneDT --- Strategies/Standard/STR0001/STR0001.lua | 2 +- Strategies/Standard/STR0006/STR0006.lua | 33 ++++++++++++++++--------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/Strategies/Standard/STR0001/STR0001.lua b/Strategies/Standard/STR0001/STR0001.lua index 6dcf0bc..4a4f43a 100644 --- a/Strategies/Standard/STR0001/STR0001.lua +++ b/Strategies/Standard/STR0001/STR0001.lua @@ -63,7 +63,7 @@ function GetTenonStrategy( Proc, Part) end -- === ricerca utensile per svuotare taglio iniziale, se taglio non possibile === - if Machining.bCuttingWithMill then + if Machining.bCuttingWithMill and ( not( Proc.AffectedFaces.bLeft) or Strategy.bCanMoveAfterSplit) then ToolSearchParameters = {} ToolSearchParameters.dElevation = 0 ToolSearchParameters.vtToolDirection = Proc.vtTenonN diff --git a/Strategies/Standard/STR0006/STR0006.lua b/Strategies/Standard/STR0006/STR0006.lua index 8791de9..9898cb0 100644 --- a/Strategies/Standard/STR0006/STR0006.lua +++ b/Strategies/Standard/STR0006/STR0006.lua @@ -69,17 +69,28 @@ function GetTenonStrategy( Proc, Part) Machining.Milling.ToolInfo = {} Machining.Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if Machining.Milling.ToolInfo.nToolIndex then - Machining.Milling.bIsApplicable = true - -- calcolo passate necessarie - Machining.nMillingPathsNeeded = ceil( Proc.FeatureInfo.dTenonMaxDist / TOOLS[Machining.Milling.ToolInfo.nToolIndex].dSideStep) - local ParametersMRR = {} - ParametersMRR.nToolIndex = Machining.Milling.ToolInfo.nToolIndex - Result.Milling.dMRR = MachiningLib.GetToolMRR( ParametersMRR) - if Machining.Milling.ToolInfo.dResidualDepth < 10 * GEO.EPS_SMALL then - Result.Milling.sStatus = 'Completed' - else - Result.Milling.sStatus = 'Not-Completed' - Result.Milling.sInfo = 'Tenon not complete, left ' .. ceil( Machining.Milling.ToolInfo.dResidualDepth) .. 'mm' + local bMachIsOk = true + if ( Proc.FeatureInfo.vtTenonN[3] < 0 and TOOLS[Machining.Milling.ToolInfo.nToolIndex].SetupInfo.HeadType.bTop) or + ( Proc.FeatureInfo.vtTenonN[3] > 0 and TOOLS[Machining.Milling.ToolInfo.nToolIndex].SetupInfo.HeadType.bBottom) then + local dTotalLen = TOOLS[Machining.Milling.ToolInfo.nToolIndex].dLength + TOOLS[Machining.Milling.ToolInfo.nToolIndex].SetupInfo.dPivot + local dHorizSpace = dTotalLen * sqrt( 1 - ( Proc.FeatureInfo.vtTenonN[3] * Proc.FeatureInfo.vtTenonN[3])) + if dHorizSpace - ( TOOLS[Machining.Milling.ToolInfo.nToolIndex].SetupInfo.dCAxisSideEncumbrance / 2) < Proc.b3Box:getDimX() then + bMachIsOk = false + end + end + if bMachIsOk then + Machining.Milling.bIsApplicable = true + -- calcolo passate necessarie + Machining.nMillingPathsNeeded = ceil( Proc.FeatureInfo.dTenonMaxDist / TOOLS[Machining.Milling.ToolInfo.nToolIndex].dSideStep) + local ParametersMRR = {} + ParametersMRR.nToolIndex = Machining.Milling.ToolInfo.nToolIndex + Result.Milling.dMRR = MachiningLib.GetToolMRR( ParametersMRR) + if Machining.Milling.ToolInfo.dResidualDepth < 10 * GEO.EPS_SMALL then + Result.Milling.sStatus = 'Completed' + else + Result.Milling.sStatus = 'Not-Completed' + Result.Milling.sInfo = 'Tenon not complete, left ' .. ceil( Machining.Milling.ToolInfo.dResidualDepth) .. 'mm' + end end end