- in MachiningLib ennesimo refactoring
This commit is contained in:
+45
-57
@@ -285,7 +285,43 @@ local function IsFaceZOutOfRange( vtNFace, Tool)
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
local function TestEngagement( sBladeEngagement, Parameters, OptionalParameters)
|
||||
|
||||
-- parametri obbligatori (parametri opzionali transitano solamente)
|
||||
local Face = Parameters.Face
|
||||
local Edge = Parameters.Edge
|
||||
local Part = Parameters.Part
|
||||
local Tool = Parameters.Tool
|
||||
local dDepthToMachine = Parameters.dDepthToMachine
|
||||
|
||||
-- il lato della testa cambia in base all'Engagement
|
||||
local vtHead
|
||||
if sBladeEngagement == 'Standard' then
|
||||
vtHead = Face.vtN
|
||||
elseif sBladeEngagement == 'DownUp' then
|
||||
vtHead = -Face.vtN
|
||||
else
|
||||
error( 'TestEngagement : unknown engagement')
|
||||
end
|
||||
|
||||
-- se l'angolo non può essere raggiunto dall'utensile si esce subito
|
||||
if IsFaceZOutOfRange( vtHead, Tool) then
|
||||
return false
|
||||
end
|
||||
|
||||
local CheckCollisionParameters = {
|
||||
Edge = Edge,
|
||||
vtNFace = Face.vtN,
|
||||
vtHead = vtHead,
|
||||
Part = Part,
|
||||
Tool = Tool,
|
||||
dDepthToMachine = dDepthToMachine
|
||||
}
|
||||
|
||||
local bCollisionFound, bMoveAfterSplit = PreSimulationLib.CheckCollision( sBladeEngagement, CheckCollisionParameters, OptionalParameters)
|
||||
|
||||
return not bCollisionFound, bMoveAfterSplit
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- ritorna se la faccia e il lato sono lavorabili e, se sì, il modo di lavorare (standard/DownUp)
|
||||
@@ -293,68 +329,20 @@ end
|
||||
-- TODO da gestire riduzione percorso
|
||||
function MachiningLib.GetBladeEngagement( Parameters, OptionalParameters)
|
||||
|
||||
local sBladeEngagement = 'Standard'
|
||||
-- test lavorazione faccia in modo standard (no DownUp)
|
||||
local bIsEngagementOk, bMoveAfterSplit = TestEngagement( 'Standard', Parameters, OptionalParameters)
|
||||
|
||||
-- parametri obbligatori
|
||||
local Face = Parameters.Face
|
||||
local Edge = Parameters.Edge
|
||||
local Part = Parameters.Part
|
||||
local Tool = Parameters.Tool
|
||||
local dDepthToMachine = Parameters.dDepthToMachine
|
||||
|
||||
-- parametri opzionali
|
||||
OptionalParameters = OptionalParameters or {}
|
||||
local bIsDicing = OptionalParameters.bIsDicing or false
|
||||
|
||||
-- la normale della faccia permette di lavorare in modo standard, ma potrebbero esserci collisioni che fanno fallire il taglio
|
||||
if not IsFaceZOutOfRange( Face.vtN, Tool) then
|
||||
|
||||
local CheckCollisionParameters = {
|
||||
Edge = Edge,
|
||||
vtNFace = Face.vtN,
|
||||
vtHead = Face.vtN,
|
||||
Part = Part,
|
||||
Tool = Tool,
|
||||
dDepthToMachine = dDepthToMachine
|
||||
}
|
||||
local CheckCollisionOptionalParameters = {
|
||||
bIsDicing = bIsDicing
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
return true, sBladeEngagement, bMoveAfterSplit, sLeadInOutType
|
||||
end
|
||||
if bIsEngagementOk then
|
||||
|
||||
return true, 'Standard', bMoveAfterSplit
|
||||
end
|
||||
|
||||
-- faccia non lavorabile in modo standard: si verifica se il DownUp è fattibile
|
||||
sBladeEngagement = 'DownUp'
|
||||
bIsEngagementOk, bMoveAfterSplit = TestEngagement( 'DownUp', Parameters, OptionalParameters)
|
||||
|
||||
-- la normale della faccia non permette il DownUp: non lavorabile in DownUp (se taglio DownUp la faccia è lavorata al contrario, vtN opposta)
|
||||
if IsFaceZOutOfRange( -Face.vtN, Tool) then
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
local CheckCollisionParameters = {
|
||||
Edge = Edge,
|
||||
vtNFace = Face.vtN,
|
||||
vtHead = -Face.vtN,
|
||||
Part = Part,
|
||||
Tool = Tool,
|
||||
dDepthToMachine = dDepthToMachine
|
||||
}
|
||||
local CheckCollisionOptionalParameters = {}
|
||||
|
||||
local bCollisionFound, bMoveAfterSplit = PreSimulationLib.CheckCollision( sBladeEngagement, CheckCollisionParameters, CheckCollisionOptionalParameters)
|
||||
|
||||
-- se nessuna collisione il DownUp è fattibile
|
||||
if not bCollisionFound then
|
||||
|
||||
return true, sBladeEngagement, bMoveAfterSplit, sLeadInOutType
|
||||
if bIsEngagementOk then
|
||||
|
||||
return true, 'DownUp', bMoveAfterSplit
|
||||
end
|
||||
|
||||
return false
|
||||
|
||||
Reference in New Issue
Block a user