- in PreCollisionLib e MachiningLib refactoring di CheckCollisionWithAxis

This commit is contained in:
luca.mazzoleni
2025-12-04 19:02:02 +01:00
parent ad1ea741d0
commit 56ca5a74b9
2 changed files with 38 additions and 10 deletions
+27 -8
View File
@@ -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
+11 -2
View File
@@ -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