- 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:
+8
-19
@@ -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
|
||||
|
||||
+37
-32
@@ -380,48 +380,53 @@ function BeamLib.GetMaxNzDefault( b3Raw, vtNFace, vtToolDirection)
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- sovrascrivo i parametri personalizzati salvati su Proc a quelli di default dalla strategia
|
||||
-- N.B. : I parametri personalizzati non più presenti tra i default della strategia, verranno ignorati. Quelli extra avranno valore di default
|
||||
-- Il controllo deve essere fatto SEMPRE all'inizio di ogni strategia, per controllare conformità parametri custom
|
||||
function BeamLib.GetUpdateCustomParameters( CustomStrategyParamList, DefaultStrategyParamList)
|
||||
local UpdatedParamList = BeamLib.TableCopyDeep( DefaultStrategyParamList)
|
||||
-- se esistono i parametri di default (normalmente ce n'è sempre almeno uno)
|
||||
if UpdatedParamList then
|
||||
for i = 1, #UpdatedParamList do
|
||||
table.insert( UpdatedParamList, UpdatedParamList[i])
|
||||
if CustomStrategyParamList then
|
||||
for j = 1, #CustomStrategyParamList do
|
||||
if UpdatedParamList[i].sName == CustomStrategyParamList[j].sName then
|
||||
UpdatedParamList[i].sValue = CustomStrategyParamList[j].sValue
|
||||
-- si traduce la tabella dei parametri con tutte le informazioni in una lista contenente i parametri utilizzabili con accesso diretto
|
||||
function BeamLib.LoadCustomParametersInStrategy( Proc, CustomParameters, DefaultStrategyParamList)
|
||||
local UpdatedParameters = {}
|
||||
-- TODO serve controllare se campo 'sStrategyId' congruente tra il Config (DefaultStrategyParamList) e i parametri custom (CustomParameters)?
|
||||
if DefaultStrategyParamList.Parameters and #DefaultStrategyParamList.Parameters > 0 then
|
||||
for i=1, #DefaultStrategyParamList.Parameters do
|
||||
local xParameterValue = nil
|
||||
-- se strategia forzata, leggo eventuali parametri nelle info
|
||||
if CustomParameters and CustomParameters.bForcedStrategy then
|
||||
local sParameterToRead = DefaultStrategyParamList.sStrategyId .. '_' .. DefaultStrategyParamList.Parameters[i].sNameNge
|
||||
local sForcedParameterForProc = EgtGetInfo( Proc.id, sParameterToRead, 's')
|
||||
-- se ho trovato il valore, lo sovrascrivo al default
|
||||
if sForcedParameterForProc then
|
||||
xParameterValue = sForcedParameterForProc
|
||||
end
|
||||
-- altrimenti i parametri custom si trovano già su questa lista
|
||||
elseif CustomParameters and CustomParameters.Parameters then
|
||||
for j=1, #CustomParameters.Parameters do
|
||||
if CustomParameters.Parameters[j].sName == DefaultStrategyParamList.Parameters[i].sName or
|
||||
CustomParameters.Parameters[j].sName == DefaultStrategyParamList.Parameters[i].sNameNge then
|
||||
xParameterValue = CustomParameters.Parameters[j].sValue
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return UpdatedParamList
|
||||
end
|
||||
-- se non arriva forzato da strategia, oppure se non è stato configurato da cliente, si prende default
|
||||
if not xParameterValue then
|
||||
xParameterValue = DefaultStrategyParamList.Parameters[i].sValue
|
||||
end
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
-- si traduce la tabella dei parametri con tutte le informazioni in una lista contenente i parametri utilizzabili con accesso diretto
|
||||
function BeamLib.LoadCustomParametersInStrategy( CustomParameters)
|
||||
local Parameters = {}
|
||||
if CustomParameters and #CustomParameters > 0 then
|
||||
for i=1, #CustomParameters do
|
||||
if CustomParameters[i].sType == 'b' then
|
||||
Parameters[CustomParameters[i].sName] = CustomParameters[i].sValue == 'true'
|
||||
elseif CustomParameters[i].sType == 'd' then
|
||||
if #CustomParameters[i].sValue > 0 then
|
||||
Parameters[CustomParameters[i].sName] = tonumber( CustomParameters[i].sValue)
|
||||
if DefaultStrategyParamList.Parameters[i].sType == 'b' then
|
||||
UpdatedParameters[DefaultStrategyParamList.Parameters[i].sName] = xParameterValue == 'true'
|
||||
elseif DefaultStrategyParamList.Parameters[i].sType == 'd' then
|
||||
if #DefaultStrategyParamList.Parameters[i].sValue > 0 then
|
||||
UpdatedParameters[DefaultStrategyParamList.Parameters[i].sName] = tonumber( xParameterValue)
|
||||
-- stringa vuota equivale a non passare alcun valore (deciderà la strategia)
|
||||
else
|
||||
Parameters[CustomParameters[i].sName] = nil
|
||||
UpdatedParameters[DefaultStrategyParamList.Parameters[i].sName] = nil
|
||||
end
|
||||
else --CustomParameters[i].sType == 's' or CustomParameters[i].sType == 'combo'
|
||||
Parameters[CustomParameters[i].sName] = CustomParameters[i].sValue
|
||||
else --DefaultStrategyParamList[i].sType == 's' or DefaultStrategyParamList[i].sType == 'combo'
|
||||
UpdatedParameters[DefaultStrategyParamList.Parameters[i].sName] = xParameterValue
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
return Parameters
|
||||
|
||||
return UpdatedParameters
|
||||
end
|
||||
|
||||
---------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user