diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 374e5d7..b331789 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -1768,17 +1768,34 @@ function MachiningLib.ShortestPathSorting() i = i + 1 end - local nStopIndex = nStartIndex + nMachInDisp - 1 -- cliclo su tutte le lavorazioni - for k = nStartIndex, nStopIndex do - for j = nStartIndex, nStopIndex do + for k = 1, #MachiningOptList do + if not DB_MACH_APPLIED[MachiningOptList[k]].Dependances then + DB_MACH_APPLIED[MachiningOptList[k]].Dependances = {} + end + for j = 1, #MachiningOptList do -- se non è stessa lavorazione, imposto dati e dipendenze if k ~= j then + local MachiningK = MACHININGS[DB_MACH_APPLIED[MachiningOptList[k]].nIndexInMachinings] + local MachiningJ = MACHININGS[DB_MACH_APPLIED[MachiningOptList[j]].nIndexInMachinings] -- se stessa Proc - if MACHININGS[DB_MACH_APPLIED[k].nIndexInMachinings].Proc.id == MACHININGS[DB_MACH_APPLIED[j].nIndexInMachinings].Proc.id then + if MachiningK.Proc.id == MachiningJ.Proc.id then -- se lavorazioni della stessa feature, obbligatorio rispettare ordine - if MACHININGS[DB_MACH_APPLIED[k].nIndexInMachinings].Machining.nFeatureInternalIndex <= MACHININGS[DB_MACH_APPLIED[j].nIndexInMachinings].Machining.nFeatureInternalIndex then - EgtOptMachAddDependence( k, j) + if MachiningK.Machining.nFeatureInternalIndex < MachiningJ.Machining.nFeatureInternalIndex then + local bOk = EgtOptMachAddDependence( MachiningOptList[k], MachiningOptList[j]) + if not bOk then + error( 'Machining sorting : error in dependencies') + end + table.insert( DB_MACH_APPLIED[MachiningOptList[k]].Dependances, MachiningOptList[j]) + -- se l'indice interno è uguale, sono cloni: si ordinano in base all'ordine in tabella + elseif MachiningK.Machining.nFeatureInternalIndex == MachiningJ.Machining.nFeatureInternalIndex then + if k < j then + local bOk = EgtOptMachAddDependence( MachiningOptList[k], MachiningOptList[j]) + if not bOk then + error( 'Machining sorting : error in dependencies') + end + table.insert( DB_MACH_APPLIED[MachiningOptList[k]].Dependances, MachiningOptList[j]) + end end -- se tra due Proc diverse else