diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index eb8b92e..e063b4d 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -285,39 +285,7 @@ local function IsFaceZOutOfRange( vtNFace, Tool) end ------------------------------------------------------------------------------------------------------------- -local function CheckCollision( sBladeEngagement, Parameters, OptionalParameters) - local bCollisionFound - local bMoveAfterSplitZ, bMoveAfterSplitC, bMoveAfterSplitAB - - -- parametri opzionali, in parte da far transitare - OptionalParameters = OptionalParameters or {} - local OptionalParametersCheckCollisionWithAxis = {} - OptionalParametersCheckCollisionWithAxis.bCheckOnlyRestlength = false - if OptionalParameters.MachiningPoints then - OptionalParametersCheckCollisionWithAxis.MachiningPoints = BeamLib.TableCopyDeep( OptionalParameters.MachiningPoints) - end - - -- asse Z si controlla sempre - bCollisionFound, bMoveAfterSplitZ = PreSimulationLib.CheckCollisionWithAxis( 'Z', Parameters, OptionalParametersCheckCollisionWithAxis) - - -- 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) - if sBladeEngagement == 'Standard' then - OptionalParametersCheckCollisionWithAxis.bCheckOnlyRestlength = OptionalParameters.bIsDicing or false - end - - if not bCollisionFound then - bCollisionFound, bMoveAfterSplitAB = PreSimulationLib.CheckCollisionWithAxis( 'AB', Parameters, OptionalParametersCheckCollisionWithAxis) - end - - if not bCollisionFound then - bCollisionFound, bMoveAfterSplitC = PreSimulationLib.CheckCollisionWithAxis( 'C', Parameters, OptionalParametersCheckCollisionWithAxis) - end - - local bMoveAfterSplit = bMoveAfterSplitZ or bMoveAfterSplitC or bMoveAfterSplitAB - - return bCollisionFound, bMoveAfterSplit -end ------------------------------------------------------------------------------------------------------------- -- ritorna se la faccia e il lato sono lavorabili e, se sì, il modo di lavorare (standard/DownUp) @@ -353,7 +321,7 @@ function MachiningLib.GetBladeEngagement( Parameters, OptionalParameters) bIsDicing = bIsDicing } - local bCollisionFound, bMoveAfterSplit = CheckCollision( sBladeEngagement, CheckCollisionParameters, CheckCollisionOptionalParameters) + local bCollisionFound, bMoveAfterSplit = PreSimulationLib.CheckCollision( sBladeEngagement, CheckCollisionParameters, CheckCollisionOptionalParameters) -- se nessuna collisione trovata si ritorna lavorazione fattibile, altrimenti si proseguirà al DownUp if not bCollisionFound then @@ -381,7 +349,7 @@ function MachiningLib.GetBladeEngagement( Parameters, OptionalParameters) } local CheckCollisionOptionalParameters = {} - local bCollisionFound, bMoveAfterSplit = CheckCollision( sBladeEngagement, CheckCollisionParameters, CheckCollisionOptionalParameters) + local bCollisionFound, bMoveAfterSplit = PreSimulationLib.CheckCollision( sBladeEngagement, CheckCollisionParameters, CheckCollisionOptionalParameters) -- se nessuna collisione il DownUp è fattibile if not bCollisionFound then diff --git a/LuaLibs/PreSimulationLib.lua b/LuaLibs/PreSimulationLib.lua index 45af99b..02d8b25 100644 --- a/LuaLibs/PreSimulationLib.lua +++ b/LuaLibs/PreSimulationLib.lua @@ -216,6 +216,41 @@ function PreSimulationLib.CheckCollisionWithAxis( sAxis, MachiningParameters, Op return false, bMoveAfterSplit end +------------------------------------------------------------------------------------------------------------- +function PreSimulationLib.CheckCollision( sBladeEngagement, Parameters, OptionalParameters) + + local bCollisionFound + local bMoveAfterSplitZ, bMoveAfterSplitC, bMoveAfterSplitAB + + -- parametri opzionali, in parte da far transitare + OptionalParameters = OptionalParameters or {} + local OptionalParametersCheckCollisionWithAxis = {} + OptionalParametersCheckCollisionWithAxis.bCheckOnlyRestlength = false + if OptionalParameters.MachiningPoints then + OptionalParametersCheckCollisionWithAxis.MachiningPoints = BeamLib.TableCopyDeep( OptionalParameters.MachiningPoints) + end + + -- asse Z si controlla sempre + bCollisionFound, bMoveAfterSplitZ = PreSimulationLib.CheckCollisionWithAxis( 'Z', Parameters, OptionalParametersCheckCollisionWithAxis) + + -- 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) + if sBladeEngagement == 'Standard' then + OptionalParametersCheckCollisionWithAxis.bCheckOnlyRestlength = OptionalParameters.bIsDicing or false + end + + if not bCollisionFound then + bCollisionFound, bMoveAfterSplitAB = PreSimulationLib.CheckCollisionWithAxis( 'AB', Parameters, OptionalParametersCheckCollisionWithAxis) + end + + if not bCollisionFound then + bCollisionFound, bMoveAfterSplitC = PreSimulationLib.CheckCollisionWithAxis( 'C', Parameters, OptionalParametersCheckCollisionWithAxis) + end + + local bMoveAfterSplit = bMoveAfterSplitZ or bMoveAfterSplitC or bMoveAfterSplitAB + + return bCollisionFound, bMoveAfterSplit +end + ------------------------------------------------------------------------------------------------------------- -- nel piano perpendicolare alla direzione di taglio, se c'è intersezione tra motore e trave c'è collisione -- ATTENZIONE NON PIU' USATA, verificare ed eliminare