diff --git a/LuaLibs/PanelSaw.lua b/LuaLibs/PanelSaw.lua index 052a79d..c61fbef 100644 --- a/LuaLibs/PanelSaw.lua +++ b/LuaLibs/PanelSaw.lua @@ -3,6 +3,7 @@ -- Intestazioni require( 'EgtBase') +EgtEnableDebug( false) local PanelSaw = {} @@ -35,6 +36,7 @@ local function GetPanelList() PanelList[i].idPatt = EgtGetInfo( idMachGroup, 'PATTID', 'i') PanelList[i].nPdn = EgtGetInfo( idPart, 'PDN', 'i') PanelList[i].sName = EgtGetInfo( idPart, 'NAM', 's') + PanelList[i].sDescription = '' -- in questa modalità ogni MachGroup è 1 pezzo, non esistono multipli -- TODO valutare se raggruppare i pannelli uguali per la cutting list PanelList[i].nQuantity = 1 @@ -53,12 +55,14 @@ local function GetSheetList() { dLength = 2800, dWidth = 2070, - dThickness = 8 + dThickness = 8, + sMaterial = '' }, { dLength = 2800, dWidth = 2070, - dThickness = 18 + dThickness = 18, + sMaterial = '' } } @@ -76,6 +80,37 @@ local function GetProjectInfo() return ProjectInfo end +local function GetFormattedLine( ValuesList, ValuesPlaceholders, FieldFixLength) + local sLine = '' + local Values = ValuesList + local nPos = 1 -- posizione partenza linea + + for j, Value in ipairs( Values) do + local Placeholder = ValuesPlaceholders[j] + local sFormatted = string.format( Placeholder, Value) + + -- se il campo ha lunghezza fissa, si aggiungono spazi + if FieldFixLength and FieldFixLength[j] then + local sFieldLength = FieldFixLength[j] + -- troncamento se troppo lungo + if #sFormatted > sFieldLength then + sFormatted = string.sub( sFormatted, 1, sFieldLength) + end + sFormatted = sFormatted .. string.rep(" ", sFieldLength - #sFormatted) + end + + sLine = sLine .. sFormatted + nPos = nPos + #sFormatted + + -- Aggiungi spazio solo se non è l'ultimo campo + if j < #Values then + sLine = sLine .. " " + nPos = nPos + 1 + end + end + return sLine +end + local function BuildCuttingList_Cutty( PanelList, SheetList, ProjectInfo) @@ -97,20 +132,22 @@ local function BuildCuttingList_Cutty( PanelList, SheetList, ProjectInfo) Header = { 'F1', PanelList[1].dThickness, 0, 0, 0}, HeaderPlaceholders = { '%s', '%.3f', '%.3f', '%.3f', '%.3f'}, ValuesList = {}, - ValuesPlaceholders = { '%.3f', '%.3f', '%d', '%d', '%d', '%d', '%d', '%.3f', '%d', '%d', '%d', '%d'} + ValuesPlaceholders = { '%.3f', '%.3f', '%d', '%d', '%d', '%d', '%s', '%d', '%.3f', '%d', '%d', '%d', '%d'}, + FieldFixLength = { [6] = 29, [7] = 50} } for i = 1, #SheetList do - F1.ValuesList[i] = { SheetList[i].dLength, SheetList[i].dWidth, 99, 200, 1, 1, 0, 1, 0, 0, 0, 0} + F1.ValuesList[i] = { SheetList[i].dLength, SheetList[i].dWidth, 99, 200, 1, 1, SheetList[i].sMaterial, 0, 1, 0, 0, 0, 0} end local F2 = { Header = { 'F2', 0, 0, 0}, HeaderPlaceholders = { '%s', '%d', '%d', '%d'}, ValuesList = {}, - ValuesPlaceholders = { '%.3f', '%.3f', '%d', '%d', '%d', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%.3f', '%d', '%d', '%d', '%.3f', '%.3f'} + ValuesPlaceholders = { '%.3f', '%.3f', '%d', '%d', '%d', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%s', '%d', '%d', '%d', '%d', '%d', '%d', '%.3f', '%d', '%d', '%d', '%.3f', '%.3f'}, + FieldFixLength = { [8] = 20, [13] = 50, [23] = 85} } for i = 1, #PanelList do - F2.ValuesList[i] = { PanelList[i].dLength, PanelList[i].dWidth, PanelList[i].nQuantity, 0, 0, 0, 0, PanelList[i].nPdn, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1500, 0, 0, 0, 0, 0} + F2.ValuesList[i] = { PanelList[i].dLength, PanelList[i].dWidth, PanelList[i].nQuantity, 0, 0, 0, 0, PanelList[i].nPdn, 0, 0, 0, 0, PanelList[i].sDescription, 0, 0, 0, 0, 1, 0, 1500, 0, 0, 0, 0, 0} end local F7 = { @@ -129,19 +166,7 @@ local function BuildCuttingList_Cutty( PanelList, SheetList, ProjectInfo) { 164, 164}, { 150, 150} }, - ValuesPlaceholders = { - { '%s', '%s'}, - { '%s', '%s'}, - { '%s', '%s'}, - { '%s', '%s'}, - { '%s', '%s'}, - { '%s', '%s'}, - { '%s', '%s'}, - { '%s', '%s'}, - { '%s', '%s'}, - { '%s', '%s'}, - { '%s', '%s'} - } + ValuesPlaceholders = { '%s', '%s'} } local F7b = { @@ -187,9 +212,8 @@ local function BuildCuttingList_Cutty( PanelList, SheetList, ProjectInfo) -- F1 - sheets table.insert( Lines, string.format( table.concat( F1.HeaderPlaceholders, ' '), table.unpack( F1.Header))) for i = 1, #F1.ValuesList do - local Values = F1.ValuesList[i] - local Placeholders = F1.ValuesPlaceholders - table.insert( Lines, string.format( table.concat( Placeholders, ' '), table.unpack( Values))) + local sLine = GetFormattedLine( F1.ValuesList[i], F1.ValuesPlaceholders, F1.FieldFixLength) + table.insert( Lines, sLine) end -- linea vuota @@ -198,9 +222,8 @@ local function BuildCuttingList_Cutty( PanelList, SheetList, ProjectInfo) -- F2 - panels table.insert( Lines, string.format( table.concat( F2.HeaderPlaceholders, ' '), table.unpack( F2.Header))) for i = 1, #F2.ValuesList do - local Values = F2.ValuesList[i] - local Placeholders = F2.ValuesPlaceholders - table.insert( Lines, string.format( table.concat( Placeholders, ' '), table.unpack( Values))) + local sLine = GetFormattedLine( F2.ValuesList[i], F2.ValuesPlaceholders, F2.FieldFixLength) + table.insert( Lines, sLine) end -- linea vuota @@ -209,9 +232,8 @@ local function BuildCuttingList_Cutty( PanelList, SheetList, ProjectInfo) -- F7 table.insert( Lines, string.format( table.concat( F7.HeaderPlaceholders, ' '), table.unpack( F7.Header))) for i = 1, #F7.ValuesList do - local Values = F7.ValuesList[i] - local Placeholders = F7.ValuesPlaceholders[i] - table.insert( Lines, string.format( table.concat( Placeholders, ' '), table.unpack( Values))) + local sLine = GetFormattedLine( F7.ValuesList[i], F7.ValuesPlaceholders, F7.FieldFixLength) + table.insert( Lines, sLine) end -- linea vuota @@ -262,7 +284,8 @@ local function BuildCuttingList( PanelList, sOutputType) ActualSheetList[#ActualSheetList+1] = { dLength = SheetList[i].dLength, dWidth = SheetList[i].dWidth, - dThickness = SheetList[i].dThickness + dThickness = SheetList[i].dThickness, + sMaterial = SheetList[i].sMaterial } end end @@ -321,7 +344,8 @@ function PanelSaw.GenerateCuttingList( sOutputType) local LinesToWrite = BuildCuttingList( PanelListSingleMaterial, sOutputType) -- scrittura file - local sFilename = sCurrentNgePath .. 'CutList-' .. sCurrentNgeName .. '-' .. key .. '.' .. sOutputType + local sFilename = sCurrentNgePath .. 'CutList-' .. sCurrentNgeName .. '-' .. key .. '-' .. sOutputType + sFilename = sFilename:gsub( '%.', '_') local hFile, nFileErr = io.open( sFilename, 'w') if not hFile then EgtOutLog( 'Error creating cutting list : IO error ' .. tostring( nFileErr)) diff --git a/UpdateLog.txt b/UpdateLog.txt index 6934276..5119bea 100644 --- a/UpdateLog.txt +++ b/UpdateLog.txt @@ -1,5 +1,8 @@ ==== Wall Update Log ==== +Versione 2.7i2 (18/09/2025) +- Modif : in PanelSaw gestione campi a lunghezza fissa + Versione 2.7i1 (16/09/2025) - Added : per cabinet aggiunta esportazione cutting list e modalità nesting semplice diff --git a/Version.lua b/Version.lua index 344c6fb..549fd94 100644 --- a/Version.lua +++ b/Version.lua @@ -2,5 +2,5 @@ -- Gestione della versione di Wall NAME = 'Wall' -VERSION = '2.7i1' +VERSION = '2.7i2' MIN_EXE = '2.7f2'