From fc7432a97a37c04903d25e8d642ccf414331d1ed Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Mon, 19 Jan 2026 09:15:40 +0100 Subject: [PATCH] - in FACEBYBLADE migliorie ai tagli - in STR0012 implementata funzione generale per verifica problemi pinzaggio --- Strategies/Standard/STR0012/STR0012.lua | 3 +- StrategyLibs/BLADETOWASTE.lua | 3 +- StrategyLibs/FACEBYBLADE.lua | 37 ++++++++++++++----------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/Strategies/Standard/STR0012/STR0012.lua b/Strategies/Standard/STR0012/STR0012.lua index edac90b..54e714e 100644 --- a/Strategies/Standard/STR0012/STR0012.lua +++ b/Strategies/Standard/STR0012/STR0012.lua @@ -88,8 +88,7 @@ function STR0012.Make( bAddMachining, Proc, Part, CustomParameters) -- considerazioni necessarie a determinare se lavorare con codolo oppure no local bKeepWasteAttached = ( Strategy.Parameters.sCuttingStrategy == 'KEEP_WASTE_ATTACHED') local bDropWaste = ( Strategy.Parameters.sCuttingStrategy == 'DROP_WASTE') - local dFeatureMaxNotClampableLengthHead, dFeatureMaxNotClampableLengthTail = NewProc.NotClampableLength.dNotClampableLengthHead, NewProc.NotClampableLength.dNotClampableLengthTail - local bFeatureHindersClamping = FeatureLib.IsMachiningLong( max( dFeatureMaxNotClampableLengthHead, dFeatureMaxNotClampableLengthTail), Part, { dMaxSegmentLength = BeamData.LONGCUT_ENDLEN}) + local bFeatureHindersClamping = MachiningLib.IsFeatureHinderingClamping( Proc, Part) -- lavorazione con codolo if ( bFeatureHindersClamping and not bDropWaste) diff --git a/StrategyLibs/BLADETOWASTE.lua b/StrategyLibs/BLADETOWASTE.lua index 2cc8454..014b9a1 100644 --- a/StrategyLibs/BLADETOWASTE.lua +++ b/StrategyLibs/BLADETOWASTE.lua @@ -855,8 +855,7 @@ local function CutWithDicing( Proc, Part, OptionalParameters) local nAddGrpId = BeamLib.GetAddGroup( Part.id) local nSurfToCut = EgtSurfTmBySewing( nAddGrpId, vCuts[i], false) local ProcTrimesh = FeatureLib.GetProcFromTrimesh( nSurfToCut, Part) - - -- TODO ridurre con bReduceBladePath anche questi tagli? + local OptionalParametersCutWholeWaste = { nToolIndex = nToolIndex, dExtendAfterTail = dExtendAfterTail, diff --git a/StrategyLibs/FACEBYBLADE.lua b/StrategyLibs/FACEBYBLADE.lua index 5da0469..6fe0661 100644 --- a/StrategyLibs/FACEBYBLADE.lua +++ b/StrategyLibs/FACEBYBLADE.lua @@ -293,28 +293,19 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar -- parametri della lavorazione -- profondità (parametro DEPTH) - Cutting.sDepth = sDepth + Cutting.sDepth = sDepth -- inizio e fine aperti o chiusi - Cutting.bIsStartClosed = not EdgeToMachine.bIsStartOpen - Cutting.bIsEndClosed = not EdgeToMachine.bIsEndOpen + Cutting.bIsStartClosed = not EdgeToMachine.bIsStartOpen + Cutting.bIsEndClosed = not EdgeToMachine.bIsEndOpen - -- se dicing, lato di lavoro e inversione per avere taglio sempre verso l'alto - if bIsDicing and ( Cutting.vtEdgeDirection:getZ() > 100 * GEO.EPS_SMALL) then - Cutting.nWorkside = MCH_MILL_WS.LEFT - Cutting.bInvert = false - elseif bIsDicing and ( Cutting.vtEdgeDirection:getZ() < -100 * GEO.EPS_SMALL) then + -- si settano lato di lavoro e inversione per avere concordanza + if TOOLS[Cutting.nToolIndex].bIsCCW then Cutting.nWorkside = MCH_MILL_WS.RIGHT Cutting.bInvert = true - -- altrimenti comanda la rotazione else - if TOOLS[Cutting.nToolIndex].bIsCCW then - Cutting.nWorkside = MCH_MILL_WS.RIGHT - Cutting.bInvert = true - else - Cutting.nWorkside = MCH_MILL_WS.LEFT - Cutting.bInvert = false - end + Cutting.nWorkside = MCH_MILL_WS.LEFT + Cutting.bInvert = false end -- ToolInvert @@ -323,6 +314,20 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar Cutting.bInvert = not Cutting.bInvert end + -- TODO al momento commentato per trovare i casi in cui nei riposizionamenti scende sul pezzo; poi valutare se lasciare o togliere + -- se dicing, lato di lavoro e inversione per avere taglio sempre verso l'alto + -- if bIsDicing + -- and ( Cutting.bInvert and Cutting.vtEdgeDirection:getZ() > 100 * GEO.EPS_SMALL) + -- or ( ( not Cutting.bInvert) and Cutting.vtEdgeDirection:getZ() < -100 * GEO.EPS_SMALL) then + + -- Cutting.bInvert = not Cutting.bInvert + -- if Cutting.nWorkside == MCH_MILL_WS.LEFT then + -- Cutting.nWorkside = MCH_MILL_WS.RIGHT + -- else + -- Cutting.nWorkside = MCH_MILL_WS.LEFT + -- end + -- end + -- analisi fattibilità lavorazione dal lato opposto if OppositeToolDirectionMode ~= 'Disabled' then