- in MachiningLib.TestEngagement si testa e restituisce il LeadInOut (funzioni da fare) per i casi perpendicular e tangent

This commit is contained in:
luca.mazzoleni
2025-12-10 19:09:06 +01:00
parent eb3cf0d7ff
commit 77d6d89e13
2 changed files with 52 additions and 42 deletions
+5 -9
View File
@@ -94,14 +94,12 @@ local function CalculateLeadInOut( Machining, EdgeToMachine, bIsSplitFeature)
LeadIn.dTangentDistance = 0
LeadOut.dTangentDistance = 0
-- TODO qui dovrebbe essere sempre perpendicolare tranne se bNeedTangentLeadInOut, che il GetBladeEngagement deve settare sempre correttamente per evitare sia messo in casi impropri
-- il problema è che se non è controllato bene dal GetBladeEngagement, che non ha tutte le informazioni(?), si potrebbe incorrere in scelte errate
-- TODO qua deve arrivare dal BladeEngagement e cambiare solamente se step > 1
if Machining.bIsStartClosed
or Machining.bIsEndClosed
or Machining.CloneStepsRadial.nCount > 1
or Machining.Steps.nCount > 1
or bIsSplitFeature
or not Machining.bNeedTangentLeadInOut then
or bIsSplitFeature then
Machining.sLeadInOutType = 'Perpendicular'
if AreSameVectorApprox( Machining.vtToolDirection, EdgeToMachine.vtN) then
@@ -294,7 +292,6 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar
if Cutting.bIsApplicable then
Cutting.sBladeEngagement = Engagement.sBladeEngagement
Cutting.bMoveAfterSplit = Engagement.bMoveAfterSplit
Cutting.bNeedTangentLeadInOut = Engagement.bNeedTangentLeadInOut
end
-- utensile da cercare: si prende la lama migliore che può effettuare questo taglio, senza particolari analisi
@@ -313,7 +310,6 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar
if Cutting.nToolIndex then
Cutting.sBladeEngagement = ToolInfo.Engagement.sBladeEngagement
Cutting.bMoveAfterSplit = ToolInfo.Engagement.bMoveAfterSplit
Cutting.bNeedTangentLeadInOut = ToolInfo.Engagement.bNeedTangentLeadInOut
end
-- se non trovato utensile, la lavorazione non è applicabile
@@ -419,7 +415,6 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar
-- il BladeEngagement non deve cambiare, altrimenti è inutile invertire la direzione
if ( EngagementOpposite.sBladeEngagement == Cutting.sBladeEngagement)
and ( EngagementOpposite.bMoveAfterSplit == Cutting.bMoveAfterSplit)
and ( EngagementOpposite.bNeedTangentLeadInOut == Cutting.bNeedTangentLeadInOut)
and ( Cutting.bInvert and Cutting.vtEdgeDirection:getZ() > 100 * GEO.EPS_SMALL)
or ( ( not Cutting.bInvert) and Cutting.vtEdgeDirection:getZ() < -100 * GEO.EPS_SMALL) then
@@ -434,6 +429,8 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar
end
end
-- TODO implementare lavorazione in DownUp se non è già DownUp e non si è riusciti a mantenere verso l'alto e concorde (testare solo DownUp))
-- profondità da lavorare e offset radiale
if OptionalParameters.dPocketHeight then
if TOOLS[Cutting.nToolIndex].dMaxDepth > dDepthToMachine - 10 * GEO.EPS_SMALL then
@@ -502,8 +499,7 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar
TIMER:stopElapsed( 'GetBladeEngagement')
-- se non fattibile o cambiano le condizioni BladeEngagement, non si riduce
if not ( bIsApplicable and ( CurrentEngagement.sBladeEngagement == Cutting.sBladeEngagement) and ( CurrentEngagement.bMoveAfterSplit == Cutting.bMoveAfterSplit)
and ( CurrentEngagement.bNeedTangentLeadInOut == Cutting.bNeedTangentLeadInOut)) then
if not ( bIsApplicable and ( CurrentEngagement.sBladeEngagement == Cutting.sBladeEngagement) and ( CurrentEngagement.bMoveAfterSplit == Cutting.bMoveAfterSplit)) then
Cutting.sEdgeUsage = 'Standard'
dDepthToMachine = Cutting.dDepthToMachine
end