From dcefd35cc99927ae6a1ceb2bf9198b13d9c22fa0 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Wed, 12 Mar 2025 15:19:27 +0100 Subject: [PATCH] - in tutte le strategie, tutte le chiamate a funzioni interne AddMachiningAllSteps o a MachiningLib.AddNewMachining sostituite con chiamate a funzione AddMachinings in MachiningLib - in FACEBYBLADE e FACEBYCHAINSAW contemplata opzione bDisableHorizontalSteps e bDisableVerticalSteps, rispettivamente, per non creare i cloni orizzontali / verticali --- LuaLibs/MachiningLib.lua | 42 +++++++++++++++++++- Strategies/Standard/HEADCUT/HEADCUT.lua | 18 ++++++--- Strategies/Standard/STR0001/STR0001.lua | 31 ++------------- Strategies/Standard/STR0002/STR0002.lua | 4 +- Strategies/Standard/STR0003/STR0003.lua | 51 +------------------------ Strategies/Standard/STR0004/STR0004.lua | 20 +--------- Strategies/Standard/STR0005/STR0005.lua | 27 +------------ Strategies/Standard/STR0006/STR0006.lua | 31 ++------------- Strategies/Standard/TAILCUT/TAILCUT.lua | 2 +- StrategyLibs/BLADETOWASTE.lua | 10 +++-- StrategyLibs/FACEBYBLADE.lua | 3 +- StrategyLibs/FACEBYCHAINSAW.lua | 6 ++- StrategyLibs/SPLITCUT.lua | 6 +++ 13 files changed, 85 insertions(+), 166 deletions(-) diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index e750b7f..4ec51cd 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -464,7 +464,7 @@ end ------------------------------------------------------------------------------------------------------------- -- salva in lista globale la lavorazione appena calcolata -function MachiningLib.AddNewMachining( ProcToAdd, MachiningToAdd, AuxiliaryDataToAdd) +local function AddNewMachining( ProcToAdd, MachiningToAdd, AuxiliaryDataToAdd) -- Controllo parametri obbligatori if not MachiningToAdd.nType or not MachiningToAdd.nToolIndex or not MachiningToAdd.Geometry or not ProcToAdd.id then return false @@ -525,6 +525,46 @@ function MachiningLib.AddNewMachining( ProcToAdd, MachiningToAdd, AuxiliaryDataT return true end +------------------------------------------------------------------------------------------------------------- +function MachiningLib.AddMachinings( Proc, Machining, AuxiliaryData) + local bMachiningAdded = false + + if Machining.CloneStepsHorizontal and Machining.CloneStepsHorizontal.nCount > 1 then + if not AuxiliaryData then + AuxiliaryData = {} + end + AuxiliaryData.Clones = {} + + local dOriginalRadialOffset = Machining.dRadialOffset + local dOriginalLeadInPerpDistance = Machining.LeadIn.dPerpDistance + local dOriginalLeadOutPerpDistance = Machining.LeadOut.dPerpDistance + for i = 1, Machining.CloneStepsHorizontal.nCount do + AuxiliaryData.Clones[i] = {} + AuxiliaryData.Clones[i].LeadIn = {} + AuxiliaryData.Clones[i].LeadOut = {} + AuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffset + Machining.CloneStepsHorizontal.dStep * ( Machining.CloneStepsHorizontal.nCount - i) + -- update distanza perpendicolare attacco per contemplare l'offset applicato + AuxiliaryData.Clones[i].LeadIn.dPerpDistance = dOriginalLeadInPerpDistance - AuxiliaryData.Clones[i].dRadialOffset + dOriginalRadialOffset + AuxiliaryData.Clones[i].LeadOut.dPerpDistance = dOriginalLeadOutPerpDistance - AuxiliaryData.Clones[i].dRadialOffset + dOriginalRadialOffset + end + elseif Machining.CloneStepsVertical and Machining.CloneStepsVertical.nCount > 1 then + if not AuxiliaryData then + AuxiliaryData = {} + end + AuxiliaryData.Clones = {} + + local dOriginalRadialOffsetMortising = Machining.dRadialOffset + for i = Machining.CloneStepsVertical.nCount, 1, -1 do + AuxiliaryData.Clones[i] = {} + AuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffsetMortising + Machining.CloneStepsVertical.dStep * ( i - 1) + end + end + + bMachiningAdded = AddNewMachining( Proc, Machining, AuxiliaryData) + + return bMachiningAdded +end + ------------------------------------------------------------------------------------------------------------- -- funzione per aggiungere una nuova lavorazione function MachiningLib.AddOperations( vProc, Part, sRotation) diff --git a/Strategies/Standard/HEADCUT/HEADCUT.lua b/Strategies/Standard/HEADCUT/HEADCUT.lua index ab1a7a9..36c283c 100644 --- a/Strategies/Standard/HEADCUT/HEADCUT.lua +++ b/Strategies/Standard/HEADCUT/HEADCUT.lua @@ -241,26 +241,28 @@ function HEADCUT.Make( bAddMachining, Proc, Part, CustomParameters) if Strategy.SplitStrategy.sTypeMachining == 'BladeSideSingle' then OptionalParameters = {} OptionalParameters.nToolIndex = Strategy.SplitStrategy[1].ToolInfo.nToolIndex + OptionalParameters.bDisableHorizontalSteps = true -- TODO gestire lavorazione a cubetti local EdgeToMachine = GetEdgeToMachine( Proc, -Y_AX()) Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) Splitting.sStage = 'Head' - MachiningLib.AddNewMachining( Proc, Splitting, AuxiliaryData) + MachiningLib.AddMachinings( Proc, Splitting, AuxiliaryData) ---------------------------------------------------------------------------------- elseif Strategy.SplitStrategy.sTypeMachining == 'BladeSideDouble' then -- Taglio lato frontale OptionalParameters = {} OptionalParameters.nToolIndex = Strategy.SplitStrategy[1].ToolInfo.nToolIndex OptionalParameters.dDepthToMachine = Part.dWidth / 2 + BeamData.CUT_EXTRA_MIN + OptionalParameters.bDisableHorizontalSteps = true -- TODO gestire lavorazione a cubetti local EdgeToMachine = GetEdgeToMachine( Proc, -Y_AX()) Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) Splitting.sStage = 'Head' - MachiningLib.AddNewMachining( Proc, Splitting, AuxiliaryData) + MachiningLib.AddMachinings( Proc, Splitting, AuxiliaryData) -- Taglio lato dietro OptionalParameters = {} @@ -268,25 +270,27 @@ function HEADCUT.Make( bAddMachining, Proc, Part, CustomParameters) AuxiliaryData = {} OptionalParameters.nToolIndex = Strategy.SplitStrategy[1].ToolInfo.nToolIndex OptionalParameters.dDepthToMachine = Part.dWidth / 2 + BeamData.CUT_EXTRA_MIN + OptionalParameters.bDisableHorizontalSteps = true -- TODO gestire lavorazione a cubetti EdgeToMachine = GetEdgeToMachine( Proc, Y_AX()) Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) Splitting.sStage = 'Head' - MachiningLib.AddNewMachining( Proc, Splitting, AuxiliaryData) + MachiningLib.AddMachinings( Proc, Splitting, AuxiliaryData) ---------------------------------------------------------------------------------- elseif Strategy.SplitStrategy.sTypeMachining == 'BladeHorizontalSingle' then OptionalParameters = {} OptionalParameters.nToolIndex = Strategy.SplitStrategy[1].ToolInfo.nToolIndex OptionalParameters.dDepthToMachine = Part.dHeight + BeamData.CUT_EXTRA + OptionalParameters.bDisableHorizontalSteps = true -- TODO gestire lavorazione a cubetti local EdgeToMachine = GetEdgeToMachine( Proc, Z_AX()) Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) Splitting.sStage = 'Head' - MachiningLib.AddNewMachining( Proc, Splitting, AuxiliaryData) + MachiningLib.AddMachinings( Proc, Splitting, AuxiliaryData) ---------------------------------------------------------------------------------- elseif Strategy.SplitStrategy.sTypeMachining == 'BladeHorizontalDouble' then -- Taglio lato frontale @@ -294,13 +298,14 @@ function HEADCUT.Make( bAddMachining, Proc, Part, CustomParameters) OptionalParameters.nToolIndex = Strategy.SplitStrategy[1].ToolInfo.nToolIndex local dExtraMaxMat = ( Strategy.SplitStrategy[1].ToolInfo.dMaxMatBladeFromTop + Strategy.SplitStrategy[2].ToolInfo.dMaxMatBladeFromDown - Part.dHeight - BeamData.CUT_EXTRA_MIN) / 2 OptionalParameters.dDepthToMachine = Strategy.SplitStrategy[1].ToolInfo.dMaxMatBladeFromTop - dExtraMaxMat + OptionalParameters.bDisableHorizontalSteps = true -- TODO gestire lavorazione a cubetti local EdgeToMachine = GetEdgeToMachine( Proc, Z_AX()) Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) Splitting.sStage = 'Head' - MachiningLib.AddNewMachining( Proc, Splitting, AuxiliaryData) + MachiningLib.AddMachinings( Proc, Splitting, AuxiliaryData) -- Taglio lato dietro OptionalParameters = {} @@ -308,13 +313,14 @@ function HEADCUT.Make( bAddMachining, Proc, Part, CustomParameters) AuxiliaryData = {} OptionalParameters.nToolIndex = Strategy.SplitStrategy[2].ToolInfo.nToolIndex OptionalParameters.dDepthToMachine = Strategy.SplitStrategy[2].ToolInfo.dMaxMatBladeFromDown - dExtraMaxMat + OptionalParameters.bDisableHorizontalSteps = true -- TODO gestire lavorazione a cubetti EdgeToMachine = GetEdgeToMachine( Proc, -Z_AX()) Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) Splitting.sStage = 'Head' - MachiningLib.AddNewMachining( Proc, Splitting, AuxiliaryData) + MachiningLib.AddMachinings( Proc, Splitting, AuxiliaryData) ---------------------------------------------------------------------------------- elseif Strategy.SplitStrategy.sTypeMachining == 'ChainSawHorizontal' then ; -- TODO diff --git a/Strategies/Standard/STR0001/STR0001.lua b/Strategies/Standard/STR0001/STR0001.lua index 7c10961..b313298 100644 --- a/Strategies/Standard/STR0001/STR0001.lua +++ b/Strategies/Standard/STR0001/STR0001.lua @@ -15,31 +15,6 @@ local BladeToWaste = require('BLADETOWASTE') local STR0001 = {} local Strategy = {} -------------------------------------------------------------------------------------------------------------- -function AddMachiningAllSteps( Proc, Cutting, AuxiliaryData) - local bMachiningAdded = false - if not AuxiliaryData then - AuxiliaryData = {} - end - AuxiliaryData.Clones = {} - - local dOriginalRadialOffset = Cutting.dRadialOffset - local dOriginalLeadInPerpDistance = Cutting.LeadIn.dPerpDistance - local dOriginalLeadOutPerpDistance = Cutting.LeadOut.dPerpDistance - for i = 1, Cutting.CloneStepsHorizontal.nCount do - AuxiliaryData.Clones[i] = {} - AuxiliaryData.Clones[i].LeadIn = {} - AuxiliaryData.Clones[i].LeadOut = {} - AuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffset + Cutting.CloneStepsHorizontal.dStep * ( Cutting.CloneStepsHorizontal.nCount - i) - -- update distanza perpendicolare attacco per contemplare l'offset applicato - AuxiliaryData.Clones[i].LeadIn.dPerpDistance = dOriginalLeadInPerpDistance - Cutting.dRadialOffset - AuxiliaryData.Clones[i].LeadOut.dPerpDistance = dOriginalLeadOutPerpDistance - Cutting.dRadialOffset - end - bMachiningAdded = MachiningLib.AddNewMachining( Proc, Cutting, AuxiliaryData) - - return bMachiningAdded -end - ------------------------------------------------------------------------------------------------------------- function GetTenonStrategy( Proc, Part) local Machining = {} @@ -275,7 +250,7 @@ function STR0001.Make( bAddMachining, Proc, Part, CustomParameters) if Proc.AffectedFaces.bLeft and Strategy.bCanMoveAfterSplit then Strategy.Machining.Cutting.sStage = 'AfterTail' end - bAreAllMachiningsAdded = MachiningLib.AddNewMachining( Proc, Strategy.Machining.Cutting) + bAreAllMachiningsAdded = MachiningLib.AddMachinings( Proc, Strategy.Machining.Cutting) -- taglio di lama else @@ -284,7 +259,7 @@ function STR0001.Make( bAddMachining, Proc, Part, CustomParameters) if Proc.AffectedFaces.bLeft and Strategy.bCanMoveAfterSplit then Strategy.Machining.Cutting[i].sStage = 'AfterTail' end - local bIsMachiningAdded = AddMachiningAllSteps( Proc, Strategy.Machining.Cutting[i]) + local bIsMachiningAdded = MachiningLib.AddMachinings( Proc, Strategy.Machining.Cutting[i]) if not bIsMachiningAdded then bAreAllMachiningsAdded = false end @@ -348,7 +323,7 @@ function STR0001.Make( bAddMachining, Proc, Part, CustomParameters) end -- aggiunge lavorazione - bAreAllMachiningsAdded = MachiningLib.AddNewMachining( Proc, Strategy.Machining.Milling, AuxiliaryData) + bAreAllMachiningsAdded = MachiningLib.AddMachinings( Proc, Strategy.Machining.Milling, AuxiliaryData) end end end diff --git a/Strategies/Standard/STR0002/STR0002.lua b/Strategies/Standard/STR0002/STR0002.lua index f3cb106..6177c7e 100644 --- a/Strategies/Standard/STR0002/STR0002.lua +++ b/Strategies/Standard/STR0002/STR0002.lua @@ -468,7 +468,7 @@ function STR0002.Make( bAddMachining, Proc, Part, CustomParameters) if Proc.AffectedFaces.bLeft then Pocketing.sStage = 'AfterTail' end - bAreAllMachiningsAdded = MachiningLib.AddNewMachining( Proc, Pocketing) + bAreAllMachiningsAdded = MachiningLib.AddMachinings( Proc, Pocketing) else -- TODO controllare parametro danneggiamento ammesso per decidere se spostare dopo taglio seprazione -- se è aperta sulla coda, dico che deve essere fatta dopo la separazione @@ -485,7 +485,7 @@ function STR0002.Make( bAddMachining, Proc, Part, CustomParameters) end if vtNSplitFace and AreSameVectorApprox( vtNSplitFace * EgtIf( Pocketing.bToolInvert, -1, 1), Strategy.Machining[j].vtFaceNormal) then Pocketing.Geometry = {{ nIdTm, k - 1}} - bAreAllMachiningsAdded = bAreAllMachiningsAdded and MachiningLib.AddNewMachining( Proc, Pocketing) + bAreAllMachiningsAdded = bAreAllMachiningsAdded and MachiningLib.AddMachinings( Proc, Pocketing) break end end diff --git a/Strategies/Standard/STR0003/STR0003.lua b/Strategies/Standard/STR0003/STR0003.lua index e0c878a..d2e0175 100644 --- a/Strategies/Standard/STR0003/STR0003.lua +++ b/Strategies/Standard/STR0003/STR0003.lua @@ -170,13 +170,7 @@ local function AddMachinings( Proc, Machinings, bAddMachining) nIsApplicableCount = nIsApplicableCount + 1 if bAddMachining then local bIsMachiningAdded - if TOOLS[ Machinings[i].nToolIndex].sFamily == 'SAWBLADE' then - Blade.AddMachiningAllSteps( Proc, Machinings[i]) - elseif TOOLS[ Machinings[i].nToolIndex].sFamily == 'MORTISE' then - Chainsaw.AddMachiningAllSteps( Proc, Machinings[i]) - else - error( 'AddMachinings : tool type not supported') - end + bIsMachiningAdded = MachiningLib.AddMachinings( Proc, Machinings[i]) if not bIsMachiningAdded then bAreAllMachiningsAdded = false end @@ -194,54 +188,11 @@ function Blade.AddResult( Cutting) end -function Blade.AddMachiningAllSteps( Proc, Cutting, AuxiliaryData) - local bMachiningAdded = false - if not AuxiliaryData then - AuxiliaryData = {} - end - AuxiliaryData.Clones = {} - - local dOriginalRadialOffset = Cutting.dRadialOffset - local dOriginalLeadInPerpDistance = Cutting.LeadIn.dPerpDistance - local dOriginalLeadOutPerpDistance = Cutting.LeadOut.dPerpDistance - for i = 1, Cutting.CloneStepsHorizontal.nCount do - AuxiliaryData.Clones[i] = {} - AuxiliaryData.Clones[i].LeadIn = {} - AuxiliaryData.Clones[i].LeadOut = {} - AuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffset + Cutting.CloneStepsHorizontal.dStep * ( Cutting.CloneStepsHorizontal.nCount - i) - -- update distanza perpendicolare attacco per contemplare l'offset applicato - AuxiliaryData.Clones[i].LeadIn.dPerpDistance = dOriginalLeadInPerpDistance - AuxiliaryData.Clones[i].dRadialOffset + dOriginalRadialOffset - AuxiliaryData.Clones[i].LeadOut.dPerpDistance = dOriginalLeadOutPerpDistance - AuxiliaryData.Clones[i].dRadialOffset + dOriginalRadialOffset - end - bMachiningAdded = MachiningLib.AddNewMachining( Proc, Cutting, AuxiliaryData) - - return bMachiningAdded -end - - function Chainsaw.AddResult( Mortising) AddResult( Mortising, Chainsaw.Result) end -function Chainsaw.AddMachiningAllSteps( Proc, Mortising, AuxiliaryData) - local bMachiningAdded = false - if not AuxiliaryData then - AuxiliaryData = {} - end - AuxiliaryData.Clones = {} - - local dOriginalRadialOffsetMortising = Mortising.dRadialOffset - for i = Mortising.CloneStepsVertical.nCount, 1, -1 do - AuxiliaryData.Clones[i] = {} - AuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffsetMortising + Mortising.CloneStepsVertical.dStep * ( i - 1) - end - bMachiningAdded = MachiningLib.AddNewMachining( Proc, Mortising, AuxiliaryData) - - return bMachiningAdded -end - - function STR0003.Make( bAddMachining, Proc, Part, CustomParameters) -- carico parametri da default e li aggiorno con quelli passati dal chiamante (potrebbero non essere congruenti) local StrategyLib = {} diff --git a/Strategies/Standard/STR0004/STR0004.lua b/Strategies/Standard/STR0004/STR0004.lua index 8f3679c..4a79b2b 100644 --- a/Strategies/Standard/STR0004/STR0004.lua +++ b/Strategies/Standard/STR0004/STR0004.lua @@ -113,24 +113,6 @@ function Chainsaw.AddResult( Mortising) end -function Chainsaw.AddMachiningAllSteps( Proc, Mortising, AuxiliaryData) - local bMachiningAdded = false - if not AuxiliaryData then - AuxiliaryData = {} - end - AuxiliaryData.Clones = {} - - local dOriginalRadialOffsetMortising = Mortising.dRadialOffset - for i = Mortising.CloneStepsVertical.nCount, 1, -1 do - AuxiliaryData.Clones[i] = {} - AuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffsetMortising + Mortising.CloneStepsVertical.dStep * ( i - 1) - end - bMachiningAdded = MachiningLib.AddNewMachining( Proc, Mortising, AuxiliaryData) - - return bMachiningAdded -end - - function STR0004.Make( bAddMachining, Proc, Part, CustomParameters) -- carico parametri da default e li aggiorno con quelli passati dal chiamante (potrebbero non essere congruenti) local StrategyLib = {} @@ -275,7 +257,7 @@ function STR0004.Make( bAddMachining, Proc, Part, CustomParameters) if Chainsaw.Result.Sorted[i].bIsApplicable then nIsApplicableCount = nIsApplicableCount + 1 if bAddMachining then - local bIsMachiningAdded = Chainsaw.AddMachiningAllSteps( Proc, Chainsaw.Result.Sorted[i]) + local bIsMachiningAdded = MachiningLib.AddMachinings( Proc, Chainsaw.Result.Sorted[i]) if not bIsMachiningAdded then bAreAllMachiningsAdded = false end diff --git a/Strategies/Standard/STR0005/STR0005.lua b/Strategies/Standard/STR0005/STR0005.lua index 49be76e..e552812 100644 --- a/Strategies/Standard/STR0005/STR0005.lua +++ b/Strategies/Standard/STR0005/STR0005.lua @@ -87,31 +87,6 @@ function Blade.AddResult( Cutting) end -function Blade.AddMachiningAllSteps( Proc, Cutting, AuxiliaryData) - local bMachiningAdded = false - if not AuxiliaryData then - AuxiliaryData = {} - end - AuxiliaryData.Clones = {} - - local dOriginalRadialOffset = Cutting.dRadialOffset - local dOriginalLeadInPerpDistance = Cutting.LeadIn.dPerpDistance - local dOriginalLeadOutPerpDistance = Cutting.LeadOut.dPerpDistance - for i = 1, Cutting.CloneStepsHorizontal.nCount do - AuxiliaryData.Clones[i] = {} - AuxiliaryData.Clones[i].LeadIn = {} - AuxiliaryData.Clones[i].LeadOut = {} - AuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffset + Cutting.CloneStepsHorizontal.dStep * ( Cutting.CloneStepsHorizontal.nCount - i) - -- update distanza perpendicolare attacco per contemplare l'offset applicato - AuxiliaryData.Clones[i].LeadIn.dPerpDistance = dOriginalLeadInPerpDistance - AuxiliaryData.Clones[i].dRadialOffset + dOriginalRadialOffset - AuxiliaryData.Clones[i].LeadOut.dPerpDistance = dOriginalLeadOutPerpDistance - AuxiliaryData.Clones[i].dRadialOffset + dOriginalRadialOffset - end - bMachiningAdded = MachiningLib.AddNewMachining( Proc, Cutting, AuxiliaryData) - - return bMachiningAdded -end - - function STR0005.Make( bAddMachining, Proc, Part, CustomParameters) -- carico parametri da default e li aggiorno con quelli passati dal chiamante (potrebbero non essere congruenti) local StrategyLib = {} @@ -244,7 +219,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters) if Blade.Result.Sorted[i].bIsApplicable then nIsApplicableCount = nIsApplicableCount + 1 if bAddMachining then - local bIsMachiningAdded = Blade.AddMachiningAllSteps( Proc, Blade.Result.Sorted[i]) + local bIsMachiningAdded = MachiningLib.AddMachinings( Proc, Blade.Result.Sorted[i]) if not bIsMachiningAdded then bAreAllMachiningsAdded = false end diff --git a/Strategies/Standard/STR0006/STR0006.lua b/Strategies/Standard/STR0006/STR0006.lua index 9bbb3ce..bcd182e 100644 --- a/Strategies/Standard/STR0006/STR0006.lua +++ b/Strategies/Standard/STR0006/STR0006.lua @@ -16,31 +16,6 @@ local FaceByBlade = require('FACEBYBLADE') local STR0006 = {} local Strategy = {} -------------------------------------------------------------------------------------------------------------- -function AddMachiningAllSteps( Proc, Cutting, AuxiliaryData) - local bMachiningAdded = false - if not AuxiliaryData then - AuxiliaryData = {} - end - AuxiliaryData.Clones = {} - - local dOriginalRadialOffset = Cutting.dRadialOffset - local dOriginalLeadInPerpDistance = Cutting.LeadIn.dPerpDistance - local dOriginalLeadOutPerpDistance = Cutting.LeadOut.dPerpDistance - for i = 1, Cutting.CloneStepsHorizontal.nCount do - AuxiliaryData.Clones[i] = {} - AuxiliaryData.Clones[i].LeadIn = {} - AuxiliaryData.Clones[i].LeadOut = {} - AuxiliaryData.Clones[i].dRadialOffset = dOriginalRadialOffset + Cutting.CloneStepsHorizontal.dStep * ( Cutting.CloneStepsHorizontal.nCount - i) - -- update distanza perpendicolare attacco per contemplare l'offset applicato - AuxiliaryData.Clones[i].LeadIn.dPerpDistance = dOriginalLeadInPerpDistance - Cutting.dRadialOffset - AuxiliaryData.Clones[i].LeadOut.dPerpDistance = dOriginalLeadOutPerpDistance - Cutting.dRadialOffset - end - bMachiningAdded = MachiningLib.AddNewMachining( Proc, Cutting, AuxiliaryData) - - return bMachiningAdded -end - ------------------------------------------------------------------------------------------------------------- function GetTenonStrategy( Proc, Part) local Machining = {} @@ -230,7 +205,7 @@ function STR0006.Make( bAddMachining, Proc, Part, CustomParameters) if Proc.AffectedFaces.bLeft and Strategy.bCanMoveAfterSplit then Strategy.Machining.Cutting.sStage = 'AfterTail' end - bAreAllMachiningsAdded = MachiningLib.AddNewMachining( Proc, Strategy.Machining.Cutting) + bAreAllMachiningsAdded = MachiningLib.AddMachinings( Proc, Strategy.Machining.Cutting) -- taglio di lama else @@ -240,7 +215,7 @@ function STR0006.Make( bAddMachining, Proc, Part, CustomParameters) if Proc.AffectedFaces.bLeft and Strategy.bCanMoveAfterSplit then Strategy.Machining.Cutting[i].sStage = 'AfterTail' end - local bIsMachiningAdded = AddMachiningAllSteps( Proc, Strategy.Machining.Cutting[i]) + local bIsMachiningAdded = MachiningLib.AddMachinings( Proc, Strategy.Machining.Cutting[i]) if not bIsMachiningAdded then bAreAllMachiningsAdded = false end @@ -304,7 +279,7 @@ function STR0006.Make( bAddMachining, Proc, Part, CustomParameters) end -- aggiunge lavorazione - bAreAllMachiningsAdded = MachiningLib.AddNewMachining( Proc, Strategy.Machining.Milling, AuxiliaryData) + bAreAllMachiningsAdded = MachiningLib.AddMachinings( Proc, Strategy.Machining.Milling, AuxiliaryData) end end end diff --git a/Strategies/Standard/TAILCUT/TAILCUT.lua b/Strategies/Standard/TAILCUT/TAILCUT.lua index 67d8b93..a27e6fb 100644 --- a/Strategies/Standard/TAILCUT/TAILCUT.lua +++ b/Strategies/Standard/TAILCUT/TAILCUT.lua @@ -92,7 +92,7 @@ function TAILCUT.Make( bAddMachining, Proc, Part, CustomParameters) -- aggiungo lavorazioni trovate alla lista generale for i = 1, #MachiningsToAdd do MachiningsToAdd[i].Splitting.sStage = 'Tail' - MachiningLib.AddNewMachining( Proc, MachiningsToAdd[i].Splitting, MachiningsToAdd[i].AuxiliaryData) + MachiningLib.AddMachinings( Proc, MachiningsToAdd[i].Splitting, MachiningsToAdd[i].AuxiliaryData) end return bAreAllMachiningsAdded, Strategy.Result diff --git a/StrategyLibs/BLADETOWASTE.lua b/StrategyLibs/BLADETOWASTE.lua index df4bd3c..36c9e74 100644 --- a/StrategyLibs/BLADETOWASTE.lua +++ b/StrategyLibs/BLADETOWASTE.lua @@ -356,7 +356,7 @@ function BLADETOWASTE.Make( ProcOrId, Part, OptionalParameters) -- TODO qui si deve entrare anche se lo spessore lama è maggiore dell'elevazione delle faccia if Proc.nFct == 1 and ( FeatureInfo.bIsFeatureSmall or bDropWholeWaste) then Machinings, Result = CutWholeWaste( Proc, Part, OptionalParameters) - if Result.sStatus == 'Completed' or ( bDropWholeWaste and Result.sStatus == 'Not-Completed') then + if Result.sStatus == 'Completed' or ( bDropWholeWaste and Result.sStatus ~= 'Not-Applicable') then return Machinings, Result end end @@ -473,7 +473,10 @@ function BLADETOWASTE.Make( ProcOrId, Part, OptionalParameters) local ProcTrimesh = FeatureLib.GetProcFromTrimesh( vCuts[i][j], Part) local EdgeToMachine = BeamLib.FindEdgeBestOrientedAsDirection( Edges, vtToolDirectionNew) local dDepthToMachine = EdgeToMachine.dElevation + BeamData.CUT_EXTRA - local OptionalParametersFaceByBlade = { dDepthToMachine = dDepthToMachine, nToolIndex = nToolIndex} + local OptionalParametersFaceByBlade = { dDepthToMachine = dDepthToMachine, + nToolIndex = nToolIndex, + bDisableHorizontalSteps = true + } Cutting = FaceByBlade.Make( ProcTrimesh, Part, FaceToMachine, EdgeToMachine, OptionalParametersFaceByBlade) if Cutting.bIsApplicable then table.insert( Machinings, Cutting) @@ -506,7 +509,8 @@ function BLADETOWASTE.Make( ProcOrId, Part, OptionalParameters) local dDepthToMachine = EdgeToMachine.dElevation + dExtraCut local OptionalParametersFaceByBlade = { dDepthToMachine = dDepthToMachine, nToolIndex = nToolIndex, - EdgeToMachineAlternative = EdgeToMachineAlternative + EdgeToMachineAlternative = EdgeToMachineAlternative, + bDisableHorizontalSteps = true } Cutting = FaceByBlade.Make( ProcTrimesh, Part, FaceToMachine, EdgeToMachine, OptionalParametersFaceByBlade) if Cutting.bIsApplicable then diff --git a/StrategyLibs/FACEBYBLADE.lua b/StrategyLibs/FACEBYBLADE.lua index 8861739..352a2b0 100644 --- a/StrategyLibs/FACEBYBLADE.lua +++ b/StrategyLibs/FACEBYBLADE.lua @@ -108,6 +108,7 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar local dDepthToMachine = OptionalParameters.dDepthToMachine or EdgeToMachine.dElevation local bIsSplitFeature = OptionalParameters.bIsSplitFeature or false local bOppositeToolDirection = OptionalParameters.bOppositeToolDirection or false + local bDisableHorizontalSteps = OptionalParameters.bDisableHorizontalSteps or false local sDepth = OptionalParameters.sDepth or 0 local nToolIndex = OptionalParameters.nToolIndex local dLongitudinalOffset = OptionalParameters.dLongitudinalOffset or 0 @@ -270,7 +271,7 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar Cutting.LeadIn, Cutting.LeadOut = CalculateLeadInOut( Cutting, EdgeToMachine) -- eventuale step orizzontale Cutting.CloneStepsHorizontal = {} - if TOOLS[Cutting.nToolIndex].dSideStep then + if not bDisableHorizontalSteps and TOOLS[Cutting.nToolIndex].dSideStep then Cutting.CloneStepsHorizontal = MachiningLib.GetMachiningSteps( Cutting.dDepthToMachine, TOOLS[Cutting.nToolIndex].dSideStep) else Cutting.CloneStepsHorizontal.nCount = 1 diff --git a/StrategyLibs/FACEBYCHAINSAW.lua b/StrategyLibs/FACEBYCHAINSAW.lua index deaa907..e9e07d2 100644 --- a/StrategyLibs/FACEBYCHAINSAW.lua +++ b/StrategyLibs/FACEBYCHAINSAW.lua @@ -71,6 +71,7 @@ function FACEBYCHAINSAW.Make( Proc, Part, FaceToMachine, EdgeToMachine, Optional local dPocketHeight = OptionalParameters.dPocketHeight or 0 local bIsSplitFeature = OptionalParameters.bIsSplitFeature or false local bOppositeToolDirection = OptionalParameters.bOppositeToolDirection or false + local bDisableVerticalSteps = OptionalParameters.bDisableVerticalSteps or false local sDepth = OptionalParameters.sDepth or 'TH' -- lunghezze e punti caratteristici della lavorazione e del lato lavorato @@ -215,7 +216,10 @@ function FACEBYCHAINSAW.Make( Proc, Part, FaceToMachine, EdgeToMachine, Optional -- approccio e retrazione Mortising.LeadIn, Mortising.LeadOut = CalculateLeadInOut( Mortising, EdgeToMachine, sSideToMachine, dLengthToMachine) -- eventuale step verticale - Mortising.CloneStepsVertical = MachiningLib.GetMachiningSteps( dPocketHeight, TOOLS[Mortising.nToolIndex].dThickness) + Mortising.CloneStepsVertical = {} + if not bDisableVerticalSteps then + Mortising.CloneStepsVertical = MachiningLib.GetMachiningSteps( dPocketHeight, TOOLS[Mortising.nToolIndex].dThickness) + end -- geometria Mortising.Geometry = {{Proc.id, FaceToMachine.id}} -- nome operazione diff --git a/StrategyLibs/SPLITCUT.lua b/StrategyLibs/SPLITCUT.lua index cc5fdd0..0b64a44 100644 --- a/StrategyLibs/SPLITCUT.lua +++ b/StrategyLibs/SPLITCUT.lua @@ -206,6 +206,7 @@ function SPLITCUT.Execute( Proc, Part, Strategy) OptionalParameters.nToolIndex = Strategy.SplitStrategy[1].ToolInfo.nToolIndex OptionalParameters.dLongitudinalOffset = Strategy.dOffset or 0 OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + OptionalParameters.bDisableHorizontalSteps = true Machining.AuxiliaryData.bIsSplitOrCut = true @@ -224,6 +225,7 @@ function SPLITCUT.Execute( Proc, Part, Strategy) OptionalParameters.dLongitudinalOffset = Strategy.dOffset or 0 OptionalParameters.dDepthToMachine = Part.dWidth / 2 + BeamData.CUT_EXTRA_MIN OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Presplit;', 'Precut;') + OptionalParameters.bDisableHorizontalSteps = true local EdgeToMachine = SPLITCUT.GetEdgeToMachine( Proc, -Y_AX()) Machining.Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) @@ -238,6 +240,7 @@ function SPLITCUT.Execute( Proc, Part, Strategy) OptionalParameters.dLongitudinalOffset = Strategy.dOffset or 0 OptionalParameters.dDepthToMachine = Part.dWidth / 2 + BeamData.CUT_EXTRA_MIN OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + OptionalParameters.bDisableHorizontalSteps = true Machining.AuxiliaryData.bIsSplitOrCut = true @@ -254,6 +257,7 @@ function SPLITCUT.Execute( Proc, Part, Strategy) OptionalParameters.dLongitudinalOffset = Strategy.dOffset or 0 OptionalParameters.dDepthToMachine = Part.dHeight + BeamData.CUT_EXTRA OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + OptionalParameters.bDisableHorizontalSteps = true Machining.AuxiliaryData.bIsSplitOrCut = true @@ -272,6 +276,7 @@ function SPLITCUT.Execute( Proc, Part, Strategy) local dExtraMaxMat = ( Strategy.SplitStrategy[1].ToolInfo.dMaxMatBladeFromTop + Strategy.SplitStrategy[2].ToolInfo.dMaxMatBladeFromDown - Part.dHeight - BeamData.CUT_EXTRA_MIN) / 2 OptionalParameters.dDepthToMachine = Strategy.SplitStrategy[1].ToolInfo.dMaxMatBladeFromTop - dExtraMaxMat OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Presplit;', 'Precut;') + OptionalParameters.bDisableHorizontalSteps = true local EdgeToMachine = SPLITCUT.GetEdgeToMachine( Proc, Z_AX()) @@ -287,6 +292,7 @@ function SPLITCUT.Execute( Proc, Part, Strategy) OptionalParameters.dLongitudinalOffset = Strategy.dOffset or 0 OptionalParameters.dDepthToMachine = Strategy.SplitStrategy[2].ToolInfo.dMaxMatBladeFromDown - dExtraMaxMat OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + OptionalParameters.bDisableHorizontalSteps = true Machining.AuxiliaryData.bIsSplitOrCut = true