- in MachiningLib miglioramenti a GetBladeEngagement
This commit is contained in:
+30
-31
@@ -287,33 +287,30 @@ end
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- ritorna se la faccia e il lato sono lavorabili e, se sì, il modo di lavorare (standard/DownUp)
|
||||
-- TODO si dovrà decidere come tagliare anche se pezzo corto (il motore non deve ingombrare con il pinzaggio)
|
||||
-- valutare se restituire, se disponibili, entrambe le soluzioni e demandare la decisione alla FaceByBlade
|
||||
-- TODO da gestire riduzione percorso
|
||||
function MachiningLib.GetBladeEngagement( Face, Edge, Part, Tool, dDepthToMachine, bIsDicing)
|
||||
local sBladeEngagement = 'Standard'
|
||||
|
||||
-- la normale della faccia permette di lavorare in modo standard, ma potrebbero esserci collisioni che fanno fallire il taglio
|
||||
-- se cubetti si controlla solo asse Z e si passa subito al DownUp (ci sarebbe collisione con il materiale già rimosso)
|
||||
if not IsFaceZOutOfRange( Face.vtN, Tool) then
|
||||
|
||||
-- se cubetti si controlla solo asse Z (ci sarebbe collisione con il materiale già rimosso)
|
||||
if bIsDicing then
|
||||
local bCollisionFound, bMoveAfterSplit = PreCollisionLib.CheckCollisionWithAxis( 'Z', Edge, Face.vtN, Face.vtN, Part, Tool, dDepthToMachine)
|
||||
local bCollisionFound
|
||||
local bMoveAfterSplitZ, bMoveAfterSplitC, bMoveAfterSplitAB
|
||||
|
||||
return not bCollisionFound, sBladeEngagement, bMoveAfterSplit
|
||||
bCollisionFound, bMoveAfterSplitZ = PreCollisionLib.CheckCollisionWithAxis( 'Z', Edge, Face.vtN, Face.vtN, Part, Tool, dDepthToMachine)
|
||||
|
||||
if not ( bIsDicing or bCollisionFound) then
|
||||
bCollisionFound, bMoveAfterSplitC = PreCollisionLib.CheckCollisionWithAxis( 'C', Edge, Face.vtN, Face.vtN, Part, Tool, dDepthToMachine)
|
||||
end
|
||||
|
||||
local bMoveAfterSplit = false
|
||||
|
||||
local bCollisionFoundZ, bMoveAfterSplitZ = PreCollisionLib.CheckCollisionWithAxis( 'Z', Edge, Face.vtN, Face.vtN, Part, Tool, dDepthToMachine)
|
||||
|
||||
local bCollisionFoundC, bMoveAfterSplitC = PreCollisionLib.CheckCollisionWithAxis( 'C', Edge, Face.vtN, Face.vtN, Part, Tool, dDepthToMachine)
|
||||
|
||||
local bCollisionFoundAB, bMoveAfterSplitAB = PreCollisionLib.CheckCollisionWithAxis( 'AB', Edge, Face.vtN, Face.vtN, Part, Tool, dDepthToMachine)
|
||||
if not ( bIsDicing or bCollisionFound) then
|
||||
bCollisionFound, bMoveAfterSplitAB = PreCollisionLib.CheckCollisionWithAxis( 'AB', Edge, Face.vtN, Face.vtN, Part, Tool, dDepthToMachine)
|
||||
end
|
||||
|
||||
-- se nessuna collisione trovata si ritorna lavorazione fattibile, altrimenti si proseguirà al DownUp
|
||||
if not ( bCollisionFoundZ or bCollisionFoundC or bCollisionFoundAB) then
|
||||
if bMoveAfterSplitZ or bMoveAfterSplitC or bMoveAfterSplitAB then
|
||||
bMoveAfterSplit = true
|
||||
end
|
||||
if not bCollisionFound then
|
||||
local sBladeEngagement = 'Standard'
|
||||
local bMoveAfterSplit = bMoveAfterSplitZ or bMoveAfterSplitC or bMoveAfterSplitAB
|
||||
|
||||
return true, sBladeEngagement, bMoveAfterSplit
|
||||
end
|
||||
@@ -327,26 +324,28 @@ function MachiningLib.GetBladeEngagement( Face, Edge, Part, Tool, dDepthToMachin
|
||||
return false
|
||||
end
|
||||
|
||||
local bCollisionFoundZ, bMoveAfterSplitZ = PreCollisionLib.CheckCollisionWithAxis( 'Z', Edge, Face.vtN, -Face.vtN, Part, Tool, dDepthToMachine)
|
||||
if bCollisionFoundZ then
|
||||
return false
|
||||
local bCollisionFound
|
||||
local bMoveAfterSplitZ, bMoveAfterSplitC, bMoveAfterSplitAB
|
||||
|
||||
bCollisionFound, bMoveAfterSplitZ = PreCollisionLib.CheckCollisionWithAxis( 'Z', Edge, Face.vtN, -Face.vtN, Part, Tool, dDepthToMachine)
|
||||
|
||||
if not bCollisionFound then
|
||||
bCollisionFound, bMoveAfterSplitC = PreCollisionLib.CheckCollisionWithAxis( 'C', Edge, Face.vtN, -Face.vtN, Part, Tool, dDepthToMachine)
|
||||
end
|
||||
|
||||
local bCollisionFoundC, bMoveAfterSplitC = PreCollisionLib.CheckCollisionWithAxis( 'C', Edge, Face.vtN, -Face.vtN, Part, Tool, dDepthToMachine)
|
||||
if bCollisionFoundC then
|
||||
return false
|
||||
if not bCollisionFound then
|
||||
bCollisionFound, bMoveAfterSplitAB = PreCollisionLib.CheckCollisionWithAxis( 'AB', Edge, Face.vtN, -Face.vtN, Part, Tool, dDepthToMachine)
|
||||
end
|
||||
|
||||
local bCollisionFoundAB, bMoveAfterSplitAB = PreCollisionLib.CheckCollisionWithAxis( 'AB', Edge, Face.vtN, -Face.vtN, Part, Tool, dDepthToMachine)
|
||||
if bCollisionFoundAB then
|
||||
return false
|
||||
-- se si è arrivati qui senza collisioni il DownUp è fattibile
|
||||
if not bCollisionFound then
|
||||
local sBladeEngagement = 'DownUp'
|
||||
local bMoveAfterSplit = bMoveAfterSplitZ or bMoveAfterSplitC or bMoveAfterSplitAB
|
||||
|
||||
return true, sBladeEngagement, bMoveAfterSplit
|
||||
end
|
||||
|
||||
-- se si è arrivati qui il DownUp è fattibile
|
||||
sBladeEngagement = 'DownUp'
|
||||
local bMoveAfterSplit = bMoveAfterSplitZ or bMoveAfterSplitC or bMoveAfterSplitAB
|
||||
|
||||
return true, sBladeEngagement, bMoveAfterSplit
|
||||
return false
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user