From ab6380c1c582dcebf793b50833adea83f43c9fd0 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Mon, 15 Jun 2026 12:23:10 +0200 Subject: [PATCH] =?UTF-8?q?-=20in=20STR0011=20e=2013=20aggiunto=20SCC=20-?= =?UTF-8?q?=20in=20BeamExec=20il=20clamp=20del=20MaxReprocess=20=C3=A8=20p?= =?UTF-8?q?ortato=20a=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LuaLibs/BeamExec.lua | 2 +- Strategies/Standard/STR0011/STR0011.lua | 23 +++++++++++++++++++++++ Strategies/Standard/STR0013/STR0013.lua | 24 ++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index ae877ee..a7d02ce 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -1840,7 +1840,7 @@ function BeamExec.ProcessMachinings( PARTS, bIsFlipRot) -- ricerca strategia di lavorazione per ogni pezzo e applicazione lavorazioni for nPart = 1, #PARTS do local nCycles = 1 - local nMaxReProcessCycles = EgtClamp( PARTS[nPart].GeneralParameters.GEN_nMaxReProcessCycles, 1, 3) + local nMaxReProcessCycles = EgtClamp( PARTS[nPart].GeneralParameters.GEN_nMaxReProcessCycles, 1, 5) -- la parte di applicazione lavorazioni può essere lanciata più volte in caso della presenza di errori local bProcess = true diff --git a/Strategies/Standard/STR0011/STR0011.lua b/Strategies/Standard/STR0011/STR0011.lua index 666be25..407bf2b 100644 --- a/Strategies/Standard/STR0011/STR0011.lua +++ b/Strategies/Standard/STR0011/STR0011.lua @@ -16,6 +16,27 @@ local Strategy = {} -- TODO Da fare completamente gestione foratura doppia con 2 teste +------------------------------------------------------------------------------------------------------------- +local function GetSCC( vtMachiningDirection) + -- TODO implementare SCC come per FacesBySaw + local nSCC = MCH_SCC.NONE + if vtMachiningDirection:getZ() < -0.9 then + nSCC = MCH_SCC.ADIR_ZM + elseif vtMachiningDirection:getZ() > 0.9 then + nSCC = MCH_SCC.ADIR_ZP + elseif vtMachiningDirection:getY() < -0.707 then + nSCC = MCH_SCC.ADIR_YM + elseif vtMachiningDirection:getY() > 0.707 then + nSCC = MCH_SCC.ADIR_YP + elseif vtMachiningDirection:getX() < -0.707 then + nSCC = MCH_SCC.ADIR_XM + elseif vtMachiningDirection:getX() > 0.707 then + nSCC = MCH_SCC.ADIR_XP + end + + return nSCC +end + ------------------------------------------------------------------------------------------------------------- local function GetDrillingStrategy( Proc, Part) local ToolSearchParameters = {} @@ -39,6 +60,7 @@ local function GetDrillingStrategy( Proc, Part) Drilling.nToolIndex = Drilling.ToolInfo.nToolIndex Drilling.vtToolDirection = Proc.FeatureInfo.vtDrillExtrusion Drilling.dStep = TOOLS[Drilling.nToolIndex].dStep + Drilling.nSCC = GetSCC( -Drilling.vtToolDirection) end -- TODO se utensile 2 che si torverà è il gemello da usare nelle lavorazioni in doppio, allora gestire di conseguenza l'applicazione delle lavorazioni in doppio @@ -61,6 +83,7 @@ local function GetDrillingStrategy( Proc, Part) Drilling2.bInvert = true Drilling2.vtToolDirection = -Proc.FeatureInfo.vtDrillExtrusion Drilling2.dStep = TOOLS[Drilling2.nToolIndex].dStep + Drilling2.nSCC = GetSCC( -Drilling2.vtToolDirection) end end diff --git a/Strategies/Standard/STR0013/STR0013.lua b/Strategies/Standard/STR0013/STR0013.lua index 00c55bf..5d67f1e 100644 --- a/Strategies/Standard/STR0013/STR0013.lua +++ b/Strategies/Standard/STR0013/STR0013.lua @@ -14,6 +14,27 @@ local FeatureLib = require( 'FeatureLib') local STR0013 = {} local Strategy = {} +------------------------------------------------------------------------------------------------------------- +local function GetSCC( vtMachiningDirection) + -- TODO implementare SCC come per FacesBySaw + local nSCC = MCH_SCC.NONE + if vtMachiningDirection:getZ() < -0.9 then + nSCC = MCH_SCC.ADIR_ZM + elseif vtMachiningDirection:getZ() > 0.9 then + nSCC = MCH_SCC.ADIR_ZP + elseif vtMachiningDirection:getY() < -0.707 then + nSCC = MCH_SCC.ADIR_YM + elseif vtMachiningDirection:getY() > 0.707 then + nSCC = MCH_SCC.ADIR_YP + elseif vtMachiningDirection:getX() < -0.707 then + nSCC = MCH_SCC.ADIR_XM + elseif vtMachiningDirection:getX() > 0.707 then + nSCC = MCH_SCC.ADIR_XP + end + + return nSCC +end + ------------------------------------------------------------------------------------------------------------- local function GetDrillingWithMillStrategy( Proc, Part) local ToolSearchParameters = {} @@ -172,6 +193,7 @@ function STR0013.Make( bAddMachining, Proc, Part, CustomParameters) MachiningToAdd = MachiningLib.InitMachiningParameters( MCH_MY.DRILLING) MachiningToAdd = BeamLib.MergeTables( MachiningToAdd, Strategy.Machinings[j]) MachiningToAdd.Steps.dStep = TOOLS[nIndexTool].dStep / 3 + MachiningToAdd.nSCC = GetSCC( -MachiningToAdd.vtToolDirection) -- se diametro foro più grande della fresa, ma non oltre il doppio del diametro, si fa contornatura a spirale elseif Proc.FeatureInfo.dDrillDiam < ( TOOLS[nIndexTool].dDiameter * 0.75) * 2 or Strategy.Parameters.bOnlyContouring then MachiningToAdd = MachiningLib.InitMachiningParameters( MCH_MY.MILLING) @@ -184,6 +206,7 @@ function STR0013.Make( bAddMachining, Proc, Part, CustomParameters) MachiningToAdd.LeadOut.dTangentDistance = 0.5 MachiningToAdd.LeadOut.dPerpDistance = 0.5 MachiningToAdd.LeadOut.dElevation = Proc.FeatureInfo.dDrillLen + MachiningToAdd.nSCC = GetSCC( -MachiningToAdd.vtToolDirection) -- se diametro foro più grande del doppio del diametro fresa, si fa svuotatura else MachiningToAdd = MachiningLib.InitMachiningParameters( MCH_MY.POCKETING) @@ -194,6 +217,7 @@ function STR0013.Make( bAddMachining, Proc, Part, CustomParameters) MachiningToAdd.LeadIn.nType = MCH_POCK_LI.HELIX MachiningToAdd.LeadIn.dTangentDistance = TOOLS[nIndexTool].dDiameter / 2 MachiningToAdd.LeadIn.dElevation = MachiningToAdd.Steps.dStep / 2 + MachiningToAdd.nSCC = GetSCC( -MachiningToAdd.vtToolDirection) end MachiningToAdd.nToolIndex = nIndexTool