- in BeamExec si usa la funzione MachiningLib.FinalizeSorting per ripristinare l'ordine delle lavorazioni interno alla feature, se il sorting l'ha violato

This commit is contained in:
luca.mazzoleni
2025-03-19 19:00:52 +01:00
parent c512def05d
commit eff84f5f4d
2 changed files with 29 additions and 2 deletions
+3 -2
View File
@@ -1456,10 +1456,11 @@ function BeamExec.ProcessMachinings( PARTS)
end
-- ordinamento lavorazioni
MACHININGS = MachiningLib.PrepareMachiningsForSorting( PARTS[nPart])
-- TODO completare ordinamento. Mancano le dipendenze.
-- TODO la FinalizeSorting andrebbe rimossa e usato un sorting che non viola le dipendenze
MACHININGS = MachiningLib.PrepareMachiningsForSorting( PARTS[nPart])
MACHININGS = BeamLib.StableSort( MACHININGS, MachiningLib.CompareMachinings)
-- TODO qui bisogna inserire qualcosa per ripristinare l'ordine interno se rovinato
MACHININGS = MachiningLib.FinalizeSorting()
-- finiti i calcoli di applicazione delle lavorazioni, si riporta il pezzo nello zero della fase
nRawId = PARTS[nPart].idRaw
+26
View File
@@ -896,6 +896,32 @@ function MachiningLib.PrepareMachiningsForSorting( Part)
return MACHININGS
end
-- TODO nShifts è solo per debug, si può togliere??
-- ripristina l'ordine delle lavorazioni interno alla feature, se non rispettato
-------------------------------------------------------------------------------------------------------------
function MachiningLib.FinalizeSorting()
local nShifts = 0
local nCurrentMachiningIndex = #MACHININGS
while nCurrentMachiningIndex > 1 do
local nCurrentMachiningIndex2 = nCurrentMachiningIndex - 1
while nCurrentMachiningIndex2 > 0 do
if MACHININGS[nCurrentMachiningIndex].Proc.id == MACHININGS[nCurrentMachiningIndex2].Proc.id
and MACHININGS[nCurrentMachiningIndex].Machining.nFeatureInternalIndex < MACHININGS[nCurrentMachiningIndex2].Machining.nFeatureInternalIndex then
local Machining = table.remove( MACHININGS, nCurrentMachiningIndex)
table.insert( MACHININGS, nCurrentMachiningIndex2, Machining)
nShifts = nShifts + 1
else
nCurrentMachiningIndex2 = nCurrentMachiningIndex2 - 1
end
end
nCurrentMachiningIndex = nCurrentMachiningIndex - 1
end
return MACHININGS, nShifts
end
-- TODO convertire in tabella in cui si chiamano direttamente i nomi delle funzioni, in modo da poter cambiare l'ordine facilmente
-- TODO libreria Sorting??
-------------------------------------------------------------------------------------------------------------