DataWall :
- corretta gestione ordinamento lavorazioni per rispettare il limite di 1023 lavorazioni ordinabili contemporaneamente.
This commit is contained in:
+27
-22
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user