diff --git a/LuaLibs/WallExec.lua b/LuaLibs/WallExec.lua index a6df6f7..5b864fa 100644 --- a/LuaLibs/WallExec.lua +++ b/LuaLibs/WallExec.lua @@ -1,4 +1,4 @@ --- WallExec.lua by Egaltech s.r.l. 2021/10/27 +-- WallExec.lua by Egaltech s.r.l. 2021/11/07 -- Libreria esecuzione lavorazioni per Pareti -- Tabella per definizione modulo @@ -346,29 +346,34 @@ local function SortMach( nPhase, PrevMch, nPartId, nType, sStartName, bExistName nOperId = EgtGetNextOperation( nOperId) end - -- ordino le lavorazioni + -- ordino le lavorazioni (in gruppi di max 1000 entità) --EgtOutLog('Dati per ShortestPath :') - EgtSpInit() - for i = 1, #TabCut do - local ptS = TabCut[i].Start - local ptE = TabCut[i].End - EgtSpAddPoint( ptS:getX(), ptS:getY(), ptS:getZ(), 0, 0, - ptE:getX(), ptE:getY(), ptE:getZ(), 0, 0) - end - EgtSpSetAngularParams( 1000, 40, 2000, 60) - EgtSpSetOpenBound( true, SHP_OB.NEAR_PNT, 50000, 0, 0, 0, 0) - if WD.BEAM_MACHINE and nType == MCH_OY.SAWING then - EgtSpSetOpenBound( false, SHP_OB.NEAR_PNT, -50000, 0, 0, 0, 0) - end - local vOrd = EgtSpCalculate( SHP_TY.OPEN) - EgtSpTerminate() - - -- applico ordinamento calcolato - if vOrd then - for i = 1, #vOrd do - EgtRelocateGlob( TabCut[vOrd[i]].Mch, PrevMch, GDB_IN.AFTER) - PrevMch = TabCut[vOrd[i]].Mch + local nBase = 0 + while nBase < #TabCut do + -- calcolo ordinamento + EgtSpInit() + for i = 1, min( #TabCut - nBase, 1000) do + local ptS = TabCut[nBase+i].Start + local ptE = TabCut[nBase+i].End + EgtSpAddPoint( ptS:getX(), ptS:getY(), ptS:getZ(), 0, 0, + ptE:getX(), ptE:getY(), ptE:getZ(), 0, 0) end + EgtSpSetAngularParams( 1000, 40, 2000, 60) + EgtSpSetOpenBound( true, SHP_OB.NEAR_PNT, 50000, 0, 0, 0, 0) + if WD.BEAM_MACHINE and nType == MCH_OY.SAWING then + EgtSpSetOpenBound( false, SHP_OB.NEAR_PNT, -50000, 0, 0, 0, 0) + end + local vOrd = EgtSpCalculate( SHP_TY.OPEN) + EgtSpTerminate() + -- applico ordinamento calcolato + if vOrd then + for i = 1, #vOrd do + EgtRelocateGlob( TabCut[nBase+vOrd[i]].Mch, PrevMch, GDB_IN.AFTER) + PrevMch = TabCut[nBase+vOrd[i]].Mch + end + end + -- incremento la base + nBase = nBase + 1000 end return PrevMch