From d31efb1f2a73cc89d4bd5e9a0a1e73523ddcd8af Mon Sep 17 00:00:00 2001 From: "luca.mazzoleni" Date: Mon, 24 Mar 2025 16:05:12 +0100 Subject: [PATCH] - in BatchProcess (Ts7), in caso di verifica di un pezzo senza modifiche al btl, si riscrive il txt con lo stato precedente (informazioni salvate in nge) --- BatchProcess.lua | 54 +++++++++++++++++++++++++++++++++++++++----- LuaLibs/BeamExec.lua | 44 +++++++++++++++++++----------------- UpdateLog.txt | 5 +++- Version.lua | 2 +- 4 files changed, 76 insertions(+), 29 deletions(-) diff --git a/BatchProcess.lua b/BatchProcess.lua index 0138404..a0dab6a 100644 --- a/BatchProcess.lua +++ b/BatchProcess.lua @@ -101,6 +101,21 @@ local function WriteTimeToLogFile( dTime) hFile:close() end +-- Funzioni per riportare stato lavorazione o pezzo in nge +local function WriteErrToNge( nProcId, sErr, sMsg, sRot, sCutId, sTaskId) + EgtSetInfo( nProcId, 'STATUS.ERR', sErr) + EgtSetInfo( nProcId, 'STATUS.MSG', sMsg) + EgtSetInfo( nProcId, 'STATUS.ROT', sRot) + EgtSetInfo( nProcId, 'CUTID', sCutId) + EgtSetInfo( nProcId, 'TASKID', sTaskId) +end +local function WriteFallToNge( nProcId, sErr, sMsg, sCutId, sFall) + EgtSetInfo( nProcId, 'STATUS.ERR', sErr) + EgtSetInfo( nProcId, 'STATUS.MSG', sMsg) + EgtSetInfo( nProcId, 'CUTID', sCutId) + EgtSetInfo( nProcId, 'STATUS.FALL', sFall) +end + -- Funzione per gestire visualizzazione dopo errore local function PostErrView( nErr, sMsg) if nErr ~= 0 and ( BEAM.FLAG == 1 or BEAM.FLAG == 2) then @@ -202,7 +217,7 @@ if bBtl and string.find( sTitle, 'Bar_', 1, true) and EgtExistsFile( sNgeFile) t EgtEraseFile( sDiffFile) local _, nDiff = EgtTextFileCompare( BEAM.FILE, sOriFile, ';', sDiffFile) -- se BTL corrente coincide con originale, salto il riprocessamento - if nDiff == 0 and sFlag ~= 'CHECK' and sFlag ~= 'CHECK+GENERATE' then + if nDiff == 0 then bToProcess = false -- se cambiata configurazione macchina da ultima elaborazione, devo riprocessare if EgtCompareFilesLastWriteTime( sOriFile, sMachDir .. '\\Beam\\TS3Data.lua') == -1 or @@ -413,6 +428,9 @@ if bToProcess then BEAM.CUTID = Stats[i].CutId BEAM.TASKID = Stats[i].TaskId WriteErrToLogFile( BEAM.ERR, BEAM.MSG, BEAM.ROT, BEAM.CUTID, BEAM.TASKID) + if Stats[i].ProcId then + WriteErrToNge( Stats[i].ProcId, BEAM.ERR, BEAM.MSG, BEAM.ROT, BEAM.CUTID, BEAM.TASKID) + end elseif Stats[i].Err > 0 then nErrCnt = nErrCnt + 1 sOutput = sOutput .. string.format( '[%d,%d] %s\n', Stats[i].CutId, Stats[i].TaskId, sMsg) @@ -422,6 +440,9 @@ if bToProcess then BEAM.CUTID = Stats[i].CutId BEAM.TASKID = Stats[i].TaskId WriteErrToLogFile( BEAM.ERR, BEAM.MSG, BEAM.ROT, BEAM.CUTID, BEAM.TASKID) + if Stats[i].ProcId then + WriteErrToNge( Stats[i].ProcId, BEAM.ERR, BEAM.MSG, BEAM.ROT, BEAM.CUTID, BEAM.TASKID) + end elseif Stats[i].Err < 0 then -- se segnalazione scarico pezzo standard, incompleto o a caduta if Stats[i].Err == -100 or Stats[i].Err == -101 or Stats[i].Err == -102 then @@ -430,6 +451,9 @@ if bToProcess then BEAM.CUTID = Stats[i].CutId BEAM.FALL = abs( Stats[i].Err + 100) WriteFallToLogFile( BEAM.ERR, BEAM.MSG, BEAM.CUTID, BEAM.FALL) + if Stats[i].ProcId then + WriteFallToNge( Stats[i].ProcId, BEAM.ERR, BEAM.MSG, BEAM.CUTID, BEAM.FALL) + end -- altri avvertimenti else nWarnCnt = nWarnCnt + 1 @@ -440,6 +464,9 @@ if bToProcess then BEAM.CUTID = Stats[i].CutId BEAM.TASKID = Stats[i].TaskId WriteErrToLogFile( BEAM.ERR, BEAM.MSG, BEAM.ROT, BEAM.CUTID, BEAM.TASKID) + if Stats[i].ProcId then + WriteErrToNge( Stats[i].ProcId, BEAM.ERR, BEAM.MSG, BEAM.ROT, BEAM.CUTID, BEAM.TASKID) + end end end end @@ -455,30 +482,45 @@ if bToProcess then PostWarnView( 19, sOutput) end --- Altrimenti carico il progetto salvato e dichiaro nessun errore +-- Altrimenti carico il progetto salvato, rileggo gli errori da nge e riscrivo il log txt con gli stati precedenti else EgtOutLog( ' +++ Loading Project already processed >>>') -- Carico il progetto già fatto EgtOpenFile( sNgeFile) - -- Dichiaro nessun errore + -- Riscrivo il log txt local nPartId = EgtGetFirstPart() while nPartId do local nCutId = EgtGetInfo( nPartId, 'CUTID') if nCutId then + -- stato a livello di singola feature local nProcId = EgtGetFirstInGroup( EgtGetFirstNameInGroup( nPartId, 'Processings') or GDB_ID.NULL) while nProcId do local bIsFea = EgtExistsInfo( nProcId, 'GRP') and EgtExistsInfo( nProcId, 'PRC') local nTaskId = EgtGetInfo( nProcId, 'TASKID') + local sErr = EgtGetInfo( nProcId, 'STATUS.ERR') or 0 + local sMsg = EgtGetInfo( nProcId, 'STATUS.MSG') or '---' + local sRot = EgtGetInfo( nProcId, 'STATUS.ROT') or 0 if bIsFea and nTaskId then - BEAM.ERR = 0 - BEAM.MSG = '---' - BEAM.ROT = 0 + BEAM.ERR = sErr + BEAM.MSG = sMsg + BEAM.ROT = sRot BEAM.CUTID = nCutId BEAM.TASKID = nTaskId WriteErrToLogFile( BEAM.ERR, BEAM.MSG, BEAM.ROT, BEAM.CUTID, BEAM.TASKID) end nProcId = EgtGetNext( nProcId) end + -- stato a livello di pezzo + local sErr = EgtGetInfo( nPartId, 'STATUS.ERR') or 0 + if sErr == -100 or sErr == -101 or sErr == -102 then + local sMsg = EgtGetInfo( nPartId, 'STATUS.MSG') or '---' + local sFall = EgtGetInfo( nPartId, 'STATUS.FALL') or 0 + BEAM.ERR = sErr + BEAM.MSG = sMsg + BEAM.CUTID = nCutId + BEAM.FALL = sFall + WriteFallToLogFile( BEAM.ERR, BEAM.MSG, BEAM.CUTID, BEAM.FALL) + end end nPartId = EgtGetNextPart( nPartId) end diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index d2bb52c..60afcc9 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -1238,7 +1238,7 @@ local function ClassifyFeatures( vProc, b3Raw, Stats) Proc.Flg = 0 Proc.Down = true bAllOk = false - table.insert( Stats, {Err = 1, Msg='Error : impossible to machine by orientation', CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err = 1, Msg='Error : impossible to machine by orientation', CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id}) -- gestione feature di coda da lavorare ribaltata elseif Proc.Tail and bDown then Proc.Down = true @@ -1259,12 +1259,12 @@ local function ClassifyFeatures( vProc, b3Raw, Stats) elseif Proc.Flg == 0 then bAllOk = false Proc.ErrMsg = 'Error : out of the part' - table.insert( Stats, {Err = 1, Msg=Proc.ErrMsg, CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err = 1, Msg=Proc.ErrMsg, CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id}) else Proc.Flg = 0 bAllOk = false if not Proc.ErrMsg then Proc.ErrMsg = 'Error : impossible to machine' end - table.insert( Stats, {Err = 1, Msg=Proc.ErrMsg, CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err = 1, Msg=Proc.ErrMsg, CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id}) end end -- se necessario ribaltamento, assegno intestatura alla fase ribaltata @@ -1863,12 +1863,14 @@ local function VerifyDrillMirrored( Proc, vProc, b3Raw) ( BD.DOWN_HEAD and AreOppositeVectorApprox( vtExtr, Y_AX())) then Proc.Double = 2 Proc.MachDepthDouble = dMachiningDepth + Proc.MirrorId = ProcToDisable.Id Proc.MirrorCutId = ProcToDisable.CutId Proc.MirrorTaskId = ProcToDisable.TaskId DisableOtherDrilling( ProcToDisable, vProc) elseif BD.DOWN_HEAD and AreSameVectorApprox( vtExtr, Z_AX()) then Proc.Double = 3 Proc.MachDepthDouble = dMachiningDepth + Proc.MirrorId = ProcToDisable.Id Proc.MirrorCutId = ProcToDisable.CutId Proc.MirrorTaskId = ProcToDisable.TaskId DisableOtherDrilling( ProcToDisable, vProc) @@ -2176,19 +2178,19 @@ function BeamExec.ProcessFeatures() end if not bOk then nTotErr = nTotErr + 1 - table.insert( Stats, {Err=1, Msg=sMsg, Rot=-2, CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err=1, Msg=sMsg, Rot=-2, CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id, PartId = nPartId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=1, Msg=sMsg, Rot=-2, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=1, Msg=sMsg, Rot=-2, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId, ProcId = Proc.MirrorId, PartId = nPartId}) end elseif sMsg and #sMsg > 0 then - table.insert( Stats, {Err=-1, Msg=sMsg, Rot=-2, CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err=-1, Msg=sMsg, Rot=-2, CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id, PartId = nPartId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=-1, Msg=sMsg, Rot=-2, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=-1, Msg=sMsg, Rot=-2, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId, ProcId = Proc.MirrorId, PartId = nPartId}) end else - table.insert( Stats, {Err=0, Msg='', Rot=-2, CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err=0, Msg='', Rot=-2, CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id, PartId = nPartId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=0, Msg='', Rot=-2, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=0, Msg='', Rot=-2, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId, ProcId = Proc.MirrorId, PartId = nPartId}) end end -- se è taglio di separazione, verifico se ha già aggiunto una nuova fase oppure se è da creare @@ -2272,19 +2274,19 @@ function BeamExec.ProcessFeatures() end if not bOk then nTotErr = nTotErr + 1 - table.insert( Stats, {Err=1, Msg=sMsg, Rot=-1, CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err=1, Msg=sMsg, Rot=-1, CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id, PartId = nPartId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=1, Msg=sMsg, Rot=-1, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=1, Msg=sMsg, Rot=-1, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId, ProcId = Proc.MirrorId, PartId = nPartId}) end elseif sMsg and #sMsg > 0 then - table.insert( Stats, {Err=-1, Msg=sMsg, Rot=-1, CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err=-1, Msg=sMsg, Rot=-1, CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id, PartId = nPartId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=-1, Msg=sMsg, Rot=-1, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=-1, Msg=sMsg, Rot=-1, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId, ProcId = Proc.MirrorId, PartId = nPartId}) end else - table.insert( Stats, {Err=0, Msg='', Rot=-1, CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err=0, Msg='', Rot=-1, CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id, PartId = nPartId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=0, Msg='', Rot=-1, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=0, Msg='', Rot=-1, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId, ProcId = Proc.MirrorId, PartId = nPartId}) end end if bOk then nSideMchOk = nSideMchOk + 1 end @@ -2356,19 +2358,19 @@ function BeamExec.ProcessFeatures() end if not bOk then nTotErr = nTotErr + 1 - table.insert( Stats, {Err=1, Msg=sMsg, Rot=0, CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err=1, Msg=sMsg, Rot=0, CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id, PartId = nPartId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=1, Msg=sMsg, Rot=0, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=1, Msg=sMsg, Rot=0, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId, ProcId = Proc.MirrorId, PartId = nPartId}) end elseif sMsg and #sMsg > 0 then - table.insert( Stats, {Err=-1, Msg=sMsg, Rot=0, CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err=-1, Msg=sMsg, Rot=0, CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id, PartId = nPartId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=-1, Msg=sMsg, Rot=0, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=-1, Msg=sMsg, Rot=0, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId, ProcId = Proc.MirrorId, PartId = nPartId}) end else - table.insert( Stats, {Err=0, Msg='', Rot=0, CutId=Proc.CutId, TaskId=Proc.TaskId}) + table.insert( Stats, {Err=0, Msg='', Rot=0, CutId=Proc.CutId, TaskId=Proc.TaskId, ProcId = Proc.Id, PartId = nPartId}) if Proc.Double == 2 or Proc.Double == 3 then - table.insert( Stats, {Err=0, Msg='', Rot=0, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId}) + table.insert( Stats, {Err=0, Msg='', Rot=0, CutId=Proc.MirrorCutId, TaskId=Proc.MirrorTaskId, ProcId = Proc.MirrorId, PartId = nPartId}) end end -- se era taglio di separazione, aggiungo nuova fase diff --git a/UpdateLog.txt b/UpdateLog.txt index c5a1f1a..f0fb688 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,10 +1,13 @@ ==== Beam Update Log ==== +Versione 2.7c2 (24/03/2025) +- Fixed : in BatchProcess (Ts7) riabilitata modifica barra erroneamente rimossa + Versione 2.7c1 (17/03/2025) - Modif : in HeadCut e Split, per decidere se fare doppio taglio verticale, si controlla anche il massimo possibile e non solo il minimo - Modif : in LapJoint migliorato controllo per decidere se feature di coda - Modif : nei tagli, se taglio rivolto verso il basso e non possibile tagliare di fianco, si fa in fase ribaltata -- Fixed : in BacthProcess (Ts7) corretta restituzione stato feature erroneamente segnalata verde +- Fixed : in BatchProcess (Ts7) corretta restituzione stato feature erroneamente segnalata verde - Fixed : corretta restituzione stato feature lavorata in doppio Versione 2.7b3 (03/03/2025) diff --git a/Version.lua b/Version.lua index 4c26eac..3dd5ef5 100644 --- a/Version.lua +++ b/Version.lua @@ -2,5 +2,5 @@ -- Gestione della versione di Beam NAME = 'Beam' -VERSION = '2.7c1' +VERSION = '2.7c2' MIN_EXE = '2.6e5'