From e15a83315815c18ea3a0c877678ea6aa2a0b0016 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 17 Jul 2025 17:24:09 +0200 Subject: [PATCH] DataWall 2.7g2 : - aggiunta gestione origine e offset da questa che non fanno riprocessare l'intero grezzo (ma solo aggiornare) - corretta BatchProcess per nome file anche se da non riprocessare. --- BatchProcess.lua | 47 ++++++++++++++++++++++++------- LuaLibs/WallExec.lua | 67 ++++++++++++++++++++++++++++++-------------- UpdateLog.txt | 4 +++ Version.lua | 4 +-- 4 files changed, 89 insertions(+), 33 deletions(-) diff --git a/BatchProcess.lua b/BatchProcess.lua index d15dc89..7075f22 100644 --- a/BatchProcess.lua +++ b/BatchProcess.lua @@ -1,4 +1,4 @@ --- BatchProcess.lua by Egaltech s.r.l. 2023/04/17 +-- BatchProcess.lua by Egaltech s.r.l. 2025/07/17 -- Gestione calcolo batch disposizione e lavorazioni per Pareti -- 2020/07/24 Nuvola di punti riferita allo Zero Tavola. -- 2020/10/28 Corretto spostamento pezzi per rotazioni (0 o 180) e inversioni( 0, 90, 180, o 270). @@ -93,12 +93,6 @@ end local function UpdateAuxData( sAuxFile) local bModif = false local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL - -- Se definito LOAD90, aggiorno - local sLoad90 = EgtGetStringFromIni( 'AuxData', 'LOAD90', '', sAuxFile) - if sLoad90 ~= '' then - EgtSetInfo( BtlInfoId, 'LOAD90', sLoad90) - bModif = true - end -- Se definito PROJID, aggiorno local sProjId = EgtGetStringFromIni( 'AuxData', 'PROJID', '', sAuxFile) if sProjId ~= '' then @@ -111,6 +105,36 @@ local function UpdateAuxData( sAuxFile) EgtSetInfo( BtlInfoId, 'PRODID', sProdId) bModif = true end + -- Se definito LOAD90, aggiorno + local sLoad90 = EgtGetStringFromIni( 'AuxData', 'LOAD90', '', sAuxFile) + if sLoad90 ~= '' then + EgtSetInfo( BtlInfoId, 'LOAD90', sLoad90) + bModif = true + end + -- Se definito REFPOS, aggiorno + local sRefPos = EgtGetStringFromIni( 'AuxData', 'REFPOS', '', sAuxFile) + if sRefPos ~= '' then + EgtSetInfo( BtlInfoId, 'REFPOS', sRefPos) + bModif = true + end + -- Se definito PANELDELTAX, aggiorno + local sPanelDeltaX = EgtGetStringFromIni( 'AuxData', 'PANELDELTAX', '', sAuxFile) + if sPanelDeltaX ~= '' then + EgtSetInfo( BtlInfoId, 'PANELDELTAX', sPanelDeltaX) + bModif = true + end + -- Se definito PANELDELTAY, aggiorno + local sPanelDeltaY = EgtGetStringFromIni( 'AuxData', 'PANELDELTAY', '', sAuxFile) + if sPanelDeltaY ~= '' then + EgtSetInfo( BtlInfoId, 'PANELDELTAY', sPanelDeltaY) + bModif = true + end + -- Se definito PANELDELTAZ, aggiorno + local sPanelDeltaZ = EgtGetStringFromIni( 'AuxData', 'PANELDELTAZ', '', sAuxFile) + if sPanelDeltaZ ~= '' then + EgtSetInfo( BtlInfoId, 'PANELDELTAZ', sPanelDeltaZ) + bModif = true + end return bModif end @@ -151,7 +175,6 @@ end -- Carico le librerie _G.package.loaded.WallExec = nil local WE = require( 'WallExec') ---local BL = require( 'BeamLib') -- Carico i dati globali local WD = require( 'WallData') @@ -522,12 +545,16 @@ else UpdateAuxData( sBtmFile) -- Anche se non è da riprocessare, imposto nome file CN. - -- Se file TS7 importato da altro PC, 'BEAM.FILE' è cambiato da un PC all'altro. Di conseguenza si deve aggiornare nome file che si andrà a generare. - local _, sName, _ = EgtSplitPath( BEAM.FILE) + -- Se file TS7 importato da altro PC, 'WALL.FILE' è cambiato da un PC all'altro. Di conseguenza si deve aggiornare nome file che si andrà a generare. + local _, sName, _ = EgtSplitPath( WALL.FILE) EgtSetInfo( EgtGetLastMachGroup(), 'NcName', sName .. '.cnc') -- Passo in modalità lavora EgtSetCurrMachGroup( EgtGetLastMachGroup()) + -- Aggiorno posizione del grezzo + if WE.MoveRaw() then + bToRecalc = true + end -- Se necessario eseguo aggiornamento con ricalcolo delle lavorazioni if bToRecalc or WALL.FLAG == 3 or WALL.FLAG == 4 then EgtOutLog( ' +++ Recalculating all dispositions and machinings >>>') diff --git a/LuaLibs/WallExec.lua b/LuaLibs/WallExec.lua index 055d634..b457f29 100644 --- a/LuaLibs/WallExec.lua +++ b/LuaLibs/WallExec.lua @@ -61,26 +61,10 @@ local Variant = require( 'WProcessVariant') ------------------------------------------------------------------------------------------------------------- -- *** Inserimento delle pareti nel pannello *** ------------------------------------------------------------------------------------------------------------- -function WallExec.ProcessWalls( dRawL, dRawW, dRawH, vWall, bMachGroupOk, bNewProcess, nRawOutlineId) - - -- Creazione nuovo gruppo di lavoro - if not bMachGroupOk then - local sMgName = EgtGetMachGroupNewName( 'Mach') - local NewMgId = EgtAddMachGroup( sMgName) - if not NewMgId then - local sOut = 'Errore nella creazione del gruppo di lavoro ' .. sMgName - return false, sOut - end - end - - -- Impostazione della tavola - EgtSetTable( 'Tab') - +local function GetRawOrigAndDeltas() -- Area tavola local b3Tab = EgtGetTableArea() -- Calcolo posizione estremo di riferimento della tavola rispetto a sua origine in BL - local OrigOnTab - local nCorner local sOrigCorner = WD.ORIG_CORNER or 'BR' local BtlInfoId = EgtGetFirstNameInGroup( GDB_ID.ROOT, 'BtlInfo') or GDB_ID.NULL if WD.GetOrigCorner then @@ -95,6 +79,8 @@ function WallExec.ProcessWalls( dRawL, dRawW, dRawH, vWall, bMachGroupOk, bNewPr local DeltaY = EgtIf( dDeltaYFromBtl > 0, dDeltaYFromBtl, WD.DELTA_Y or 0) local DeltaZ = EgtIf( dDeltaZFromBtl > 0, dDeltaZFromBtl, WD.DELTA_Z or 0) + local nCorner + local OrigOnTab if sOrigCorner == 'TL' then nCorner = MCH_CR.TL OrigOnTab = Point3d( 0 + abs( DeltaX), b3Tab:getDimY() - abs( DeltaY), DeltaZ) @@ -120,6 +106,28 @@ function WallExec.ProcessWalls( dRawL, dRawW, dRawH, vWall, bMachGroupOk, bNewPr nCorner = MCH_CR.BL OrigOnTab = Point3d( WD.NEW_REF + abs( DeltaX), abs( DeltaY), DeltaZ) end + + return sOrigCorner, nCorner, OrigOnTab +end + +------------------------------------------------------------------------------------------------------------- +function WallExec.ProcessWalls( dRawL, dRawW, dRawH, vWall, bMachGroupOk, bNewProcess, nRawOutlineId) + + -- Creazione nuovo gruppo di lavoro + if not bMachGroupOk then + local sMgName = EgtGetMachGroupNewName( 'Mach') + local NewMgId = EgtAddMachGroup( sMgName) + if not NewMgId then + local sOut = 'Errore nella creazione del gruppo di lavoro ' .. sMgName + return false, sOut + end + end + + -- Impostazione della tavola + EgtSetTable( 'Tab') + + -- Recupero dati posizionamento grezzo + local sOrigCorner, nCorner, OrigOnTab = GetRawOrigAndDeltas() -- Impostazione dell'attrezzaggio di default EgtImportSetup() -- Impostazione eventuale allargamento area disponibile per grezzo @@ -175,6 +183,23 @@ function WallExec.ProcessWalls( dRawL, dRawW, dRawH, vWall, bMachGroupOk, bNewPr return true end +------------------------------------------------------------------------------------------------------------- +function WallExec.MoveRaw() + -- Recupero dati posizionamento grezzo + local sOrigCorner, nCorner, OrigOnTab = GetRawOrigAndDeltas() + -- Recupero identificativo del grezzo + local nRaw = EgtGetFirstRawPart() or GDB_ID.NULL + -- Posizione iniziale del centro grezzo + local ptOriCen = EgtGetRawPartCenter( nRaw) + -- Sposto il grezzo + EgtMoveToCornerRawPart( nRaw, OrigOnTab, nCorner) + EgtSetInfo( nRaw, 'ORIGCORNER', sOrigCorner) + -- Posizione finale del centro grezzo + local ptNewCen = EgtGetRawPartCenter( nRaw) + -- Restituisco flag di movimento + return not AreSamePointApprox( ptOriCen, ptNewCen) +end + ------------------------------------------------------------------------------------------------------------- -- *** Inserimento delle lavorazioni nelle pareti *** ------------------------------------------------------------------------------------------------------------- @@ -538,7 +563,7 @@ local function SortMach( nPhase, PrevMch, nPartId, nType, StartNames, bExistName end if bByTool then - function ToolCompare(a,b) + local function ToolCompare(a,b) if a.ToolType < b.ToolType then return true elseif a.ToolType == b.ToolType then @@ -581,7 +606,7 @@ local function SortMach( nPhase, PrevMch, nPartId, nType, StartNames, bExistName end end - table.sort(TabCut, ToolCompare) + table.sort( TabCut, ToolCompare) -- table.sort(TabCut, function(a,b) return a.ToolType < b.ToolType and a.ToolDiam > b.ToolDiam and a.Tool < b.Tool end) local SupportTabCut = {} local nPrevTUUID = 0 @@ -669,7 +694,7 @@ end ------------------------------------------------------------------------------------------------------------- -- setto la rimozione sfridi dopo le lavorazioni di outline -function InsertScrapRemoval( nPhase) +local function InsertScrapRemoval( nPhase) local nCurrentOperationId = EgtGetNextOperation( EgtGetPhaseDisposition( nPhase)) local nActiveMachiningId = EgtGetCurrMachining() while nCurrentOperationId do @@ -1089,7 +1114,7 @@ local function SetMirroredOperations() end ------------------------------------------------------------------------------------------------------------- -function GetFeatureInfoAndDependency( vProc) +local function GetFeatureInfoAndDependency( vProc) -- ciclo tutte le feature for i = 1, #vProc do local Proc = vProc[i] diff --git a/UpdateLog.txt b/UpdateLog.txt index e336bd0..ae72b87 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,5 +1,9 @@ ==== Wall Update Log ==== +Versione 2.7g2 (17/07/2025) +- Added : aggiunta gestione origine e offset da questa che non fanno riprocessare l'intero grezzo (ma solo aggiornare) +- Fixed : corretta BatchProcess per nome file anche se da non riprocessare. + Versione 2.7g1 (09/07/2025) - Fixed : in FreeContour corretta scelta del lato da lavorare in caso si abbiano lati inclinati diff --git a/Version.lua b/Version.lua index 6c4dd20..35c23b6 100644 --- a/Version.lua +++ b/Version.lua @@ -1,6 +1,6 @@ --- Version.lua by Egalware s.r.l. 2024/08/20 +-- Version.lua by Egalware s.r.l. 2025/07/17 -- Gestione della versione di Wall NAME = 'Wall' -VERSION = '2.7g1' +VERSION = '2.7g2' MIN_EXE = '2.7f2'