From a773e0156afd2f92d9178e8d51eef7ca26de200e Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Tue, 19 May 2026 17:03:21 +0200 Subject: [PATCH] - in BeamLib.AddPhaseWithRawParts e correlati correzioni in caso di scarico ultimo grezzo --- LuaLibs/BeamExec.lua | 4 ++-- LuaLibs/BeamLib.lua | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 55a4ce2..0b7effa 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -2076,7 +2076,7 @@ function BeamExec.ProcessMachinings( PARTS, bIsFlipRot) -- ===== finiti i pezzi, si scarica il restante ===== local idRestPart = EgtGetNextRawPart( PARTS[#PARTS].idRaw) if idRestPart and EgtGetRawPartBBox( idRestPart):getDimX() >= BeamData.dMinRaw then - BeamLib.AddPhaseWithRawParts( PARTS, #PARTS, BeamData.ptOriXR, BeamData.dPosXR, 0) + BeamLib.AddPhaseWithRawParts( PARTS, #PARTS + 1, BeamData.ptOriXR, BeamData.dPosXR, 0) local nPhase = EgtGetCurrPhase() local idDisp = EgtGetPhaseDisposition( nPhase) EgtSetInfo( idDisp, 'TYPE', 'REST') @@ -2440,7 +2440,7 @@ function BeamExec.ProcessAlternatives( PARTS) -- ===== finiti i pezzi, si scarica il restante ===== local idRestPart = EgtGetNextRawPart( PARTS[#PARTS].idRaw) if idRestPart and EgtGetRawPartBBox( idRestPart):getDimX() >= BeamData.dMinRaw then - BeamLib.AddPhaseWithRawParts( PARTS, #PARTS, BeamData.ptOriXR, BeamData.dPosXR, 0) + BeamLib.AddPhaseWithRawParts( PARTS, #PARTS + 1, BeamData.ptOriXR, BeamData.dPosXR, 0) local nPhase = EgtGetCurrPhase() local idDisp = EgtGetPhaseDisposition( nPhase) EgtSetInfo( idDisp, 'TYPE', 'REST') diff --git a/LuaLibs/BeamLib.lua b/LuaLibs/BeamLib.lua index b30624d..ce9841b 100644 --- a/LuaLibs/BeamLib.lua +++ b/LuaLibs/BeamLib.lua @@ -163,12 +163,19 @@ end ------------------------------------------------------------------------------------------------------------- function BeamLib.AddPhaseWithRawParts( PARTS, nPartIndex, OriXR, PosXR, dDeltaSucc) local nPhase = EgtAddPhase() - local Part = PARTS[nPartIndex] + local Part + local idRaw + -- se l'indice è oltre significa che è l'ultimo grezzo senza pezzi + if nPartIndex > #PARTS then + idRaw = EgtGetNextRawPart( PARTS[#PARTS].idRaw) + else + Part = PARTS[nPartIndex] + idRaw = Part.idRaw + end -- si aprono i limiti tavola per permettere rotazioni di pezzi più larghi della tavola EgtSetTableAreaOffset( 2000, 2000, 2000, 2000) local dRawMove = 0 local bIsFirstRaw = true - local idRaw = Part.idRaw local dPosXFirst = 0 while idRaw do local dPosX