- Prima versione funzionante ottimizzazione shortest-path

- creata nuova tabella globale DB_MACH_APPLIED che rispecchia il DB delle lavorazioni e fasi (il MachGroup) aggiunte da automatismo
- ripristinata funzione di ordinamento StableSort, solo per lo stage
- adeguamento funzioni ordinamento per operare su nuova tabella DB_MACH_APPLIED
This commit is contained in:
andrea.villa
2025-12-09 16:40:14 +01:00
parent 30f59b0175
commit c3ea568d99
4 changed files with 66 additions and 170 deletions
+10 -5
View File
@@ -35,6 +35,7 @@ STRATEGIES = {} -- tabella contenente le strategie disponibili per ogni
STRATEGIES_CONFIG = {} -- tabella contenente i parametri di default delle strategie disponibili
MACHININGS = {} -- tabella contenente le lavorazioni da applicare
MACHININGS.Info = {}
DB_MACH_APPLIED = {} -- tabella contenente informazioni delle lavorazioni create e aggiunte in lista
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 già letti e importati
@@ -1600,6 +1601,11 @@ function BeamExec.ProcessMachinings( PARTS)
-- si mette subito il pezzo nella fase
if nOrd == 1 then
EgtSetCurrPhase( 1)
local nPhase = EgtGetCurrPhase()
-- salvo info nuova fase aggiunta
local MachExtraInfo = { sType = 'DISP',
nPhase = nPhase}
table.insert( DB_MACH_APPLIED, MachExtraInfo)
else
BeamLib.AddPhaseWithRawParts( PARTS[nPart].idRaw, BeamData.ptOriXR, BeamData.dPosXR, 0)
end
@@ -1693,11 +1699,10 @@ function BeamExec.ProcessMachinings( PARTS)
-- si preparano le lavorazioni assegnandole al proprio stage
MACHININGS = MachiningLib.PrepareMachiningsForSorting( PARTS[nPart])
-- ordinamento lavorazioni
-- TODO sostituire con sorting Egt
MACHININGS = BeamLib.StableSort( MACHININGS, MachiningLib.CompareMachinings)
-- TODO la FinalizeSorting andrebbe rimossa e usato un sorting che non viola le dipendenze
-- MACHININGS = BeamLib.StableSort( MACHININGS, MachiningLib.CompareMachinings)
-- MACHININGS = MachiningLib.FinalizeSorting()
-- finiti i calcoli di applicazione delle lavorazioni, si riporta il pezzo nello zero della fase
@@ -1783,12 +1788,12 @@ function BeamExec.ProcessMachinings( PARTS)
MachiningLib.AddOperations( MACHININGS, PARTS[nPart], 'STD')
-- ottimizzazione con algoritmo ShortestPath
-- TODO completare ordinamento. Mancano le dipendenze
MACHININGS = MachiningLib.ShortestPathSorting( MACHININGS)
MachiningLib.ShortestPathSorting()
EgtOutLog( ' *** End AddMachinings ***', 1)
-- azzero lavorazioni per pezzo successivo
MACHININGS = {}
DB_MACH_APPLIED = {}
MACHININGS.Info = {}
-- indice pezzo successivo
nOrd = nOrd + 1