Nuova gestione qualità lavorazione unificata

This commit is contained in:
andrea.villa
2025-09-15 14:42:29 +02:00
parent 0290547a93
commit e1bce72db5
15 changed files with 93 additions and 84 deletions
+53 -38
View File
@@ -573,49 +573,64 @@ function FeatureLib.GetFeatureCompletionIndex( dCompletionPercentage)
end
-------------------------------------------------------------------------------------------------------------
-- TODO funzione da rivedere. Se è fatto di fresa con antischeggia deve avere qualità massima, o comunque più alta di fresa normale
-- funzione che restituisce qualità della lavorazione in base agli utensili utilizzati
function FeatureLib.GetFeatureQuality( sTypeTools)
local nQuality = 5
local TypeTools = EgtSplitString( sTypeTools)
-- indice in base a utensile
for i=1, #TypeTools do
if TypeTools[i] == 'Blade' or TypeTools[i] == 'Drill' then
nQuality = min( nQuality, 5)
elseif TypeTools[i] == 'Mill' then
nQuality = min( nQuality, 4)
elseif TypeTools[i] == 'Chainsaw' then
nQuality = min( nQuality, 2)
else
nQuality = min( nQuality, 1)
end
end
-- se si utilizzano più utensili si perde in qualità
if #TypeTools > 1 then
nQuality = max( nQuality - 1, 0.5)
end
return nQuality
end
-------------------------------------------------------------------------------------------------------------
function FeatureLib.GetStrategyQuality( Machinings)
function FeatureLib.GetStrategyQuality( Parameter)
local nQuality = 0
local dQualityNumerator = 0
local dQualityDenominator = 0
for i = 1, #Machinings do
local Machining = Machinings[i]
local dWeightedQuality = TOOLS[Machining.nToolIndex].nQuality * Machining.dLengthToMachine
if Machining.bIsApplicable then
dQualityNumerator = dQualityNumerator + dWeightedQuality
dQualityDenominator = dQualityDenominator + Machining.dLengthToMachine
-- se viene passata una tabella, si calcola media pesata di tutte le lavorazioni
if type( Parameter) == "table" then
local Machinings = Parameter
local dQualityNumerator = 0
local dQualityDenominator = 0
for i = 1, #Machinings do
local Machining = Machinings[i]
local dWeightedQuality = FeatureLib.GetStrategyQuality( TOOLS[Machining.nToolIndex].sFamily) * Machining.dLengthToMachine
if Machining.bIsApplicable then
dQualityNumerator = dQualityNumerator + dWeightedQuality
dQualityDenominator = dQualityDenominator + Machining.dLengthToMachine
end
end
nQuality = dQualityNumerator / dQualityDenominator
-- se viene passato un tag, si ritorna direttamente il voto
elseif type( Parameter) == "string" then
local sMachiningTag = Parameter
-- #### STATI DI LAVORAZIONE AGGREGATI #### --
-- FINE = lavorazione eccellente, non dovrebbero esscerci scheggiature
if sMachiningTag == 'FINE' then
nQuality = 5
-- 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
elseif sMachiningTag == 'SEMI' then
nQuality = 2.5
-- ROUGH =
elseif sMachiningTag == 'ROUGH' then
nQuality = 1
-- #### UTENSILI DI LAVORAZIONE UTILIZZATI #### --
elseif sMachiningTag == 'SAWBLADE' then
nQuality = 5
elseif sMachiningTag == 'DRILLBIT' then
nQuality = 4
elseif sMachiningTag == 'MILL' then
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
else
nQuality = 0
end
nQuality = dQualityNumerator / dQualityDenominator
return nQuality
end