DataWall :

- corretta gestione ordinamento lavorazioni per rispettare il limite di 1023 lavorazioni ordinabili contemporaneamente.
This commit is contained in:
DarioS
2021-11-08 05:42:32 +01:00
parent fea5d18c06
commit 404f92efdc
+27 -22
View File
@@ -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