From d86e1c1c56fae3a5e019699a9632f974033ceb51 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Tue, 30 Jun 2026 18:06:12 +0200 Subject: [PATCH 1/7] - in STR0005 aggiunto parametro bAllowPerpendicularStrip da passare a BLADEKEEPWASTE per codolo multiplo corto --- Messages/EgalTechEng.txt | 2 ++ Messages/EgalTechIta.txt | 2 ++ Messages/EgalTechNld.txt | 2 ++ Strategies/Standard/STR0005/STR0005.json | 12 ++++++++++++ Strategies/Standard/STR0005/STR0005.lua | 6 +++++- 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Messages/EgalTechEng.txt b/Messages/EgalTechEng.txt index eeed5ec..ae0126a 100644 --- a/Messages/EgalTechEng.txt +++ b/Messages/EgalTechEng.txt @@ -319,4 +319,6 @@ 1000316=Autocam will apply a machining on the theoretical zero, to avoid collision if the theoretical piece length doesn't correspond to the real length 1000317=Finish with mill 1000318=Use a mill to finish the surface if split with chain saw +1000319=Allow multiple short strips +1000320=Allow multiple short strips // ----- End ----- diff --git a/Messages/EgalTechIta.txt b/Messages/EgalTechIta.txt index 033c206..4a1fc9d 100644 --- a/Messages/EgalTechIta.txt +++ b/Messages/EgalTechIta.txt @@ -319,4 +319,6 @@ 1000316=Autocam applicherà una lavorazione sullo zero teorico per evitare collisioni se la lunghezza teorica del pezzo non corrisponde alla lunghezza reale 1000317=Finisci con la fresa 1000318=Utilizza una fresa per rifinire la superficie se tagliata con la sega a catena +1000319=Permettere codoli multipli +1000320=Permettere codoli multipli // ----- End ----- diff --git a/Messages/EgalTechNld.txt b/Messages/EgalTechNld.txt index 864071e..d75cd73 100644 --- a/Messages/EgalTechNld.txt +++ b/Messages/EgalTechNld.txt @@ -319,4 +319,6 @@ 1000316=Autocam past een bewerking toe op het theoretische nulpunt om botsingen te voorkomen als de theoretische lengte niet overeenkomt met de werkelijke lengte 1000317=Afwerken met frees 1000318=Gebruik een frees om het oppervlak na te bewerken als dit met de kettingzaag is gespleten +1000319=Sta meerdere korte verbindingsstrips toe +1000320=Sta meerdere korte verbindingsstrips toe // ----- End ----- \ No newline at end of file diff --git a/Strategies/Standard/STR0005/STR0005.json b/Strategies/Standard/STR0005/STR0005.json index ad1cf38..7fbc000 100644 --- a/Strategies/Standard/STR0005/STR0005.json +++ b/Strategies/Standard/STR0005/STR0005.json @@ -136,6 +136,18 @@ "sMessageId": " ", "sMinUserLevel": "1" }, + { + "sName": "bAllowPerpendicularStrip", + "sNameNge": "ALLOW_PERPENDICULAR_STRIP", + "sValue": "false", + "sDescriptionShort": "Allow multiple short strips", + "sDescriptionLong": "Allow multiple short strips", + "idDescriptionShortMsg": 1000319, + "idDescriptionLongMsg": 1000320, + "sType": "b", + "sMessageId": " ", + "sMinUserLevel": "1" + }, { "sName": "bFinishWithMill", "sNameNge": "ALLOW_FINISH_MILL", diff --git a/Strategies/Standard/STR0005/STR0005.lua b/Strategies/Standard/STR0005/STR0005.lua index 62b0764..4d63251 100644 --- a/Strategies/Standard/STR0005/STR0005.lua +++ b/Strategies/Standard/STR0005/STR0005.lua @@ -112,7 +112,11 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters) or bKeepWasteAttached then local BladeKeepWasteResult - local OptionalParameters = { dExtendAfterTail = dExtendAfterTail, dStripWidth = Strategy.Parameters.dStripWidth, bForced = bKeepWasteAttached} + local OptionalParameters = { dExtendAfterTail = dExtendAfterTail, + dStripWidth = Strategy.Parameters.dStripWidth, + bAllowPerpendicularStrip = Strategy.Parameters.bAllowPerpendicularStrip, + bForced = bKeepWasteAttached + } AuxiliaryData.bIgnoreNotClampableLength = true Blade.Result, BladeKeepWasteResult = BladeKeepWaste.Make( Proc, Part, OptionalParameters) dTimeToMachine = BladeKeepWasteResult.dTimeToMachine From 14bb688e26601495b27b42715869cd8ffe85f5b9 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Tue, 30 Jun 2026 18:09:02 +0200 Subject: [PATCH 2/7] - in BLADEKEEPWASATE aggiunto bAllowPerpendicularStrip, da gestire --- StrategyLibs/BLADEKEEPWASTE.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/StrategyLibs/BLADEKEEPWASTE.lua b/StrategyLibs/BLADEKEEPWASTE.lua index 566a094..830162e 100644 --- a/StrategyLibs/BLADEKEEPWASTE.lua +++ b/StrategyLibs/BLADEKEEPWASTE.lua @@ -250,6 +250,7 @@ function BLADEKEEPWASTE.Make( Proc, Part, OptionalParameters) local bFinishWithMill = ( OptionalParameters.bFinishWithMill ~= false) local dMillingOffsetFromSide = OptionalParameters.dMillingOffsetFromSide or 1 local dStripWidth = OptionalParameters.dStripWidth or 5 + local bAllowPerpendicularStrip = OptionalParameters.bAllowPerpendicularStrip or false local bForced = OptionalParameters.bForced or false -- volume della feature From 5c6d6951c9477f6d5a5dc6c78065d8e131a33149 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Wed, 1 Jul 2026 12:22:20 +0200 Subject: [PATCH 3/7] Prima versione gestione codolo verticale con parametro bAllowPerpendicularStrip --- LuaLibs/MachiningLib.lua | 3 ++ Strategies/Standard/STR0005/STR0005.lua | 1 + Strategies/Standard/STR0012/STR0012.json | 24 +++++++++++ Strategies/Standard/STR0012/STR0012.lua | 12 +++--- StrategyLibs/BLADEKEEPWASTE.lua | 54 ++++++++++++++++++++++-- 5 files changed, 86 insertions(+), 8 deletions(-) diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 77f77c3..a24eaac 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -209,6 +209,9 @@ function MachiningLib.GetSplitMachinings( Machinings, SplittingPoints, Part) Machinings[nCurrentMachiningIndex].nFeatureSegment = j 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].bIsMachiningSplitted = true end -- anche le lavorazioni non splittate necessitano del segmento assegnato else diff --git a/Strategies/Standard/STR0005/STR0005.lua b/Strategies/Standard/STR0005/STR0005.lua index 4d63251..6a5d86b 100644 --- a/Strategies/Standard/STR0005/STR0005.lua +++ b/Strategies/Standard/STR0005/STR0005.lua @@ -115,6 +115,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters) local OptionalParameters = { dExtendAfterTail = dExtendAfterTail, dStripWidth = Strategy.Parameters.dStripWidth, bAllowPerpendicularStrip = Strategy.Parameters.bAllowPerpendicularStrip, + bFinishWithMill = Strategy.Parameters.bFinishWithMill, bForced = bKeepWasteAttached } AuxiliaryData.bIgnoreNotClampableLength = true diff --git a/Strategies/Standard/STR0012/STR0012.json b/Strategies/Standard/STR0012/STR0012.json index ea028a1..c5cc17d 100644 --- a/Strategies/Standard/STR0012/STR0012.json +++ b/Strategies/Standard/STR0012/STR0012.json @@ -125,6 +125,30 @@ } ] }, + { + "sName": "dStripWidth", + "sNameNge": "STRIP_WIDTH", + "sValue": "5", + "sDescriptionShort": "Strip width", + "sDescriptionLong": "In case the waste is still kept attached, this is the wigth dimension of the strip", + "idDescriptionShortMsg": 1000129, + "idDescriptionLongMsg": 1000130, + "sType": "d", + "sMessageId": " ", + "sMinUserLevel": "1" + }, + { + "sName": "bAllowPerpendicularStrip", + "sNameNge": "ALLOW_PERPENDICULAR_STRIP", + "sValue": "false", + "sDescriptionShort": "Allow multiple short strips", + "sDescriptionLong": "Allow multiple short strips", + "idDescriptionShortMsg": 1000319, + "idDescriptionLongMsg": 1000320, + "sType": "b", + "sMessageId": " ", + "sMinUserLevel": "1" + }, { "sName": "dMaxWasteLength", "sSource": "GEN_dMaxWasteLength", diff --git a/Strategies/Standard/STR0012/STR0012.lua b/Strategies/Standard/STR0012/STR0012.lua index d570df3..f006bcb 100644 --- a/Strategies/Standard/STR0012/STR0012.lua +++ b/Strategies/Standard/STR0012/STR0012.lua @@ -101,7 +101,9 @@ function STR0012.Make( bAddMachining, Proc, Part, CustomParameters) or bKeepWasteAttached then local BladeKeepWasteResult - local OptionalParameters = { dExtendAfterTail = dExtendAfterTail, dStripWidth = 5, bFinishWithMill = false} + local OptionalParameters = { bAllowPerpendicularStrip = Strategy.Parameters.bAllowPerpendicularStrip, + dStripWidth = Strategy.Parameters.dStripWidth, + dExtendAfterTail = dExtendAfterTail, bFinishWithMill = false} AuxiliaryData.bIgnoreNotClampableLength = true TwoFaces.Result, BladeKeepWasteResult = BladeKeepWaste.Make( NewProc, Part, OptionalParameters) dTimeToMachine = BladeKeepWasteResult.dTimeToMachine @@ -113,10 +115,10 @@ function STR0012.Make( bAddMachining, Proc, Part, CustomParameters) else local BladeToWasteResult local OptionalParameters = { dMaxWasteVolume = Strategy.Parameters.dMaxWasteVolume, - dMaxWasteLength = Strategy.Parameters.dMaxWasteLength, - bSaveAddedGeometries = bAddMachining, - dExtendAfterTail = dExtendAfterTail, - bReduceBladePath = Strategy.Parameters.bReduceBladePath + dMaxWasteLength = Strategy.Parameters.dMaxWasteLength, + bSaveAddedGeometries = bAddMachining, + dExtendAfterTail = dExtendAfterTail, + bReduceBladePath = Strategy.Parameters.bReduceBladePath } AuxiliaryData.bIgnoreNotClampableLength = false TwoFaces.Result, BladeToWasteResult = BladeToWaste.Make( NewProc, Part, OptionalParameters) diff --git a/StrategyLibs/BLADEKEEPWASTE.lua b/StrategyLibs/BLADEKEEPWASTE.lua index 830162e..6ed90ba 100644 --- a/StrategyLibs/BLADEKEEPWASTE.lua +++ b/StrategyLibs/BLADEKEEPWASTE.lua @@ -146,10 +146,12 @@ local function MakeBottomFace( Proc, Part, BottomFace, EdgeToMachine, Parameters local dExtendAfterTail = Parameters.dExtendAfterTail local nToolIndex = Parameters.nToolIndex local dStripWidth = Parameters.dStripWidth + local bAllowPerpendicularStrip = Parameters.bAllowPerpendicularStrip local OtherBottomFace = Parameters.OtherBottomFace local dDepthToMachine = EdgeToMachine.dElevation / 2 - dStripWidth / 2 - local OptionalParametersFaceByBlade1 = { dDepthToMachine = dDepthToMachine, bIsSplitFeature = bIsSplitFeature, dExtendAfterTail = dExtendAfterTail, nToolIndex = nToolIndex} + local OptionalParametersFaceByBlade1 = { dDepthToMachine = dDepthToMachine, bIsSplitFeature = bIsSplitFeature, + dExtendAfterTail = dExtendAfterTail, nToolIndex = nToolIndex} local EdgeToMachineOpposite = BeamLib.FindEdgeBestOrientedAsDirection( BottomFace.Edges, -EdgeToMachine.vtN) -- primo lato @@ -175,8 +177,15 @@ local function MakeBottomFace( Proc, Part, BottomFace, EdgeToMachine, Parameters if OtherBottomFace and ( EdgeToMachine.idAdjacentFace == OtherBottomFace.id) then dStripWidth = TOOLS[Cutting2.nToolIndex].dThickness + 2 * dStripWidth end - dDepthToMachine = min( TOOLS[Cutting2.nToolIndex].dMaxMaterial, EdgeToMachine.dElevation - dStripWidth) + -- se richiesto, si calcola il codolo verticale + if bAllowPerpendicularStrip then + dDepthToMachine = TOOLS[Cutting2.nToolIndex].dMaxMaterial - 10 + else + dDepthToMachine = min( TOOLS[Cutting2.nToolIndex].dMaxMaterial, EdgeToMachine.dElevation - dStripWidth) + end + OptionalParametersFaceByBlade2.dDepthToMachine = dDepthToMachine + OptionalParametersFaceByBlade2.bAllowPerpendicularStrip = bAllowPerpendicularStrip Cutting2 = FaceByBlade.Make( Proc, Part, BottomFace, EdgeToMachine, OptionalParametersFaceByBlade2) Cutting2.nInternalSortingPriority = 2 @@ -189,8 +198,15 @@ local function MakeBottomFace( Proc, Part, BottomFace, EdgeToMachine, Parameters if OtherBottomFace and ( EdgeToMachine.idAdjacentFace == OtherBottomFace.id) then dStripWidth = TOOLS[Cutting1.nToolIndex].dThickness + 2 * dStripWidth end - dDepthToMachine = min( TOOLS[Cutting1.nToolIndex].dMaxMaterial, EdgeToMachine.dElevation - dStripWidth) + -- se richiesto, si calcola il codolo verticale + if bAllowPerpendicularStrip then + dDepthToMachine = TOOLS[Cutting1.nToolIndex].dMaxMaterial - 10 + else + dDepthToMachine = min( TOOLS[Cutting1.nToolIndex].dMaxMaterial, EdgeToMachine.dElevation - dStripWidth) + end + OptionalParametersFaceByBlade1.dDepthToMachine = dDepthToMachine + OptionalParametersFaceByBlade1.bAllowPerpendicularStrip = bAllowPerpendicularStrip Cutting1 = FaceByBlade.Make( Proc, Part, BottomFace, EdgeToMachine, OptionalParametersFaceByBlade1) Cutting1.nInternalSortingPriority = 2 @@ -297,6 +313,7 @@ function BLADEKEEPWASTE.Make( Proc, Part, OptionalParameters) dExtendAfterTail = dExtendAfterTail, nToolIndex = nToolIndex, dStripWidth = dStripWidth, + bAllowPerpendicularStrip = bAllowPerpendicularStrip, OtherBottomFace = BottomFace2 } local Cuttings1 = MakeBottomFace( Proc, Part, BottomFace1, BottomEdgeToMachine1, Parameters1) @@ -428,6 +445,37 @@ function BLADEKEEPWASTE.Make( Proc, Part, OptionalParameters) Machinings = MachiningLib.GetSplitMachinings( Machinings, FeatureSplittingPoints, Part) end + -- se codoli perpendicolari, si accorciano LeadIn/LeadOut + if bAllowPerpendicularStrip then + for j = 1, #Machinings do + if Machinings[j].bIsMachiningSplitted then + -- se primo spezzone + if Machinings[j].bIsFirstSegment then + if MachiningLib.StartsLeftSide( Machinings[j]) then + Machinings[j].LeadIn.dStartAddLength = Machinings[j].LeadIn.dStartAddLength - Machinings[j].dToolMarkLength - dStripWidth + Machinings[j].LeadOut.dEndAddLength = Machinings[j].LeadOut.dEndAddLength - dStripWidth + else + Machinings[j].LeadOut.dEndAddLength = Machinings[j].LeadOut.dEndAddLength - Machinings[j].dToolMarkLength - dStripWidth + Machinings[j].LeadIn.dStartAddLength = Machinings[j].LeadIn.dStartAddLength - dStripWidth + end + -- se ultimo spezzone + elseif Machinings[j].bIsLastSegment then + if MachiningLib.StartsLeftSide( Machinings[j]) then + Machinings[j].LeadOut.dEndAddLength = Machinings[j].LeadOut.dEndAddLength - Machinings[j].dToolMarkLength - dStripWidth + Machinings[j].LeadIn.dStartAddLength = Machinings[j].LeadIn.dStartAddLength - dStripWidth + else + Machinings[j].LeadIn.dStartAddLength = Machinings[j].LeadIn.dStartAddLength - Machinings[j].dToolMarkLength - dStripWidth + Machinings[j].LeadOut.dEndAddLength = Machinings[j].LeadOut.dEndAddLength - dStripWidth + end + -- se spezzoni centrali + else + Machinings[j].LeadIn.dStartAddLength = Machinings[j].LeadIn.dStartAddLength - Machinings[j].dToolMarkLength - dStripWidth + Machinings[j].LeadOut.dEndAddLength = Machinings[j].LeadOut.dEndAddLength - Machinings[j].dToolMarkLength - dStripWidth + end + end + end + end + -- ordinamento table.sort( Machinings, SortMachiningsBySegment) From eb6d2a1a1e30df4170b6e4f18c0c87c489ec15fe Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Wed, 1 Jul 2026 12:34:22 +0200 Subject: [PATCH 4/7] Se feature corta non si fanno i codoli perpendicolari --- StrategyLibs/BLADEKEEPWASTE.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/StrategyLibs/BLADEKEEPWASTE.lua b/StrategyLibs/BLADEKEEPWASTE.lua index 6ed90ba..b4a148d 100644 --- a/StrategyLibs/BLADEKEEPWASTE.lua +++ b/StrategyLibs/BLADEKEEPWASTE.lua @@ -178,7 +178,7 @@ local function MakeBottomFace( Proc, Part, BottomFace, EdgeToMachine, Parameters dStripWidth = TOOLS[Cutting2.nToolIndex].dThickness + 2 * dStripWidth end -- se richiesto, si calcola il codolo verticale - if bAllowPerpendicularStrip then + if bAllowPerpendicularStrip and FeatureLib.IsMachiningLong( Cutting1.dEdgeLength, Part) then dDepthToMachine = TOOLS[Cutting2.nToolIndex].dMaxMaterial - 10 else dDepthToMachine = min( TOOLS[Cutting2.nToolIndex].dMaxMaterial, EdgeToMachine.dElevation - dStripWidth) @@ -199,7 +199,7 @@ local function MakeBottomFace( Proc, Part, BottomFace, EdgeToMachine, Parameters dStripWidth = TOOLS[Cutting1.nToolIndex].dThickness + 2 * dStripWidth end -- se richiesto, si calcola il codolo verticale - if bAllowPerpendicularStrip then + if bAllowPerpendicularStrip and FeatureLib.IsMachiningLong( Cutting2.dEdgeLength, Part) then dDepthToMachine = TOOLS[Cutting1.nToolIndex].dMaxMaterial - 10 else dDepthToMachine = min( TOOLS[Cutting1.nToolIndex].dMaxMaterial, EdgeToMachine.dElevation - dStripWidth) From e83f2d5b69b24b505585ebc9f7418f0d86a74c24 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Thu, 2 Jul 2026 10:42:05 +0200 Subject: [PATCH 5/7] =?UTF-8?q?-=20In=20STR0005=20e=20STR0012=20aggiunta?= =?UTF-8?q?=20lunghezza=20sotto=20la=20quale=20cubettare=20in=20caso=20di?= =?UTF-8?q?=20configurazuione=20AUTO=20-=20Aggiunta=20topologia=20VGroove-?= =?UTF-8?q?2-Through=20-=20Aggiunti=20messaggi=20-=20In=20lettura=20parame?= =?UTF-8?q?tri,=20se=20il=20default=20=C3=A8=20nil,=20ma=20da=20json=20?= =?UTF-8?q?=C3=A8=20settato,=20allora=20si=20prende=20il=20valore=20del=20?= =?UTF-8?q?json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LuaLibs/BeamLib.lua | 2 +- Messages/EgalTechEng.txt | 2 ++ Messages/EgalTechIta.txt | 2 ++ Messages/EgalTechNld.txt | 2 ++ Strategies/AvailableStrategyList.json | 40 ++++++++++++++++++++++++ Strategies/Standard/STR0005/STR0005.json | 12 +++++++ Strategies/Standard/STR0005/STR0005.lua | 3 +- Strategies/Standard/STR0012/STR0012.json | 12 +++++++ Strategies/Standard/STR0012/STR0012.lua | 2 ++ 9 files changed, 75 insertions(+), 2 deletions(-) diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index a4bc803..83fba71 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -764,7 +764,7 @@ function BeamLib.LoadCustomParametersInStrategy( Proc, Part, CustomParameters, D if DefaultStrategyParamList.ParameterList[i].sType == 'b' then UpdatedParameters[DefaultStrategyParamList.ParameterList[i].sName] = xParameterValue == 'true' or xParameterValue == '1' or xParameterValue == true elseif DefaultStrategyParamList.ParameterList[i].sType == 'd' then - if #DefaultStrategyParamList.ParameterList[i].sValue > 0 then + if #DefaultStrategyParamList.ParameterList[i].sValue > 0 or #xParameterValue > 0 then UpdatedParameters[DefaultStrategyParamList.ParameterList[i].sName] = tonumber( xParameterValue) -- stringa vuota equivale a non passare alcun valore (deciderà la strategia) else diff --git a/Messages/EgalTechEng.txt b/Messages/EgalTechEng.txt index ae0126a..f120cb4 100644 --- a/Messages/EgalTechEng.txt +++ b/Messages/EgalTechEng.txt @@ -321,4 +321,6 @@ 1000318=Use a mill to finish the surface if split with chain saw 1000319=Allow multiple short strips 1000320=Allow multiple short strips +1000321=Length limit to drop the waste +1000322=If Cutting Strategy is set on AUTO, up to this length the software drop the waste, otherwise it'll keep attached // ----- End ----- diff --git a/Messages/EgalTechIta.txt b/Messages/EgalTechIta.txt index 4a1fc9d..019221a 100644 --- a/Messages/EgalTechIta.txt +++ b/Messages/EgalTechIta.txt @@ -321,4 +321,6 @@ 1000318=Utilizza una fresa per rifinire la superficie se tagliata con la sega a catena 1000319=Permettere codoli multipli 1000320=Permettere codoli multipli +1000321=Lunghezza limite fino alla quale lo scarto viene staccato +1000322=Se la strategia di taglio è impostata su AUTO, fino a questa lunghezza il software stacca gli scarti, altrimenti li mantiene attaccati // ----- End ----- diff --git a/Messages/EgalTechNld.txt b/Messages/EgalTechNld.txt index d75cd73..fbc9e18 100644 --- a/Messages/EgalTechNld.txt +++ b/Messages/EgalTechNld.txt @@ -321,4 +321,6 @@ 1000318=Gebruik een frees om het oppervlak na te bewerken als dit met de kettingzaag is gespleten 1000319=Sta meerdere korte verbindingsstrips toe 1000320=Sta meerdere korte verbindingsstrips toe +1000321=Maximale lengte voor het uitwerpen van het reststuk +1000322=Als de snijstrategie op AUTO staat, wordt het reststuk tot deze maximale lengte automatisch uitgeworpen; bij grotere lengtes blijft het reststuk aan het werkstuk bevestigd. // ----- End ----- \ No newline at end of file diff --git a/Strategies/AvailableStrategyList.json b/Strategies/AvailableStrategyList.json index 1799793..53c9ac1 100644 --- a/Strategies/AvailableStrategyList.json +++ b/Strategies/AvailableStrategyList.json @@ -108,6 +108,10 @@ "sImage": "ConfigStrategy\\Rabbet-2-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] }, + { "sName": "VGroove-2-Through", + "sImage": "ConfigStrategy\\VGroove-2-Through.png", + "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] + }, { "sName": "Cut-1-Through", "sImage": "ConfigStrategy\\Cut-1-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ] @@ -151,6 +155,10 @@ "sImage": "ConfigStrategy\\Rabbet-2-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] }, + { "sName": "VGroove-2-Through", + "sImage": "ConfigStrategy\\VGroove-2-Through.png", + "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] + }, { "sName": "Cut-1-Through", "sImage": "ConfigStrategy\\Cut-1-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ] @@ -196,6 +204,10 @@ { "sName": "Rabbet-2-Through", "sImage": "ConfigStrategy\\Rabbet-2-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] + }, + { "sName": "VGroove-2-Through", + "sImage": "ConfigStrategy\\VGroove-2-Through.png", + "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] } ] }, @@ -224,6 +236,10 @@ "sImage": "ConfigStrategy\\Rabbet-2-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] }, + { "sName": "VGroove-2-Through", + "sImage": "ConfigStrategy\\VGroove-2-Through.png", + "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] + }, { "sName": "Cut-1-Through", "sImage": "ConfigStrategy\\Cut-1-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ] @@ -271,6 +287,10 @@ "sImage": "ConfigStrategy\\Rabbet-2-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] }, + { "sName": "VGroove-2-Through", + "sImage": "ConfigStrategy\\VGroove-2-Through.png", + "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] + }, { "sName": "Cut-1-Through", "sImage": "ConfigStrategy\\Cut-1-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ] @@ -314,6 +334,10 @@ "sImage": "ConfigStrategy\\Rabbet-2-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] }, + { "sName": "VGroove-2-Through", + "sImage": "ConfigStrategy\\VGroove-2-Through.png", + "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] + }, { "sName": "Cut-1-Through", "sImage": "ConfigStrategy\\Cut-1-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ] @@ -368,6 +392,10 @@ "sImage": "ConfigStrategy\\Rabbet-2-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] }, + { "sName": "VGroove-2-Through", + "sImage": "ConfigStrategy\\VGroove-2-Through.png", + "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] + }, { "sName": "Cut-1-Through", "sImage": "ConfigStrategy\\Cut-1-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ] @@ -455,6 +483,10 @@ "sImage": "ConfigStrategy\\Rabbet-2-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] }, + { "sName": "VGroove-2-Through", + "sImage": "ConfigStrategy\\VGroove-2-Through.png", + "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] + }, { "sName": "Cut-1-Through", "sImage": "ConfigStrategy\\Cut-1-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ] @@ -520,6 +552,10 @@ "sImage": "ConfigStrategy\\Rabbet-2-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] }, + { "sName": "VGroove-2-Through", + "sImage": "ConfigStrategy\\VGroove-2-Through.png", + "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] + }, { "sName": "Cut-1-Through", "sImage": "ConfigStrategy\\Cut-1-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ] @@ -575,6 +611,10 @@ "sImage": "ConfigStrategy\\Rabbet-2-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] }, + { "sName": "VGroove-2-Through", + "sImage": "ConfigStrategy\\VGroove-2-Through.png", + "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" }, { "sStrategyId": "STR0010"} ] + }, { "sName": "Cut-1-Through", "sImage": "ConfigStrategy\\Cut-1-Through.png", "StrategyList" : [ { "sStrategyId": "STR0002" }, { "sStrategyId": "STR0005" } ] diff --git a/Strategies/Standard/STR0005/STR0005.json b/Strategies/Standard/STR0005/STR0005.json index 7fbc000..0a67b40 100644 --- a/Strategies/Standard/STR0005/STR0005.json +++ b/Strategies/Standard/STR0005/STR0005.json @@ -100,6 +100,18 @@ } ] }, + { + "sName": "dLengthLimitToDropWaste", + "sNameNge": "LEN_DROP_WASTE", + "sValue": "", + "sDescriptionShort": "Length limit to drop the waste", + "sDescriptionLong": "If Cutting Strategy is set on AUTO, up to this length the software drop the waste, otherwise it'll keep attached", + "idDescriptionShortMsg": 1000321, + "idDescriptionLongMsg": 1000322, + "sType": "d", + "sMessageId": " ", + "sMinUserLevel": "1" + }, { "sName": "bDisableDicing", "sNameNge": "DISABLE_DICING", diff --git a/Strategies/Standard/STR0005/STR0005.lua b/Strategies/Standard/STR0005/STR0005.lua index 6a5d86b..f4e9128 100644 --- a/Strategies/Standard/STR0005/STR0005.lua +++ b/Strategies/Standard/STR0005/STR0005.lua @@ -100,8 +100,8 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters) -- considerazioni necessarie a determinare se lavorare con codolo oppure no local bKeepWasteAttached = ( Strategy.Parameters.sCuttingStrategy == 'KEEP_WASTE_ATTACHED') local bDropWaste = ( Strategy.Parameters.sCuttingStrategy == 'DROP_WASTE') - local bFeatureHindersClamping = MachiningLib.IsFeatureHinderingClamping( Proc, Part) + local dLengthLimitToDropWaste = Strategy.Parameters.dLengthLimitToDropWaste local bIsFeatureLong = FeatureLib.IsMachiningLong( Proc.b3Box:getDimX(), Part, { dMaxSegmentLength = BeamData.LONGCUT_ENDLEN}) local bIsTwoFacesCommonEdgeTooLong = ( ( Proc.Topology and ( Proc.Topology.sName == 'Rabbet-2-Through' or Proc.Topology.sName == 'Bevel-2-Blind')) and IsTwoFacesCommonEdgeTooLong( Proc, Part)) @@ -109,6 +109,7 @@ function STR0005.Make( bAddMachining, Proc, Part, CustomParameters) -- lavorazione con codolo if ( Proc.nFct > 2 and bIsFeatureLong) or ( bFeatureHindersClamping and not bDropWaste) + or ( dLengthLimitToDropWaste and Proc.b3Box:getDimX() > dLengthLimitToDropWaste) or bKeepWasteAttached then local BladeKeepWasteResult diff --git a/Strategies/Standard/STR0012/STR0012.json b/Strategies/Standard/STR0012/STR0012.json index c5cc17d..cdc0023 100644 --- a/Strategies/Standard/STR0012/STR0012.json +++ b/Strategies/Standard/STR0012/STR0012.json @@ -51,6 +51,18 @@ } ] }, + { + "sName": "dLengthLimitToDropWaste", + "sNameNge": "LEN_DROP_WASTE", + "sValue": "", + "sDescriptionShort": "Length limit to drop the waste", + "sDescriptionLong": "If Cutting Strategy is set on AUTO, up to this length the software drop the waste, otherwise it'll keep attached", + "idDescriptionShortMsg": 1000321, + "idDescriptionLongMsg": 1000322, + "sType": "d", + "sMessageId": " ", + "sMinUserLevel": "1" + }, { "sName": "sCanDamageNextPiece", "sNameNge": "DAMAGE_NEXT_PIECE", diff --git a/Strategies/Standard/STR0012/STR0012.lua b/Strategies/Standard/STR0012/STR0012.lua index f006bcb..b500026 100644 --- a/Strategies/Standard/STR0012/STR0012.lua +++ b/Strategies/Standard/STR0012/STR0012.lua @@ -95,9 +95,11 @@ function STR0012.Make( bAddMachining, Proc, Part, CustomParameters) local bKeepWasteAttached = ( Strategy.Parameters.sCuttingStrategy == 'KEEP_WASTE_ATTACHED') local bDropWaste = ( Strategy.Parameters.sCuttingStrategy == 'DROP_WASTE') local bFeatureHindersClamping = MachiningLib.IsFeatureHinderingClamping( NewProc, Part) + local dLengthLimitToDropWaste = Strategy.Parameters.dLengthLimitToDropWaste -- lavorazione con codolo if ( bFeatureHindersClamping and not bDropWaste) + or ( dLengthLimitToDropWaste and Proc.b3Box:getDimX() > dLengthLimitToDropWaste) or bKeepWasteAttached then local BladeKeepWasteResult From 73ec13f1a321c15b8111fef566e4328241836500 Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Tue, 7 Jul 2026 17:57:57 +0200 Subject: [PATCH 6/7] - in FACEBYBLADE la ToolMarkLength viene calcolata da LeadInOutLib, se non disponibile --- LuaLibs/LeadInOutLib.lua | 4 ++-- StrategyLibs/FACEBYBLADE.lua | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/LuaLibs/LeadInOutLib.lua b/LuaLibs/LeadInOutLib.lua index 4f22484..d9f9d86 100644 --- a/LuaLibs/LeadInOutLib.lua +++ b/LuaLibs/LeadInOutLib.lua @@ -93,7 +93,7 @@ end ------------------------------------------------------------------------------------------------------------- -local function GetToolAddLength( dToolDiameter, dDepthToMachine) +function LeadInOutLib.GetToolAddLength( dToolDiameter, dDepthToMachine) local dCheckDepth = min( dToolDiameter / 2, dDepthToMachine) local dToolAddLength = sqrt( dCheckDepth * dToolDiameter - dCheckDepth * dCheckDepth) @@ -119,7 +119,7 @@ function LeadInOutLib.CalculateLeadInOut( sLeadInOutType, Parameters, OptionalPa local bIsEndClosed = not Edge.bIsEndOpen -- accorciamento per lati chiusi - LeadInOut.dToolAddLength = GetToolAddLength( Tool.dDiameter, dDepthToMachine) + LeadInOut.dToolAddLength = LeadInOutLib.GetToolAddLength( Tool.dDiameter, dDepthToMachine) LeadInOut.dExtraAddLengthStart, LeadInOut.dExtraAddLengthEnd = GetExtraAddLengthInclinedSides( Face, Edge) -- allungamento per faccia singola (aperta in tutte le direzioni) LeadInOut.dAddedLengthOpenFace = BeamData.CUT_EXTRA diff --git a/StrategyLibs/FACEBYBLADE.lua b/StrategyLibs/FACEBYBLADE.lua index ae32c79..0d62633 100644 --- a/StrategyLibs/FACEBYBLADE.lua +++ b/StrategyLibs/FACEBYBLADE.lua @@ -583,6 +583,8 @@ function FACEBYBLADE.Make( Proc, Part, FaceToMachine, EdgeToMachine, OptionalPar Cutting.dToolMarkLength = abs( Cutting.LeadIn.dStartAddLength) elseif Cutting.bIsEndClosed then Cutting.dToolMarkLength = abs( Cutting.LeadOut.dEndAddLength) + else + Cutting.dToolMarkLength = LeadInOutLib.GetToolAddLength( TOOLS[Cutting.nToolIndex].dDiameter, dDepthToMachine) end -- area lavorata Cutting.dAreaToMachine = min( EdgeToMachine.dElevation, Cutting.dDepthToMachine) * ( min( Cutting.dEdgeLength, Cutting.dLengthToMachine + 2 * Cutting.dToolMarkLength)) From b1fad0cd0c334831fcec510bb12e943d0c04d8ac Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Tue, 7 Jul 2026 18:27:03 +0200 Subject: [PATCH 7/7] =?UTF-8?q?-=20in=20BLADEKEEPWASTE=20il=20codolo=20per?= =?UTF-8?q?pendicolare=20si=20fa=20solo=20se=20la=20feature=20arriva=20pi?= =?UTF-8?q?=C3=B9=20in=20basso=20dell'altezza=20minima=20della=20morsa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- StrategyLibs/BLADEKEEPWASTE.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/StrategyLibs/BLADEKEEPWASTE.lua b/StrategyLibs/BLADEKEEPWASTE.lua index b4a148d..4faf166 100644 --- a/StrategyLibs/BLADEKEEPWASTE.lua +++ b/StrategyLibs/BLADEKEEPWASTE.lua @@ -11,7 +11,8 @@ require( 'EgtBase') local FeatureLib = require( 'FeatureLib') local FaceData = require( 'FaceData') local MachiningLib = require( 'MachiningLib') -local BeamLib = require('BeamLib') +local BeamLib = require( 'BeamLib') +local BeamData = require( 'BeamDataNew') -- strategie di base local FaceByBlade = require('FACEBYBLADE') local FaceByMill = require( 'FACEBYMILL') @@ -185,7 +186,6 @@ local function MakeBottomFace( Proc, Part, BottomFace, EdgeToMachine, Parameters end OptionalParametersFaceByBlade2.dDepthToMachine = dDepthToMachine - OptionalParametersFaceByBlade2.bAllowPerpendicularStrip = bAllowPerpendicularStrip Cutting2 = FaceByBlade.Make( Proc, Part, BottomFace, EdgeToMachine, OptionalParametersFaceByBlade2) Cutting2.nInternalSortingPriority = 2 @@ -206,7 +206,6 @@ local function MakeBottomFace( Proc, Part, BottomFace, EdgeToMachine, Parameters end OptionalParametersFaceByBlade1.dDepthToMachine = dDepthToMachine - OptionalParametersFaceByBlade1.bAllowPerpendicularStrip = bAllowPerpendicularStrip Cutting1 = FaceByBlade.Make( Proc, Part, BottomFace, EdgeToMachine, OptionalParametersFaceByBlade1) Cutting1.nInternalSortingPriority = 2 @@ -266,7 +265,7 @@ function BLADEKEEPWASTE.Make( Proc, Part, OptionalParameters) local bFinishWithMill = ( OptionalParameters.bFinishWithMill ~= false) local dMillingOffsetFromSide = OptionalParameters.dMillingOffsetFromSide or 1 local dStripWidth = OptionalParameters.dStripWidth or 5 - local bAllowPerpendicularStrip = OptionalParameters.bAllowPerpendicularStrip or false + local bAllowPerpendicularStrip = ( OptionalParameters.bAllowPerpendicularStrip and ( Part.b3Raw:getMin():getZ() + BeamData.VICE_MINH > Proc.b3Box:getMin():getZ() - 10 * GEO.EPS_SMALL)) or false local bForced = OptionalParameters.bForced or false -- volume della feature