From 9b5bb25c76fa4284dc5fa045fb5c7cc1f9e48b4b Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Wed, 6 Nov 2024 11:32:51 +0100 Subject: [PATCH] - implementata STR0004, strategia SlotByChainSaw --- LuaLibs/BasicCustomerStrategies.lua | 112 +++++----- Strategies/Standard/STR0003/STR0003.lua | 4 +- Strategies/Standard/STR0004/STR0004.lua | 279 ++++-------------------- Strategies/Strategies.ini | 56 ++--- 4 files changed, 127 insertions(+), 324 deletions(-) diff --git a/LuaLibs/BasicCustomerStrategies.lua b/LuaLibs/BasicCustomerStrategies.lua index 8590fb5..04569ea 100644 --- a/LuaLibs/BasicCustomerStrategies.lua +++ b/LuaLibs/BasicCustomerStrategies.lua @@ -65,13 +65,13 @@ local function GetStrategies_Egalware( Proc) -- Feature : Slot elseif ID.IsSlot( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -81,13 +81,13 @@ local function GetStrategies_Egalware( Proc) -- Feature : Front Slot elseif ID.IsFrontSlot( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -103,13 +103,13 @@ local function GetStrategies_Egalware( Proc) -- Feature : Ridge Lap elseif ID.IsRidgeLap( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -119,13 +119,13 @@ local function GetStrategies_Egalware( Proc) -- Feature : Lap Joint elseif ID.IsLapJoint( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -135,13 +135,13 @@ local function GetStrategies_Egalware( Proc) -- Feature : Notch/Rabbet elseif ID.IsNotchRabbet( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -154,13 +154,13 @@ local function GetStrategies_Egalware( Proc) -- Feature : Notch elseif ID.IsNotch( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -182,13 +182,13 @@ local function GetStrategies_Egalware( Proc) -- Feature : Pocket elseif ID.IsPocket( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -323,13 +323,13 @@ local function GetStrategies_Essetre( Proc) -- Feature : Slot elseif ID.IsSlot( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -339,13 +339,13 @@ local function GetStrategies_Essetre( Proc) -- Feature : Front Slot elseif ID.IsFrontSlot( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -361,13 +361,13 @@ local function GetStrategies_Essetre( Proc) -- Feature : Ridge Lap elseif ID.IsRidgeLap( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -377,13 +377,13 @@ local function GetStrategies_Essetre( Proc) -- Feature : Lap Joint elseif ID.IsLapJoint( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -393,13 +393,13 @@ local function GetStrategies_Essetre( Proc) -- Feature : Notch/Rabbet elseif ID.IsNotchRabbet( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -412,13 +412,13 @@ local function GetStrategies_Essetre( Proc) -- Feature : Notch elseif ID.IsNotch( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then @@ -440,13 +440,13 @@ local function GetStrategies_Essetre( Proc) -- Feature : Pocket elseif ID.IsPocket( Proc) then if Proc.Topology.sName == 'Pocket-5-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-4-Blind' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Tunnel-4-Through' then - Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}} + Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}} elseif Proc.Topology.sName == 'Groove-3-Blind' then Strategies = { { sStrategyId = 'STR0002'}} elseif Proc.Topology.sName == 'Rabbet-2-Through' then diff --git a/Strategies/Standard/STR0003/STR0003.lua b/Strategies/Standard/STR0003/STR0003.lua index 70ab3e9..1138bc2 100644 --- a/Strategies/Standard/STR0003/STR0003.lua +++ b/Strategies/Standard/STR0003/STR0003.lua @@ -385,7 +385,7 @@ function STR0003.Make( bAddMachining, Proc, Part, CustomParameters) OptionalParameters = { sSideToMachine = 'End', dLengthToMachine = Blade.Result.Opposite[2].dBladeMarkLength, dMaxElev = 0} Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) Chainsaw.AddResult( Mortising) - if Chainsaw.Result.Opposite[1].dResidualDepth > GEO.EPS_SMALL or Chainsaw.Result.Opposite[2].dResidualDepth > GEO.EPS_SMALL then + if Chainsaw.Result.Opposite[1].dResidualDepth > 10 * GEO.EPS_SMALL or Chainsaw.Result.Opposite[2].dResidualDepth > 10 * GEO.EPS_SMALL then Chainsaw.Result.Opposite[1].bIsApplicable = false Chainsaw.Result.Opposite[2].bIsApplicable = false local OptionalParameters = { bStopAtHalfElevation = true, sSideToMachine = 'Start', dLengthToMachine = Blade.Result.Opposite[1].dBladeMarkLength, dMaxElev = 0} @@ -408,7 +408,7 @@ function STR0003.Make( bAddMachining, Proc, Part, CustomParameters) local OptionalParameters = { dMaxElev = Blade.Result.Opposite[1].dResidualDepth + BeamData.CUT_EXTRA} Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) Chainsaw.AddResult( Mortising) - if Chainsaw.Result.Opposite[1].dResidualDepth > GEO.EPS_SMALL then + if Chainsaw.Result.Opposite[1].dResidualDepth > 10 * GEO.EPS_SMALL then Chainsaw.Result.Opposite[1].bIsApplicable = false local OptionalParameters = { bStopAtHalfElevation = true, dMaxElev = Blade.Result.Opposite[1].dResidualDepth + BeamData.CUT_EXTRA} SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) diff --git a/Strategies/Standard/STR0004/STR0004.lua b/Strategies/Standard/STR0004/STR0004.lua index 767b6a5..304acdb 100644 --- a/Strategies/Standard/STR0004/STR0004.lua +++ b/Strategies/Standard/STR0004/STR0004.lua @@ -126,7 +126,6 @@ function STR0004.Make( bAddMachining, Proc, Part, CustomParameters) end -- se tasca su faccia sotto la strategia non è applicabile (la sega a catena in generale non può lavorare da sotto) - -- TODO se OnlySaw questo test è da rimuovere ma bisogna considerare anche la lama da sotto if Proc.AffectedFaces.bBottom and ( Proc.nFct > 3 or not Proc.AffectedFaces.bTop) then local sErr = 'Feature '.. Proc.idFeature .. ' : strategy ' .. Strategy.sName .. ' not applicable - pocket on bottom face' EgtOutLog( sErr) @@ -135,255 +134,64 @@ function STR0004.Make( bAddMachining, Proc, Part, CustomParameters) return false, Strategy.Result end - -- lama - calcolo lavorazioni - local Cutting = {} - local OptionalParameters = { bForceLongcutBlade = Strategy.Parameters.bForceLongcutBlade} - if Proc.Topology.sFamily == 'Tunnel' then - Cutting = SlotByBlade.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) - else - Cutting = SlotByBlade.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge, OptionalParameters) - end - Blade.AddResult( Cutting) - -- lato opposto del tunnel - if Proc.Topology.sFamily == 'Tunnel' then - Cutting = SlotByBlade.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[2], OptionalParameters) - Blade.AddResult( Cutting) - else - -- se la lama non è arrivata sul fondo e c'è almeno un lato aperto va lavorato - if Blade.Result.Bottom[1].dResidualDepth > 10 * GEO.EPS_SMALL then - -- eventuale lavorazione di lama - lato della tasca da cui inizia la lavorazione - if Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge.bIsStartOpen then - Cutting = SlotByBlade.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1], OptionalParameters) - Blade.AddResult( Cutting) - end - -- eventuale lavorazione di lama - lato della tasca in cui finisce la lavorazione - if Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge.bIsEndOpen then - Cutting = SlotByBlade.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[2], OptionalParameters) - Blade.AddResult( Cutting) - end - -- la lama è arrivata sul fondo e tasca passante, non servono ulteriori lavorazioni - elseif #( Proc.MainFaces.SideFaces) == 0 then - Strategy.Parameters.bFinishWithChainSaw = false - Strategy.Parameters.bNotCompleteWithBladeRadius = false - end - end - -- lama - aggiunta lavorazioni - local nIsApplicableCount = 0 - local dFinalCompletionPercentage = 100 - local bAreAllMachiningsAdded = true - for i = 1, #Blade.Result.Bottom do - if Blade.Result.Bottom[i].bIsApplicable then - nIsApplicableCount = nIsApplicableCount + 1 - if bAddMachining then - local bIsMachiningAdded = Blade.AddMachiningAllSteps( Proc, Blade.Result.Bottom[i]) - if not bIsMachiningAdded then - bAreAllMachiningsAdded = false - end - end - Strategy.Result.sInfo = Strategy.Result.sInfo .. '\n' .. Blade.Result.Bottom[i].sMessage - end - end - for i = 1, #Blade.Result.Side do - if Blade.Result.Side[i].bIsApplicable then - nIsApplicableCount = nIsApplicableCount + 1 - if bAddMachining then - local bIsMachiningAdded = Blade.AddMachiningAllSteps( Proc, Blade.Result.Side[i]) - if not bIsMachiningAdded then - bAreAllMachiningsAdded = false - end - end - Strategy.Result.sInfo = Strategy.Result.sInfo .. '\n' .. Blade.Result.Side[i].sMessage - end - end - for i = 1, #Blade.Result.Opposite do - if Blade.Result.Opposite[i].bIsApplicable then - nIsApplicableCount = nIsApplicableCount + 1 - if bAddMachining then - local bIsMachiningAdded = Blade.AddMachiningAllSteps( Proc, Blade.Result.Opposite[i]) - if not bIsMachiningAdded then - bAreAllMachiningsAdded = false - end - end - Strategy.Result.sInfo = Strategy.Result.sInfo .. '\n' .. Blade.Result.Opposite[i].sMessage - end - end - if nIsApplicableCount > 0 then - -- TODO sistemare il calcolo completamento - implementare calcolo area lavorata - if not Strategy.Parameters.bNotCompleteWithBladeRadius and Cutting.dCompletionPercentage > 100 - 10 * GEO.EPS_SMALL then - Strategy.Result.sStatus = 'Completed' - else - Strategy.Result.sStatus = 'Not-Completed' - -- TODO al momento si assume che la percentuale di completamento dell'ultima lavorazione sia quella rilevante - dFinalCompletionPercentage = Cutting.dCompletionPercentage - end - else - Strategy.Result.sStatus = 'Not-Applicable' - Strategy.Parameters.bFinishWithChainSaw = false - end - - if not Strategy.Parameters.bFinishWithChainSaw then - Strategy.Result.nCompletionIndex = FeatureData.GetFeatureCompletionIndex( dFinalCompletionPercentage) - Strategy.Result.nQuality = FeatureData.GetFeatureQuality( 'Blade') - local MRRParametersBlade = { - dStep = TOOLS[Cutting.nToolIndex].dThickness, - dSideStep = min( TOOLS[Cutting.nToolIndex].dSideStep, Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1].dLength), - dFeed = TOOLS[Cutting.nToolIndex].Feeds.dFeed} - local dMRRBlade = MachiningLib.GetToolMRR( MRRParametersBlade) - Strategy.Result.dMRR = dMRRBlade - - return bAreAllMachiningsAdded, Strategy.Result - end - -- sega a catena - calcolo lavorazioni local Mortising = {} OptionalParameters = {} if Proc.Topology.sName == 'Groove-4-Blind' or Proc.Topology.sName == 'Pocket-5-Blind' then - -- si lavora solamente l'impronta lama sui lati chiusi - if ( Blade.Result.Bottom[1].dResidualDepth < 10 * GEO.EPS_SMALL) and - ( Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge.dLength > 3 * Blade.Result.Bottom[1].dBladeMarkLength - 10 * GEO.EPS_SMALL) then - - if not Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge.bIsStartOpen then - local OptionalParameters = { sSideToMachine = 'Start', dLengthToMachine = Blade.Result.Bottom[1].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge, OptionalParameters) - Chainsaw.AddResult( Mortising) - end - if not Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge.bIsEndOpen then - local OptionalParameters = { sSideToMachine = 'End', dLengthToMachine = Blade.Result.Bottom[1].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge, OptionalParameters) - Chainsaw.AddResult( Mortising) - end -- si lavora tutto il fondo - else - local OptionalParameters = { dMaxElev = Blade.Result.Bottom[1].dResidualDepth + BeamData.CUT_EXTRA} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge, OptionalParameters) - Chainsaw.AddResult( Mortising) - end - -- ancora materiale residuo - se possibile si lavora dal lato + local OptionalParameters = {} + Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge, OptionalParameters) + Chainsaw.AddResult( Mortising) + -- materiale residuo - se possibile si lavora dal lato if Chainsaw.Result.Bottom[#Chainsaw.Result.Bottom].dResidualDepth > 10 * GEO.EPS_SMALL and #Proc.MainFaces.SideFaces == 1 then - -- si lavora solamente l'impronta lama sul fondo - if ( #Blade.Result.Side > 0) and Blade.Result.Side[1].dResidualDepth < 10 * GEO.EPS_SMALL then - if ( Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge.bIsStartOpen and Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1].dLength > 3 * Blade.Result.Side[1].dBladeMarkLength - 10 * GEO.EPS_SMALL) then - local OptionalParameters = { sSideToMachine = 'End', dLengthToMachine = Blade.Result.Side[1].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1], OptionalParameters) - elseif ( Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge.bIsEndOpen and Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[2].dLength > 3 * Blade.Result.Side[1].dBladeMarkLength - 10 * GEO.EPS_SMALL) then - local OptionalParameters = { sSideToMachine = 'Start', dLengthToMachine = Blade.Result.Side[1].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[2], OptionalParameters) - end - -- si lavora tutto il lato - else - local dBladeResidualDepth - if #Blade.Result.Side > 0 then - dBladeResidualDepth = Blade.Result.Side[1].dResidualDepth - else - dBladeResidualDepth = Blade.Result.Bottom[1].dResidualDepth - end - if Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge.bIsStartOpen then - local OptionalParameters = { dMaxElev = dBladeResidualDepth + BeamData.CUT_EXTRA} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1], OptionalParameters) - elseif Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge.bIsEndOpen then - local OptionalParameters = { dMaxElev = dBladeResidualDepth + BeamData.CUT_EXTRA} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[2], OptionalParameters) - end + if Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge.bIsStartOpen then + local OptionalParameters = {} + Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1], OptionalParameters) + elseif Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge.bIsEndOpen then + local OptionalParameters = {} + Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[2], OptionalParameters) end Chainsaw.AddResult( Mortising) end elseif Proc.Topology.sName == 'Groove-3-Through' then - if Blade.Result.Bottom[1].dResidualDepth > 10 * GEO.EPS_SMALL then - -- si lavora tutto il fondo - local OptionalParameters = { dMaxElev = Blade.Result.Bottom[1].dResidualDepth + BeamData.CUT_EXTRA} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge, OptionalParameters) + -- si lavora tutto il fondo + local OptionalParameters = {} + Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.BottomEdge, OptionalParameters) + Chainsaw.AddResult( Mortising) + -- materiale residuo - si lavorano i lati + if Chainsaw.Result.Bottom[1].dResidualDepth > 10 * GEO.EPS_SMALL then + local OptionalParameters = {} + Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1], OptionalParameters) Chainsaw.AddResult( Mortising) - -- ancora materiale residuo - si lavorano i lati - if Chainsaw.Result.Bottom[1].dResidualDepth > 10 * GEO.EPS_SMALL then - -- si lavora solamente l'impronta lama sul fondo - if ( Blade.Result.Side[1].dResidualDepth < 10 * GEO.EPS_SMALL and Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1].dLength > 3 * Blade.Result.Side[1].dBladeMarkLength - 10 * GEO.EPS_SMALL) and - ( Blade.Result.Side[2].dResidualDepth < 10 * GEO.EPS_SMALL and Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[2].dLength > 3 * Blade.Result.Side[2].dBladeMarkLength - 10 * GEO.EPS_SMALL) then - - local OptionalParameters = { sSideToMachine = 'End', dLengthToMachine = Blade.Result.Side[1].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1], OptionalParameters) - Chainsaw.AddResult( Mortising) - -- ancora materiale residuo - si lavora da entrambi i lati - if Chainsaw.Result.Side[1].dResidualDepth > 10 * GEO.EPS_SMALL then - local OptionalParameters = { bStopAtHalfElevation = true, sSideToMachine = 'End', dLengthToMachine = Blade.Result.Side[1].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1], OptionalParameters) - Chainsaw.AddResult( Mortising) - OptionalParameters = {} - OptionalParameters = { bStopAtHalfElevation = true, sSideToMachine = 'Start', dLengthToMachine = Blade.Result.Side[2].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[2], OptionalParameters) - Chainsaw.AddResult( Mortising) - -- lavorando dai due lati non c'è materiale residuo - si può eliminare la lavorazione del fondo - if Chainsaw.Result.Side[2].dResidualDepth < 10 * GEO.EPS_SMALL then - Chainsaw.Result.Bottom[1].bIsApplicable = false - end - end - -- si lavora tutto il lato - else - local OptionalParameters = { dMaxElev = Blade.Result.Side[1].dResidualDepth + BeamData.CUT_EXTRA} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1], OptionalParameters) - Chainsaw.AddResult( Mortising) - -- ancora materiale residuo - si lavora da entrambi i lati - if Chainsaw.Result.Side[1].dResidualDepth > 10 * GEO.EPS_SMALL then - Chainsaw.Result.Side[1].bIsApplicable = false - local OptionalParameters = { bStopAtHalfElevation = true, dMaxElev = Blade.Result.Side[1].dResidualDepth + BeamData.CUT_EXTRA} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1], OptionalParameters) - Chainsaw.AddResult( Mortising) - OptionalParameters = {} - OptionalParameters = { bStopAtHalfElevation = true, dMaxElev = Blade.Result.Side[2].dResidualDepth + BeamData.CUT_EXTRA} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[2], OptionalParameters) - Chainsaw.AddResult( Mortising) - -- lavorando dai due lati non c'è materiale residuo - si può disabilitare la lavorazione del fondo - if Chainsaw.Result.Side[2].dResidualDepth < 10 * GEO.EPS_SMALL then - Chainsaw.Result.Bottom[1].bIsApplicable = false - end - end + -- ancora materiale residuo - si lavora da entrambi i lati + if Chainsaw.Result.Side[1].dResidualDepth > 10 * GEO.EPS_SMALL then + Chainsaw.Result.Side[1].bIsApplicable = false + local OptionalParameters = { bStopAtHalfElevation = true} + Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1], OptionalParameters) + Chainsaw.AddResult( Mortising) + OptionalParameters = {} + OptionalParameters = { bStopAtHalfElevation = true} + Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[2], OptionalParameters) + Chainsaw.AddResult( Mortising) + -- lavorando dai due lati non c'è materiale residuo - si può disabilitare la lavorazione del fondo + if Chainsaw.Result.Side[2].dResidualDepth < 10 * GEO.EPS_SMALL then + Chainsaw.Result.Bottom[1].bIsApplicable = false end end end elseif Proc.Topology.sName == 'Tunnel-4-Through' then - -- si lavora solamente l'impronta lama sul lato opposto - if ( Blade.Result.Opposite[1].dResidualDepth < 10 * GEO.EPS_SMALL and Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1].dLength > 3 * Blade.Result.Opposite[1].dBladeMarkLength - 10 * GEO.EPS_SMALL) and - ( Blade.Result.Opposite[2].dResidualDepth < 10 * GEO.EPS_SMALL and Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[2].dLength > 3 * Blade.Result.Opposite[2].dBladeMarkLength - 10 * GEO.EPS_SMALL) then - - local OptionalParameters = { sSideToMachine = 'Start', dLengthToMachine = Blade.Result.Opposite[1].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) + local OptionalParameters = {} + Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) + Chainsaw.AddResult( Mortising) + if Chainsaw.Result.Opposite[1].dResidualDepth > 10 * GEO.EPS_SMALL then + Chainsaw.Result.Opposite[1].bIsApplicable = false + local OptionalParameters = { bStopAtHalfElevation = true} + SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) Chainsaw.AddResult( Mortising) OptionalParameters = {} - OptionalParameters = { sSideToMachine = 'End', dLengthToMachine = Blade.Result.Opposite[2].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) + OptionalParameters = { bStopAtHalfElevation = true} + SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[2], OptionalParameters) Chainsaw.AddResult( Mortising) - if Chainsaw.Result.Opposite[1].dResidualDepth > GEO.EPS_SMALL or Chainsaw.Result.Opposite[2].dResidualDepth > GEO.EPS_SMALL then - Chainsaw.Result.Opposite[1].bIsApplicable = false - Chainsaw.Result.Opposite[2].bIsApplicable = false - local OptionalParameters = { bStopAtHalfElevation = true, sSideToMachine = 'Start', dLengthToMachine = Blade.Result.Opposite[1].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) - Chainsaw.AddResult( Mortising) - OptionalParameters = {} - OptionalParameters = { bStopAtHalfElevation = true, sSideToMachine = 'End', dLengthToMachine = Blade.Result.Opposite[1].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) - Chainsaw.AddResult( Mortising) - OptionalParameters = {} - OptionalParameters = { bStopAtHalfElevation = true, sSideToMachine = 'Start', dLengthToMachine = Blade.Result.Opposite[2].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[2], OptionalParameters) - Chainsaw.AddResult( Mortising) - OptionalParameters = {} - OptionalParameters = { bStopAtHalfElevation = true, sSideToMachine = 'End', dLengthToMachine = Blade.Result.Opposite[2].dBladeMarkLength, dMaxElev = 0} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[2], OptionalParameters) - Chainsaw.AddResult( Mortising) - end - else - local OptionalParameters = { dMaxElev = Blade.Result.Opposite[1].dResidualDepth + BeamData.CUT_EXTRA} - Mortising = SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) - Chainsaw.AddResult( Mortising) - if Chainsaw.Result.Opposite[1].dResidualDepth > GEO.EPS_SMALL then - Chainsaw.Result.Opposite[1].bIsApplicable = false - local OptionalParameters = { bStopAtHalfElevation = true, dMaxElev = Blade.Result.Opposite[1].dResidualDepth + BeamData.CUT_EXTRA} - SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[1], OptionalParameters) - Chainsaw.AddResult( Mortising) - OptionalParameters = {} - OptionalParameters = { bStopAtHalfElevation = true, dMaxElev = Blade.Result.Opposite[2].dResidualDepth + BeamData.CUT_EXTRA} - SlotByChainSaw.Make( Proc, Part, Proc.MainFaces.LongFaces[1], Proc.MainFaces.LongFaces[1].MainEdges.OppositeEdges[2], OptionalParameters) - Chainsaw.AddResult( Mortising) - end end end -- sega a catena - aggiunta lavorazioni @@ -439,17 +247,12 @@ function STR0004.Make( bAddMachining, Proc, Part, CustomParameters) end Strategy.Result.nCompletionIndex = FeatureData.GetFeatureCompletionIndex( dFinalCompletionPercentage) Strategy.Result.nQuality = FeatureData.GetFeatureQuality( 'Chainsaw') - local MRRParametersBlade = { - dStep = TOOLS[Cutting.nToolIndex].dThickness, - dSideStep = min( TOOLS[Cutting.nToolIndex].dSideStep, Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1].dLength), - dFeed = TOOLS[Cutting.nToolIndex].Feeds.dFeed} local MRRParametersChainsaw = { dStep = min( TOOLS[Mortising.nToolIndex].dStep, Proc.MainFaces.LongFaces[1].MainEdges.SideEdges[1].dLength), dSideStep = TOOLS[Mortising.nToolIndex].dThickness, dFeed = TOOLS[Mortising.nToolIndex].Feeds.dFeed} - local dMRRBlade = MachiningLib.GetToolMRR( MRRParametersBlade) local dMRRChainsaw = MachiningLib.GetToolMRR( MRRParametersChainsaw) - Strategy.Result.dMRR = ( dMRRBlade + dMRRChainsaw) / 2 + Strategy.Result.dMRR = dMRRChainsaw return bAreAllMachiningsAdded, Strategy.Result end diff --git a/Strategies/Strategies.ini b/Strategies/Strategies.ini index c1b179a..673fd9d 100644 --- a/Strategies/Strategies.ini +++ b/Strategies/Strategies.ini @@ -17,53 +17,53 @@ STR0003 = Topologia tipo LapJoint. Lama + motosega ; Feature : Saw Cut 13,0,Feature, ; Feature : Slot -16,0,Pocket-5-Blind,STR0002,STR0003 -16,0,Groove-4-Blind,STR0002,STR0003 -16,0,Groove-3-Through,STR0002,STR0003 +16,0,Pocket-5-Blind,STR0002,STR0003,STR0004 +16,0,Groove-4-Blind,STR0002,STR0003,STR0004 +16,0,Groove-3-Through,STR0002,STR0003,STR0004 16,0,Groove-3-Blind,STR0002 16,0,Rabbet-2-Through,STR0002 -16,0,Tunnel-4-Through,STR0003 +16,0,Tunnel-4-Through,STR0003,STR0004 ; Feature : Front Slot -17,0,Pocket-5-Blind,STR0002,STR0003 -17,0,Groove-4-Blind,STR0002,STR0003 +17,0,Pocket-5-Blind,STR0002,STR0003,STR0004 +17,0,Groove-4-Blind,STR0002,STR0003,STR0004 17,0,Groove-3-Blind,STR0002 -17,0,Groove-3-Through,STR0002,STR0003 +17,0,Groove-3-Through,STR0002,STR0003,STR0004 17,0,Rabbet-2-Through,STR0002 -17,0,Tunnel-4-Through,STR0003 +17,0,Tunnel-4-Through,STR0003,STR0004 ; Feature : Birds Mouth 20,0,Feature, ; Feature : Hip or Valley Rafter Notch 25,0,Feature, ; Feature : Ridge Lap -30,1,Pocket-5-Blind,STR0002,STR0003 -30,1,Groove-4-Blind,STR0002,STR0003 +30,1,Pocket-5-Blind,STR0002,STR0003,STR0004 +30,1,Groove-4-Blind,STR0002,STR0003,STR0004 30,1,Groove-3-Blind,STR0002 -30,1,Groove-3-Through,STR0002,STR0003 +30,1,Groove-3-Through,STR0002,STR0003,STR0004 30,1,Rabbet-2-Through,STR0002 -30,1,Tunnel-4-Through,STR0003 +30,1,Tunnel-4-Through,STR0003,STR0004 ; Feature : Lap Joint -30,0,Pocket-5-Blind,STR0002,STR0003 -30,0,Groove-4-Blind,STR0002,STR0003 +30,0,Pocket-5-Blind,STR0002,STR0003,STR0004 +30,0,Groove-4-Blind,STR0002,STR0003,STR0004 30,0,Groove-3-Blind,STR0002 -30,0,Groove-3-Through,STR0002,STR0003 +30,0,Groove-3-Through,STR0002,STR0003,STR0004 30,0,Rabbet-2-Through,STR0002 -30,0,Tunnel-4-Through,STR0003 +30,0,Tunnel-4-Through,STR0003,STR0004 ; Feature : Notch/Rabbet -32,0,Pocket-5-Blind,STR0002,STR0003 -32,0,Groove-4-Blind,STR0002,STR0003 +32,0,Pocket-5-Blind,STR0002,STR0003,STR0004 +32,0,Groove-4-Blind,STR0002,STR0003,STR0004 32,0,Groove-3-Blind,STR0002 -32,0,Groove-3-Through,STR0002,STR0003 +32,0,Groove-3-Through,STR0002,STR0003,STR0004 32,0,Rabbet-2-Through,STR0002 -32,0,Tunnel-4-Through,STR0003 +32,0,Tunnel-4-Through,STR0003,STR0004 ; Feature : Block Haus 33,0,Feature, ; Feature : Notch -34,0,Pocket-5-Blind,STR0002,STR0003 -34,0,Groove-4-Blind,STR0002,STR0003 +34,0,Pocket-5-Blind,STR0002,STR0003,STR0004 +34,0,Groove-4-Blind,STR0002,STR0003,STR0004 34,0,Groove-3-Blind,STR0002 -34,0,Groove-3-Through,STR0002,STR0003 +34,0,Groove-3-Through,STR0002,STR0003,STR0004 34,0,Rabbet-2-Through,STR0002 -34,0,Tunnel-4-Through,STR0003 +34,0,Tunnel-4-Through,STR0003,STR0004 ; Feature : French Ridge Lap 35,1,Feature, ; Feature : Chamfer @@ -73,12 +73,12 @@ STR0003 = Topologia tipo LapJoint. Lama + motosega ; Feature : Block Haus Front 38,0,Feature, ; Feature : Pocket -39,0,Pocket-5-Blind,STR0002,STR0003 -39,0,Groove-4-Blind,STR0002,STR0003 +39,0,Pocket-5-Blind,STR0002,STR0003,STR0004 +39,0,Groove-4-Blind,STR0002,STR0003,STR0004 39,0,Groove-3-Blind,STR0002 -39,0,Groove-3-Through,STR0002,STR0003 +39,0,Groove-3-Through,STR0002,STR0003,STR0004 39,0,Rabbet-2-Through,STR0002 -39,0,Tunnel-4-Through,STR0003 +39,0,Tunnel-4-Through,STR0003,STR0004 ; Feature : Drilling 40,0,Feature, ; Feature : Tenon