- Miglioramento lettura parametri strategia custom o forzati. Si fa tutto all'esecuzione della strategia

- Si è evitata la chiamata della DeepCopy su libreria Config delle strategie
- se strategia forzata, si salva solo l'id. I parametri verranno letti dopo
This commit is contained in:
andrea.villa
2025-03-14 12:00:24 +01:00
parent 1a455e66de
commit 5f930e2e21
10 changed files with 59 additions and 73 deletions
+8 -19
View File
@@ -577,25 +577,14 @@ local function GetFeatureForcedStrategy( Proc)
return nil
end
-- si copiano i dati
local UpdatedParamList = BeamLib.TableCopyDeep( StrategyData)
-- salvo che questa strategia è stata forzata, e che quindi ho già letto il file config con i parametri di default
-- quando si calcolerà la lavorazione non servirà leggere/riverificare i parametri di default
UpdatedParamList.bForcedStrategy = true
-- cerco e aggiorno i parametri come sono settati nel processing
for i = 1, #UpdatedParamList.Parameters do
local sParameterToRead = UpdatedParamList.sStrategyId .. '_' .. UpdatedParamList.Parameters[i].sNameNge
local sForcedParameterForProc = EgtGetInfo( Proc.id, sParameterToRead, 's')
-- se ho trovato il valore, lo sovrascrivo al default
if sForcedParameterForProc then
UpdatedParamList.Parameters[i].sValue = sForcedParameterForProc
end
end
-- si prepara tabella strategia. In questa fase si salva solo id strategia e il fatto che è stata forzata. I parametri forzati vengono letti all'esecuzioen della strategia
local StrategyToProc = {}
local ParamList = {}
ParamList.bForcedStrategy = true
ParamList.sStrategyId = sStrategyId
-- ritorno la lista strategia con parametri
local StrategyToProc = {}
table.insert( StrategyToProc, UpdatedParamList)
table.insert( StrategyToProc, ParamList)
return StrategyToProc
end
return nil
@@ -895,7 +884,7 @@ local function CalculateStrategies( vProcSingleRot, Part)
-- controllo che le librerie siano state effettivamente caricate
if CurrentStrategy.Config and CurrentStrategy.Script then
-- eseguo la strategia solo come calcolo fattibilità e voto. Non si applicano le lavorazioni. Si passa la Proc e i parametri personalizzati
_, Proc.AvailableStrategies[nIndexCurrentStrategy].Result = CurrentStrategy.Script.Make( false, Proc, Part, Proc.AvailableStrategies[nIndexCurrentStrategy].Parameters)
_, Proc.AvailableStrategies[nIndexCurrentStrategy].Result = CurrentStrategy.Script.Make( false, Proc, Part, Proc.AvailableStrategies[nIndexCurrentStrategy])
Proc.AvailableStrategies[nIndexCurrentStrategy].Result = FeatureLib.CalculateCompositeRating( Proc.AvailableStrategies[nIndexCurrentStrategy].Result)
-- se scelta strategia in modalità base o standard, esco subito alla prima che trovo completa
@@ -1022,7 +1011,7 @@ local function CalculateMachinings( vProc, Part)
local StrategyScriptName = Proc.ChosenStrategy.sStrategyId .. '\\' .. Proc.ChosenStrategy.sStrategyId
local StrategyScript = require( StrategyScriptName)
-- eseguo la strategia e si applicano le lavorazioni. Si passa la Proc e i parametri personalizzati
_, _ = StrategyScript.Make( true, Proc, Part, Proc.ChosenStrategy.Parameters)
_, _ = StrategyScript.Make( true, Proc, Part, Proc.ChosenStrategy)
else
-- se non esiste una strategia scelta (non dovrebbe mai succedere) cancello da lista generale
PROCESSINGS[Proc.nIndexPartInParts].Rotation[Proc.nIndexRotation][Proc.nIndexInVProc].ChosenStrategy = nil