From c06c2378ce1ed3b3d4c7e04f1fc09e3872ba66de Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Tue, 18 Mar 2025 19:31:55 +0100 Subject: [PATCH] - in BLADEKEEPWASTE aggiunta lavorazione eventuali facce di chiusura --- LuaLibs/BeamExec.lua | 1 + StrategyLibs/BLADEKEEPWASTE.lua | 35 +++++++++++++-------------------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 2f2af28..08b9d21 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -1459,6 +1459,7 @@ function BeamExec.ProcessMachinings( PARTS) MACHININGS = MachiningLib.PrepareMachiningsForSorting( PARTS[nPart]) -- TODO completare ordinamento. Mancano le dipendenze. MACHININGS = BeamLib.StableSort( MACHININGS, MachiningLib.CompareMachinings) + -- TODO qui bisogna inserire qualcosa per ripristinare l'ordine interno se rovinato -- finiti i calcoli di applicazione delle lavorazioni, si riporta il pezzo nello zero della fase nRawId = PARTS[nPart].idRaw diff --git a/StrategyLibs/BLADEKEEPWASTE.lua b/StrategyLibs/BLADEKEEPWASTE.lua index 5e84652..6adf197 100644 --- a/StrategyLibs/BLADEKEEPWASTE.lua +++ b/StrategyLibs/BLADEKEEPWASTE.lua @@ -108,33 +108,19 @@ function BLADEKEEPWASTE.Make( Proc, Part, OptionalParameters) end end - -- si trova la faccia da lavorare + -- si trovano le facce da lavorare local FaceToMachine = {} + local LongFaces = {} if Proc.nFct == 1 then FaceToMachine = Proc.Faces[1] - elseif Proc.MainFaces then - FaceToMachine = Proc.MainFaces.BottomFaces[1] else - local BottomFaces = {} - -- la faccia di fondo ha sempre Fct - 1 adiacenze - local FacesByAdjacencyNumber = FaceData.GetFacesByAdjacencyNumber( Proc) - if FacesByAdjacencyNumber then - BottomFaces = FacesByAdjacencyNumber[ Proc.nFct - 1] - -- si rimuovono le facce non adatte ad essere lavorate - local nBottomFaces = #BottomFaces - local nCurrentFace = 1 - while nCurrentFace <= nBottomFaces do - if not BottomFaces[nCurrentFace].bIsOkForMachining then - table.remove( BottomFaces, nCurrentFace) - nBottomFaces = nBottomFaces - 1 - end - nCurrentFace = nCurrentFace + 1 - end - -- la BottomFace 1 รจ sempre quella con minor elevazione - table.sort( BottomFaces, function (a, b) return a.dElevation < b.dElevation end) + if not Proc.MainFaces then + Proc.MainFaces = FaceData.GetMainFaces( Proc, Part) end - FaceToMachine = BottomFaces[1] + FaceToMachine = Proc.MainFaces.BottomFaces[1] + LongFaces = Proc.MainFaces.LongFaces end + -- si trova il lato da lavorare local EdgeToMachine = {} @@ -163,6 +149,13 @@ function BLADEKEEPWASTE.Make( Proc, Part, OptionalParameters) OptionalParametersFaceByBlade.bOppositeToolDirection = true Cutting2 = FaceByBlade.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalParametersFaceByBlade) table.insert( Blade.Result, Cutting2) + -- eventuali facce di chiusura + for i = 1, #LongFaces do + local CuttingLongFace = {} + OptionalParametersFaceByBlade = { dDepthToMachine = dDepthToMachine, bIsSplitFeature = bIsSplitFeature, dExtendAfterTail = OptionalParameters.dExtendAfterTail} + CuttingLongFace = FaceByBlade.Make( Proc, Part, Proc.MainFaces.LongFaces[i], Proc.MainFaces.LongFaces[i].MainEdges.BottomEdge, OptionalParametersFaceByBlade) + table.insert( Blade.Result, CuttingLongFace) + end -- lavorazioni raggruppate in unica lista local Machinings = {}