- 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:
@@ -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
|
||||
|
||||
@@ -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??
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user