diff --git a/StrategyLibs/BLADETOWASTE.lua b/StrategyLibs/BLADETOWASTE.lua index ff8dfd2..7f64510 100644 --- a/StrategyLibs/BLADETOWASTE.lua +++ b/StrategyLibs/BLADETOWASTE.lua @@ -512,6 +512,14 @@ local function GetDualSideCutStrategy( Proc, OptionalParameters) -- se lama ci arriva si assegnano utensili e profondità da ritornare if ToolInfo.nToolIndex and ToolInfo.dResidualDepth < 10 * GEO.EPS_SMALL then + -- si deve decidere se fare per primo il taglio opposto oppure no + local bIsOppositeCutFirst = false + local vtTemp = EdgeToMachine.vtN ^ FaceToMachine.vtN + local bIsEdgeLeftSide = vtTemp:getZ() < 10 * GEO.EPS_SMALL + if ( TOOLS[ToolInfo.nToolIndex].bIsCCW and bIsEdgeLeftSide) or ( not TOOLS[ToolInfo.nToolIndex].bIsCCW and not bIsEdgeLeftSide) then + bIsOppositeCutFirst = true + end + CuttingParametersList = { { nToolIndex = ToolInfo.nToolIndex, @@ -520,7 +528,8 @@ local function GetDualSideCutStrategy( Proc, OptionalParameters) { nToolIndex = ToolInfo.nToolIndex, dDepthToMachine = dDepthToMachine - } + }, + bIsOppositeCutFirst = bIsOppositeCutFirst } else EdgeToMachine = nil @@ -592,6 +601,10 @@ local function CutWholeWaste( Proc, Part, OptionalParameters) dExtendAfterTail = dExtendAfterTail, bReduceBladePath = bReduceBladePath } + -- se necessario, si inverte l'ordine delle lavorazioni per avere il secondo taglio verso l'alto + if not CuttingParametersList.bIsOppositeCutFirst then + OptionalParametersFaceByBlade, OptionalParametersFaceByBladeDouble = OptionalParametersFaceByBladeDouble, OptionalParametersFaceByBlade + end Cutting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParametersFaceByBlade) CuttingDouble = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParametersFaceByBladeDouble)