- Prima versione con gestione parametri generali

- Possibilità di aprire più configurazioni delle strategie
- Gestione parametri ereditati
- Nuovo JSON parametri generali
- Adeguamento strategie per gestione parametri generali
This commit is contained in:
andrea.villa
2025-10-03 11:15:17 +02:00
parent 1a14d156cf
commit a508b4bb94
25 changed files with 346 additions and 86 deletions
+35 -14
View File
@@ -29,12 +29,13 @@ EgtMdbSave()
-- *** variabili globali ***
-------------------------------------------------------------------------------------------------------------
TOOLS = {} -- tabella contenente tutti gli utensili
STRATEGIES = nil -- tabella contenente le strategie disponibili per ogni feature
STRATEGIES = {} -- tabella contenente le strategie disponibili per ogni feature
STRATEGIES_CONFIG = {} -- tabella contenente i parametri di default delle strategie disponibili
MACHININGS = {} -- tabella contenente le lavorazioni da applicare
MACHININGS.Info = {}
PROCESSINGS = {} -- tabella contenente tutte le informazioni di ogni feature, processate per ogni rotazione
RESULT = {} -- tabella contenente il risultato, feature per feature, dell'applicazione della strategia scelta e il resoconto dell'analisi fatta
GENERAL_PARAMETERS = {} -- tabella contenente i parametri generali
-------------------------------------------------------------------------------------------------------------
-- *** COSTANTI *** TODO -> DA SPOSTARE IN BEAMDATA???
@@ -206,23 +207,38 @@ function BeamExec.GetToolsFromDB()
end
-------------------------------------------------------------------------------------------------------------
function BeamExec.GetStrategiesFromJSONinBD()
-- si legge il JSON contenente la configurazione da utilizzare (nome del file salvato nel BeamData)
local sMachDir = EgtGetCurrMachineDir()
if BeamData.STRATEGIES_CONFIG_FILE then
local sFile = sMachDir .. '\\Beam\\AISetup\\' .. BeamData.STRATEGIES_CONFIG_FILE
function BeamExec.GetGeneralParameters()
local CompleteList = {}
local sFile = BEAM.BASEDIR .. '\\Strategies\\GeneralParameters.json'
-- se non esiste file JSON, esco subito
if not EgtExistsFile( sFile) then
return
end
CompleteList = BeamLib.ImportFileJSON( sFile)
GENERAL_PARAMETERS = BeamLib.LoadGeneralParametersInList( CompleteList)
end
-------------------------------------------------------------------------------------------------------------
function BeamExec.GetStrategiesFromJSONinBD( sAISetupConfigName)
-- si legge il JSON contenente la configurazione da utilizzare solo se non è già stato importato
if sAISetupConfigName and not STRATEGIES[sAISetupConfigName] then
local sMachDir = EgtGetCurrMachineDir()
local sFile = sMachDir .. '\\Beam\\AISetup\\' .. sAISetupConfigName .. '.json'
-- se non esiste file JSON, annullo la lista contenente le strategie
if not EgtExistsFile( sFile) then
STRATEGIES = nil
STRATEGIES[sAISetupConfigName] = nil
return
end
local FeatureList = {}
FeatureList = BeamLib.ImportFileJSON( sFile)
-- metto la tabella letta nella lista globale STRATEGIES
STRATEGIES = {}
STRATEGIES.FeatureList = FeatureList
STRATEGIES[sAISetupConfigName] = {}
STRATEGIES[sAISetupConfigName].FeatureList = FeatureList.FEATURE
STRATEGIES[sAISetupConfigName].sAISetupConfigName = sAISetupConfigName
end
end
@@ -463,6 +479,11 @@ function BeamExec.ProcessBeams( dRawW, dRawH, dRawL, dOvmHead, dOvmMid, PARTS, b
PARTS[i].SplittingPoints = BeamLib.GetPartSplittingPoints( PARTS[i])
PARTS[i].NotClampableLength = { STD = { dHead = 0, dTail = 0}, SIDE = { dHead = 0, dTail = 0}, DOWN = { dHead = 0, dTail = 0}}
PARTS[i].dHeadOverMaterial = dDeltaS
PARTS[i].sAISetupConfig = EgtGetInfo( PARTS[i].id, 'AISETUP', 's') or nil
PARTS[i].GeneralParameters = {}
-- si carica configurazione lavorazioni
BeamExec.GetStrategiesFromJSONinBD( PARTS[i].sAISetupConfig)
-- TODO leggere qui i parametri generali pezzo?
else
local sOut = 'Error: part L(' .. EgtNumToString( dPartLen, 1) .. ') too big for raw part L(' .. EgtNumToString( dLen - 0.1, 1) .. ')'
return false, sOut
@@ -522,11 +543,11 @@ end
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
local function GetStrategies( Proc)
local function GetStrategies( Proc, sAISetupConfigName)
local AvailableStrategiesForProc = nil
-- se la lista STRATEGIES è stata letta da JSON (quindi non è vuota), ritorno le strategie possibili
if STRATEGIES and #STRATEGIES.FeatureList > 0 then
AvailableStrategiesForProc = BeamLib.GetStrategiesFromList( Proc, STRATEGIES)
if STRATEGIES and sAISetupConfigName and STRATEGIES[sAISetupConfigName] and #STRATEGIES[sAISetupConfigName].FeatureList > 0 then
AvailableStrategiesForProc = BeamLib.GetStrategiesFromList( Proc, STRATEGIES[sAISetupConfigName])
end
-- se non ho trovato strategie disponibili nel JSON, o se JSON non presente, lancio script che setta le strategie in modo statico, come definito con cliente
if not AvailableStrategiesForProc then
@@ -638,7 +659,7 @@ local function CollectFeatures( Part, dRotIndex)
Proc.AvailableStrategies = vForcedStrategy
-- altrimenti cerco tra le strategie disponibili
else
Proc.AvailableStrategies = GetStrategies( Proc)
Proc.AvailableStrategies = GetStrategies( Proc, Part.sAISetupConfig)
end
-- se ci sono strategie disponibili, aggiungo a lista delle feature da lavorare
if Proc.AvailableStrategies and #Proc.AvailableStrategies > 0 then