From 771c1367b1704bbf34c8d4e24f76a55f65788d09 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Mon, 20 Apr 2026 10:47:41 +0200 Subject: [PATCH] - in PreSimulationLib, se taglio perpendicolare a cubetti, non si verifica l'elevazione reale del taglio --- LuaLibs/MachiningLib.lua | 4 +++- LuaLibs/PreSimulationLib.lua | 3 ++- StrategyLibs/BLADETOWASTE.lua | 3 ++- StrategyLibs/FACEBYBLADE.lua | 11 ++++++++--- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 05f173c..daa64da 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -619,6 +619,7 @@ function MachiningLib.FindBlade( Proc, ToolSearchParameters) local bIsDicing = ToolSearchParameters.bIsDicing or false local sRestLengthSideForPreSimulation = ToolSearchParameters.sRestLengthSideForPreSimulation or 'Tail' local bCannotSplitRestLength = ToolSearchParameters.bCannotSplitRestLength or false + local bDisableRealElevationCheck = ToolSearchParameters.bDisableRealElevationCheck or false local nBestToolIndex local dBestToolResidualDepth = 0 @@ -652,7 +653,8 @@ function MachiningLib.FindBlade( Proc, ToolSearchParameters) local BladeEngagementOptionalParameters = { bIsDicing = bIsDicing, sRestLengthSideForPreSimulation = sRestLengthSideForPreSimulation, - bCannotSplitRestLength = bCannotSplitRestLength + bCannotSplitRestLength = bCannotSplitRestLength, + bDisableRealElevationCheck = bDisableRealElevationCheck } TIMER:startElapsed( 'GetBladeEngagement') bIsBladeOk, CurrentEngagement = MachiningLib.GetBladeEngagement( BladeEngagementParameters, BladeEngagementOptionalParameters) diff --git a/LuaLibs/PreSimulationLib.lua b/LuaLibs/PreSimulationLib.lua index 7afead4..417d128 100644 --- a/LuaLibs/PreSimulationLib.lua +++ b/LuaLibs/PreSimulationLib.lua @@ -472,6 +472,7 @@ function PreSimulationLib.CheckCollision( sBladeEngagement, Parameters, Optional local sBlockedAxis = OptionalParameters.sBlockedAxis local bIsDicing = OptionalParameters.bIsDicing or false + local bDisableRealElevationCheck = OptionalParameters.bDisableRealElevationCheck or false local bCheckOnlyRestlengthForAxisABC = false -- se cubetti in modalità standard (no DownUp) gli assi AB e C si controllano solo con grezzo (ci sarebbe collisione con il materiale già rimosso controllando AB e C con pezzo) @@ -479,7 +480,7 @@ function PreSimulationLib.CheckCollision( sBladeEngagement, Parameters, Optional bCheckOnlyRestlengthForAxisABC = true -- se l'elevazione reale (rispetto al pezzo + eventuale materiale in testa/coda) è maggiore del massimo materiale è sempre collisione -- TODO rifare con funzione - else + elseif not bDisableRealElevationCheck then local Edge = Parameters.Edge local vtNFace = Parameters.vtNFace local dDepthToMachine = Parameters.dDepthToMachine diff --git a/StrategyLibs/BLADETOWASTE.lua b/StrategyLibs/BLADETOWASTE.lua index 2d50231..750d6d3 100644 --- a/StrategyLibs/BLADETOWASTE.lua +++ b/StrategyLibs/BLADETOWASTE.lua @@ -920,7 +920,8 @@ local function CalculateDiceMachinings( vCuts, Parameters) dExtendAfterTail = dExtendAfterTail, bIsDicing = true, sRestLengthSideForPreSimulation = sRestLengthSideForPreSimulation, - bCannotSplitRestLength = bCannotSplitRestLength + bCannotSplitRestLength = bCannotSplitRestLength, + bDisableRealElevationCheck = ( i % 2) > 0 -- se taglio perpendicolare non si deve mai considerare il materiale precedente } Cutting = FaceByBlade.Make( ProcTrimesh, Part, FaceToMachine, EdgeToMachine, OptionalParametersFaceByBlade) Cutting.ptCenter = Point3d( ProcTrimesh.Faces[1].ptCenter:getX(), 0, 0) diff --git a/StrategyLibs/FACEBYBLADE.lua b/StrategyLibs/FACEBYBLADE.lua index 299523b..c81c03a 100644 --- a/StrategyLibs/FACEBYBLADE.lua +++ b/StrategyLibs/FACEBYBLADE.lua @@ -211,6 +211,7 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar local bIsDicing = OptionalParameters.bIsDicing or false local sRestLengthSideForPreSimulation = OptionalParameters.sRestLengthSideForPreSimulation or 'Tail' local bCannotSplitRestLength = OptionalParameters.bCannotSplitRestLength or false + local bDisableRealElevationCheck = OptionalParameters.bDisableRealElevationCheck or false -- lunghezze, direzioni e punti caratteristici della lavorazione e del lato lavorato Cutting.dEdgeLength = EdgeToMachine.dLength @@ -234,7 +235,8 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar local BladeEngagementOptionalParameters = { bIsDicing = bIsDicing, sRestLengthSideForPreSimulation = sRestLengthSideForPreSimulation, - bCannotSplitRestLength = bCannotSplitRestLength + bCannotSplitRestLength = bCannotSplitRestLength, + bDisableRealElevationCheck = bDisableRealElevationCheck } local Engagement TIMER:startElapsed( 'GetBladeEngagement') @@ -258,6 +260,7 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar ToolSearchParameters.Part = Part ToolSearchParameters.sRestLengthSideForPreSimulation = sRestLengthSideForPreSimulation ToolSearchParameters.bCannotSplitRestLength = bCannotSplitRestLength + ToolSearchParameters.bDisableRealElevationCheck = bDisableRealElevationCheck local ToolInfo = MachiningLib.FindBlade( Proc, ToolSearchParameters) Cutting.nToolIndex = ToolInfo.nToolIndex @@ -355,7 +358,8 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar local BladeEngagementOptionalParameters = { bIsDicing = bIsDicing, sRestLengthSideForPreSimulation = sRestLengthSideForPreSimulation, - bCannotSplitRestLength = bCannotSplitRestLength + bCannotSplitRestLength = bCannotSplitRestLength, + bDisableRealElevationCheck = bDisableRealElevationCheck } TIMER:startElapsed( 'GetBladeEngagement') local bIsApplicableOpposite, EngagementOpposite = MachiningLib.GetBladeEngagement( BladeEngagementParameters, BladeEngagementOptionalParameters) @@ -472,7 +476,8 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar local BladeEngagementOptionalParameters = { bIsDicing = bIsDicing, sRestLengthSideForPreSimulation = sRestLengthSideForPreSimulation, - bCannotSplitRestLength = bCannotSplitRestLength + bCannotSplitRestLength = bCannotSplitRestLength, + bDisableRealElevationCheck = bDisableRealElevationCheck } TIMER:startElapsed( 'GetBladeEngagement') local bIsApplicable, CurrentEngagement = MachiningLib.GetBladeEngagement( BladeEngagementParameters, BladeEngagementOptionalParameters )