From edeb99bdb9f2d70afa04ea85bbe80cbb78c30905 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Tue, 16 Sep 2025 10:11:56 +0200 Subject: [PATCH] - In GetStrategyQuality rimossi stati lavorazione dettagliati, si utilizzano quelli aggregati. - Adeguate strategia che utilizzavano i dati dettagliati --- LuaLibs/FeatureLib.lua | 20 +++++++------------- Strategies/Standard/STR0007/STR0007.lua | 13 +++++++++++-- Strategies/Standard/STR0011/STR0011.lua | 24 +++++++++++++++--------- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/LuaLibs/FeatureLib.lua b/LuaLibs/FeatureLib.lua index 10ea6ae..3768975 100644 --- a/LuaLibs/FeatureLib.lua +++ b/LuaLibs/FeatureLib.lua @@ -594,16 +594,19 @@ function FeatureLib.GetStrategyQuality( Parameter) elseif type( Parameter) == "string" then local sMachiningTag = Parameter -- #### STATI DI LAVORAZIONE AGGREGATI #### -- - -- FINE = lavorazione eccellente, non dovrebbero esscerci scheggiature - if sMachiningTag == 'FINE' then + -- BEST = lavorazione eccellente, la migliore qualità che si possa ottenere + if sMachiningTag == 'BEST' then nQuality = 5 + -- FINE = lavorazione ottima, non dovrebbero esscerci scheggiature + elseif sMachiningTag == 'FINE' then + nQuality = 4 -- STD = lavorazione accettabile, potrebbe avere scheggiature minime elseif sMachiningTag == 'STD' then nQuality = 3 - -- SEMI = lavorato accettabile, la lavorazione potrebbe avere scheggiature minime, mancano piccoli dettagli alla lavorazione + -- SEMI = lavorazione accettabile, potrebbe avere scheggiature minime, mancano piccoli dettagli alla lavorazione (es. se vengono lasciati i raggi fresa sugli spigoli) elseif sMachiningTag == 'SEMI' then nQuality = 2.5 - -- ROUGH = + -- ROUGH = Lavorazione scadente, scheggiatura molto probabile, potrebbe non essere precisa elseif sMachiningTag == 'ROUGH' then nQuality = 1 -- #### UTENSILI DI LAVORAZIONE UTILIZZATI #### -- @@ -615,15 +618,6 @@ function FeatureLib.GetStrategyQuality( Parameter) nQuality = 3 elseif sMachiningTag == 'MORTISE' then nQuality = 1 - -- #### STATI DI LAVORAZIONE DETTAGLIATI #### -- - elseif sMachiningTag == 'DrillBothSide' or sMachiningTag == 'DrillBlind' then - nQuality = 5 - elseif sMachiningTag == 'MillPlusBladeAS' then - nQuality = 4.5 - elseif sMachiningTag == 'ChainPlusBladeAS' or sMachiningTag == 'MillPlusMillAS' then - nQuality = 4 - elseif sMachiningTag == 'DrillOneSide' then - nQuality = 3 else nQuality = 0 end diff --git a/Strategies/Standard/STR0007/STR0007.lua b/Strategies/Standard/STR0007/STR0007.lua index de01aa8..ad8d50e 100644 --- a/Strategies/Standard/STR0007/STR0007.lua +++ b/Strategies/Standard/STR0007/STR0007.lua @@ -160,7 +160,15 @@ function GetMortiseMachiningResult( Proc, Result) TotalResult.sStatus = Result.Milling.sStatus TotalResult.nCompletionIndex = FeatureLib.GetFeatureCompletionIndex( 100) TotalResult.dMRR = ( Result.Milling.dMRR + Result.Cutting.dMRR) / 2 - TotalResult.nQuality = FeatureLib.GetStrategyQuality( EgtIf( Strategy.Machining.bCuttingWithMill, 'STD', 'FINE')) + local sQuality + if not Strategy.Machining.bCuttingWithMill and Strategy.Machining.bAntiSplint then + sQuality = 'BEST' + elseif Strategy.Machining.bAntiSplint then + sQuality = 'FINE' + else + sQuality = 'STD' + end + TotalResult.nQuality = FeatureLib.GetStrategyQuality( sQuality) TotalResult.nFeatureRotationIndex = GetFeatureRotationIndex( Proc) TotalResult.sInfo = '' -- lavorazione mortasa completa @@ -168,7 +176,8 @@ function GetMortiseMachiningResult( Proc, Result) TotalResult.sStatus = Result.Milling.sStatus TotalResult.nCompletionIndex = FeatureLib.GetFeatureCompletionIndex( 100) TotalResult.dMRR = Result.Milling.dMRR - TotalResult.nQuality = FeatureLib.GetStrategyQuality( 'MILL') + local sQuality = EgtIf( Strategy.Parameters.bAntiSplint, 'BEST', 'STD') + TotalResult.nQuality = FeatureLib.GetStrategyQuality( sQuality) TotalResult.nFeatureRotationIndex = GetFeatureRotationIndex( Proc) TotalResult.sInfo = '' -- lavorazione incompleta diff --git a/Strategies/Standard/STR0011/STR0011.lua b/Strategies/Standard/STR0011/STR0011.lua index 6baeb6c..df14470 100644 --- a/Strategies/Standard/STR0011/STR0011.lua +++ b/Strategies/Standard/STR0011/STR0011.lua @@ -20,6 +20,7 @@ local Strategy = {} local function GetDrillingStrategy( Proc, Part) local ToolSearchParameters = {} local Machining = {} + local sQuality -- se lavorazione orizzontale if Proc.FeatureInfo.bIsDrillHorizontal then @@ -65,7 +66,12 @@ local function GetDrillingStrategy( Proc, Part) Strategy.Result.sStatus = 'Completed' Strategy.Result.nCompletionIndex = 5 Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo or Machining[2].ToolInfo) - Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( EgtIf( bDouble, 'DrillBothSide', 'DrillOneSide')) + if bDouble or not Proc.FeatureInfo.bIsDrillOpen then + sQuality = 'FINE' + else + sQuality = 'ROUGH' + end + Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( sQuality) Strategy.Result.sInfo = '' else Strategy.Result.sStatus = 'Not-Completed' @@ -74,7 +80,7 @@ local function GetDrillingStrategy( Proc, Part) Strategy.Result.nCompletionIndex = FeatureLib.GetFeatureCompletionIndex( dMachinedPrercentage) Strategy.Result.sInfo = 'Drill not complete, left ' .. tostring( 100 - ceil( dMachinedPrercentage)) .. '%' Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo or Machining[2].ToolInfo) - Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( EgtIf( bDouble, 'DrillBothSide', 'DrillOneSide')) + Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( 'FINE') -- se non completo, anche se fosse foro singolo, comunque non esce dall'altra parte, quindi non scheggia end end -- se lavorazione verticale @@ -102,7 +108,7 @@ local function GetDrillingStrategy( Proc, Part) end -- se possono lavorare entrambi e si deve fare lavorazione doppia e si riesce a completare - if Drilling.ToolInfo.nToolIndex and Drilling2.ToolInfo.nToolIndex and + if Drilling.ToolInfo.nToolIndex and Drilling2.ToolInfo.nToolIndex and ( Strategy.Parameters.sDrillingMode == 'FORCE_TWO' or Strategy.Parameters.sDrillingMode == 'AUTO') and Drilling.ToolInfo.dResidualDepth + Drilling2.ToolInfo.dResidualDepth < Proc.FeatureInfo.dDrillLen then @@ -125,7 +131,7 @@ local function GetDrillingStrategy( Proc, Part) Strategy.Result.nCompletionIndex = 5 Strategy.Result.sInfo = '' Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo) - Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( 'DrillBothSide') + Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( 'FINE') -- se utensile 1 esegue completamente elseif Drilling.ToolInfo.nToolIndex and Drilling.ToolInfo.dResidualDepth < 10 * GEO.EPS_SMALL and @@ -139,7 +145,7 @@ local function GetDrillingStrategy( Proc, Part) Strategy.Result.sStatus = 'Completed' Strategy.Result.nCompletionIndex = 5 Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo) - Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( 'DrillOneSide') + Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( EgtIf( Proc.FeatureInfo.bIsDrillOpen, 'ROUGH', 'FINE')) Strategy.Result.sInfo = '' -- se utensile 2 esegue completamente elseif Drilling2.ToolInfo.nToolIndex and Drilling2.ToolInfo.dResidualDepth < 10 * GEO.EPS_SMALL and @@ -154,7 +160,7 @@ local function GetDrillingStrategy( Proc, Part) Strategy.Result.sStatus = 'Completed' Strategy.Result.nCompletionIndex = 5 Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo) - Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( 'DrillOneSide') + Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( EgtIf( Proc.FeatureInfo.bIsDrillOpen, 'ROUGH', 'FINE')) Strategy.Result.sInfo = '' -- se possono lavorare entrambi elseif Drilling.ToolInfo.nToolIndex and Drilling2.ToolInfo.nToolIndex then @@ -183,7 +189,7 @@ local function GetDrillingStrategy( Proc, Part) end -- voto Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo) - Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( 'DrillBothSide') + Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( 'FINE') -- se utensile 1 non completo elseif Drilling.ToolInfo.nToolIndex and ( Strategy.Parameters.sDrillingMode ~= 'FORCE_TWO' or Proc.FeatureInfo.bIsDrillOpen) then Drilling.sDepth = Proc.FeatureInfo.dDrillLen - Drilling.ToolInfo.dResidualDepth @@ -199,7 +205,7 @@ local function GetDrillingStrategy( Proc, Part) Strategy.Result.nCompletionIndex = FeatureLib.GetFeatureCompletionIndex( dMachinedPrercentage) Strategy.Result.sInfo = 'Drill not complete, left ' .. tostring( 100 - ceil( dMachinedPrercentage)) .. '%' Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo) - Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( 'DrillOneSide') + Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( 'FINE') -- se utensile 2 non completo elseif Drilling2.ToolInfo.nToolIndex and Strategy.Parameters.sDrillingMode ~= 'FORCE_TWO' then Drilling2.sDepth = Proc.FeatureInfo.dDrillLen - Drilling2.ToolInfo.dResidualDepth @@ -216,7 +222,7 @@ local function GetDrillingStrategy( Proc, Part) Strategy.Result.nCompletionIndex = FeatureLib.GetFeatureCompletionIndex( dMachinedPrercentage) Strategy.Result.sInfo = 'Drill not complete, left ' .. tostring( 100 - ceil( dMachinedPrercentage)) .. '%' Strategy.Result.dMRR = MachiningLib.GetToolMRR( Machining[1].ToolInfo) - Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( 'DrillOneSide') + Strategy.Result.nQuality = FeatureLib.GetStrategyQuality( 'FINE') else local sMessage -- se non sono state trovate punte