From 0b9ebbb15c783a8b7923f93ee46e9f8d24814902 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Fri, 10 Jul 2026 16:07:29 +0200 Subject: [PATCH] - in FACEBYBLADE modifiche ai criteri di spostamento dopo separazione --- LuaLibs/MachiningLib.lua | 2 +- StrategyLibs/FACEBYBLADE.lua | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 7ba2dbf..3c18b5b 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -210,7 +210,7 @@ function MachiningLib.GetSplitMachinings( Machinings, SplittingPoints, Part) Machinings[nCurrentMachiningIndex].dLengthToMachine = Machinings[nCurrentMachiningIndex].dEdgeLength + Machinings[nCurrentMachiningIndex].LeadIn.dStartAddLength + Machinings[nCurrentMachiningIndex].LeadOut.dEndAddLength Machinings[nCurrentMachiningIndex].dTimeToMachine = MachiningLib.GetTimeToMachineAllStepsWithLeadInOut( Machinings[nCurrentMachiningIndex], Part) Machinings[nCurrentMachiningIndex].bIsFirstSegment = ( j == 1) - Machinings[nCurrentMachiningIndex].bIsLastSegment = ( j == nParts) + Machinings[nCurrentMachiningIndex].bIsLastSegment = bIsLastSegment Machinings[nCurrentMachiningIndex].bIsMachiningSplitted = true end -- anche le lavorazioni non splittate necessitano del segmento assegnato diff --git a/StrategyLibs/FACEBYBLADE.lua b/StrategyLibs/FACEBYBLADE.lua index 0d62633..c425881 100644 --- a/StrategyLibs/FACEBYBLADE.lua +++ b/StrategyLibs/FACEBYBLADE.lua @@ -596,12 +596,19 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar Cutting.sOperationName = 'Cut_' .. ( EgtGetName( Cutting.idProc) or tostring( Cutting.idProc)) .. '_' .. tostring( FaceToMachine.id + 1) -- se lavorazione aperta sulla coda, eventuali aggiustamenti - -- TODO valutare se fare funzione a parte + -- TODO fare funzione a parte: bisogna guardare il lato (e forse la faccia) lavorato comprensivo di attacchi, non la Proc + -- TODO già guardare se il box della faccia è aperto sulla coda, invece di tutta la trimesh, escluderebbe tanti casi Cutting.bMoveAfterSplit = Cutting.bMoveAfterSplit or Cutting.LeadIn.bMoveAfterSplit or Cutting.LeadOut.bMoveAfterSplit local bIsTruncatingCutOnTail = Proc.Topology and ( Proc.Topology.sName == 'Cut-1-Through' or Proc.Topology.sName == 'TailCut') and Proc.AffectedFaces.bLeft if Cutting.bMoveAfterSplit or bIsTruncatingCutOnTail then Cutting.sStage = 'AfterTail' - elseif Proc.AffectedFaces.bLeft and ( EdgeToMachine.sType == 'Bottom' or ( Cutting.vtToolDirection:getX() < 0.707)) then + elseif Proc.AffectedFaces.bLeft and + ( EdgeToMachine.sType == 'Bottom' or + ( Cutting.vtToolDirection:getX() < 0.707 and + not ( Cutting.vtToolDirection:getX() > - 10 * GEO.EPS_SMALL and + ( AreSameOrOppositeVectorApprox( EdgeToMachine.vtEdge, Z_AX()) or + AreSameOrOppositeVectorApprox( EdgeToMachine.vtEdge, Y_AX()))))) then + local dLengthOnX = Cutting.dLengthOnX -- se feature splittata non si considera la lunghezza della feature per il check spostamento dopo separazione if bIsSplitFeature then @@ -635,7 +642,7 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar end return Cutting - + end -------------------------------------------------------------------------------------------------------------