From 56ca5a74b96fb2557ee785693dbacff179a8bb03 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Thu, 4 Dec 2025 19:02:02 +0100 Subject: [PATCH] - in PreCollisionLib e MachiningLib refactoring di CheckCollisionWithAxis --- LuaLibs/MachiningLib.lua | 35 +++++++++++++++++++++++++++-------- LuaLibs/PreCollisionLib.lua | 13 +++++++++++-- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index aaae248..f2aea27 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -290,6 +290,7 @@ end -- TODO da gestire riduzione percorso function MachiningLib.GetBladeEngagement( Parameters, OptionalParameters) + -- parametri obbligatori local Face = Parameters.Face local Edge = Parameters.Edge local Part = Parameters.Part @@ -307,14 +308,23 @@ function MachiningLib.GetBladeEngagement( Parameters, OptionalParameters) local bCollisionFound local bMoveAfterSplitZ, bMoveAfterSplitC, bMoveAfterSplitAB - bCollisionFound, bMoveAfterSplitZ = PreCollisionLib.CheckCollisionWithAxis( 'Z', Edge, Face.vtN, Face.vtN, Part, Tool, dDepthToMachine) + local CheckCollisionParameters = { + Edge = Edge, + vtNFace = Face.vtN, + vtHead = Face.vtN, + Part = Part, + Tool = Tool, + dDepthToMachine = dDepthToMachine + } + + bCollisionFound, bMoveAfterSplitZ = PreCollisionLib.CheckCollisionWithAxis( 'Z', CheckCollisionParameters) if not bCollisionFound then - bCollisionFound, bMoveAfterSplitC = PreCollisionLib.CheckCollisionWithAxis( 'C', Edge, Face.vtN, Face.vtN, Part, Tool, dDepthToMachine, bIsDicing) + bCollisionFound, bMoveAfterSplitC = PreCollisionLib.CheckCollisionWithAxis( 'C', CheckCollisionParameters, { bCheckOnlyRestlength = bIsDicing}) end if not bCollisionFound then - bCollisionFound, bMoveAfterSplitAB = PreCollisionLib.CheckCollisionWithAxis( 'AB', Edge, Face.vtN, Face.vtN, Part, Tool, dDepthToMachine, bIsDicing) + bCollisionFound, bMoveAfterSplitAB = PreCollisionLib.CheckCollisionWithAxis( 'AB', CheckCollisionParameters, { bCheckOnlyRestlength = bIsDicing}) end -- se nessuna collisione trovata si ritorna lavorazione fattibile, altrimenti si proseguirà al DownUp @@ -322,7 +332,7 @@ function MachiningLib.GetBladeEngagement( Parameters, OptionalParameters) local sBladeEngagement = 'Standard' local bMoveAfterSplit = bMoveAfterSplitZ or bMoveAfterSplitC or bMoveAfterSplitAB - return true, sBladeEngagement, bMoveAfterSplit + return true, sBladeEngagement, bMoveAfterSplit, sLeadInOutType end end @@ -337,14 +347,23 @@ function MachiningLib.GetBladeEngagement( Parameters, OptionalParameters) local bCollisionFound local bMoveAfterSplitZ, bMoveAfterSplitC, bMoveAfterSplitAB - bCollisionFound, bMoveAfterSplitZ = PreCollisionLib.CheckCollisionWithAxis( 'Z', Edge, Face.vtN, -Face.vtN, Part, Tool, dDepthToMachine) + local CheckCollisionParameters = { + Edge = Edge, + vtNFace = Face.vtN, + vtHead = -Face.vtN, + Part = Part, + Tool = Tool, + dDepthToMachine = dDepthToMachine + } + + bCollisionFound, bMoveAfterSplitZ = PreCollisionLib.CheckCollisionWithAxis( 'Z', CheckCollisionParameters) if not bCollisionFound then - bCollisionFound, bMoveAfterSplitC = PreCollisionLib.CheckCollisionWithAxis( 'C', Edge, Face.vtN, -Face.vtN, Part, Tool, dDepthToMachine) + bCollisionFound, bMoveAfterSplitC = PreCollisionLib.CheckCollisionWithAxis( 'C', CheckCollisionParameters) end if not bCollisionFound then - bCollisionFound, bMoveAfterSplitAB = PreCollisionLib.CheckCollisionWithAxis( 'AB', Edge, Face.vtN, -Face.vtN, Part, Tool, dDepthToMachine) + bCollisionFound, bMoveAfterSplitAB = PreCollisionLib.CheckCollisionWithAxis( 'AB', CheckCollisionParameters) end -- se si è arrivati qui senza collisioni il DownUp è fattibile @@ -352,7 +371,7 @@ function MachiningLib.GetBladeEngagement( Parameters, OptionalParameters) local sBladeEngagement = 'DownUp' local bMoveAfterSplit = bMoveAfterSplitZ or bMoveAfterSplitC or bMoveAfterSplitAB - return true, sBladeEngagement, bMoveAfterSplit + return true, sBladeEngagement, bMoveAfterSplit, sLeadInOutType end return false diff --git a/LuaLibs/PreCollisionLib.lua b/LuaLibs/PreCollisionLib.lua index dc1e8d2..998d0b2 100644 --- a/LuaLibs/PreCollisionLib.lua +++ b/LuaLibs/PreCollisionLib.lua @@ -139,10 +139,19 @@ end ------------------------------------------------------------------------------------------------------------- -- controllo collisione con verifica intersezione trimesh e geometrie da macchina -- TODO refactoring parametri in tabelle -function PreCollisionLib.CheckCollisionWithAxis( sAxis, Edge, vtNFace, vtHead, Part, Tool, dDepthToMachine, bCheckOnlyRestlength) +function PreCollisionLib.CheckCollisionWithAxis( sAxis, MachiningParameters, OptionalParameters) + + -- parametri obbligatori + local Edge = MachiningParameters.Edge + local vtNFace = MachiningParameters.vtNFace + local vtHead = MachiningParameters.vtHead + local Part = MachiningParameters.Part + local Tool = MachiningParameters.Tool + local dDepthToMachine = MachiningParameters.dDepthToMachine -- parametri opzionali - bCheckOnlyRestlength = bCheckOnlyRestlength or false + OptionalParameters = OptionalParameters or {} + local bCheckOnlyRestlength = OptionalParameters.bCheckOnlyRestlength or false -- se normale faccia non parallela a direzione testa c'è qualcosa che non va if not AreSameOrOppositeVectorApprox( vtNFace, vtHead) then