From 1a14d156cfffeb899d89aa9f240011bd4dfc4833 Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Wed, 1 Oct 2025 13:25:18 +0200 Subject: [PATCH] - Aggiunta ricerca utensile anche per UUID - In BCS piccola modifica in caso di TAG "Cutting" - Aggiunto parametro sStrategyName a TAILCUT e HEADCUT --- LuaLibs/BasicCustomerStrategies.lua | 8 ++++-- LuaLibs/MachiningLib.lua | 36 ++++++++++++++++-------- Strategies/Standard/HEADCUT/HEADCUT.json | 1 + Strategies/Standard/TAILCUT/TAILCUT.json | 1 + 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/LuaLibs/BasicCustomerStrategies.lua b/LuaLibs/BasicCustomerStrategies.lua index 2fb3a67..6331f6b 100644 --- a/LuaLibs/BasicCustomerStrategies.lua +++ b/LuaLibs/BasicCustomerStrategies.lua @@ -597,7 +597,11 @@ local function GetTools_Essetre( Proc, sMachiningCategory) if sMachiningCategory == 'Cutting' then if EgtExistsFile( sMachDir .. '\\Beam\\CutData.lua') then local CutData = dofile( sMachDir .. '\\Beam\\CutData.lua') - TagList = { 'HeadSide', 'TailSide', 'LongCut'} + if ID.IsDoubleLongitudinalCut( Proc) or ID.IsLongitudinalCut( Proc) then + TagList = { 'LongCut'} + else + TagList = { 'HeadSide', 'TailSide'} + end ToolList = GetToolsFromMachDataFile( CutData, TagList) end elseif sMachiningCategory == 'Drilling' or ID.IsDrill( Proc) then @@ -721,7 +725,7 @@ end ---------------------------------------------------------------------------------- -- funzione che riprocessa le strategie dopo che sono stati letti tutti i parmetri function BasicCustomerStrategies.UpdateStrategies( AvailableStrategies) - -- se la strategia è settata come da rimuiovere, la si toglie dalla lista + -- se la strategia è settata come da rimuovere, la si toglie dalla lista for nIndexStrategy = #AvailableStrategies, 1, -1 do if AvailableStrategies[nIndexStrategy].bToRemove then table.remove( AvailableStrategies, nIndexStrategy) diff --git a/LuaLibs/MachiningLib.lua b/LuaLibs/MachiningLib.lua index 19afd15..fee9b88 100644 --- a/LuaLibs/MachiningLib.lua +++ b/LuaLibs/MachiningLib.lua @@ -244,12 +244,24 @@ end ------------------------------------------------------------------------------------------------------------- -- funzione per verifica se l'utensile è presente tra gli utensili disponibili per la strategia -local function IsToolInAvailableToolList( AvailableToolList, sToolName) +local function IsToolInAvailableToolList( AvailableToolList, sTool) local bToolFound = false + -- si cerca utensile con UUID se presente for nIndex = 1, #AvailableToolList do - if sToolName == AvailableToolList[nIndex].sName then - bToolFound = true - break + if AvailableToolList[nIndex].sUUID then + if sTool.sUUID == AvailableToolList[nIndex].sUUID then + bToolFound = true + break + end + end + end + -- se non trovato con UUID, allora ci cerca per nome + for nIndex = 1, #AvailableToolList do + if AvailableToolList[nIndex].sName then + if sTool.sName == AvailableToolList[nIndex].sName then + bToolFound = true + break + end end end return bToolFound @@ -270,7 +282,7 @@ function MachiningLib.FindMill( Proc, ToolSearchParameters) if ToolSearchParameters.sName and ToolSearchParameters.sName ~= TOOLS[i].sName then bIsToolCompatible = false -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli - elseif ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) then + elseif ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i]) then bIsToolCompatible = false -- si cercano solo frese standard. Se utensile disegnato manualmente, si setta subito che è incompatibile elseif TOOLS[i].bIsProfiledTool then @@ -417,7 +429,7 @@ function MachiningLib.FindBlade( Proc, ToolSearchParameters) end -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli - if ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) then + if ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i]) then bIsToolCompatible = false end @@ -494,7 +506,7 @@ function MachiningLib.FindDrill( Proc, ToolSearchParameters) elseif ToolSearchParameters.sName and ToolSearchParameters.sName ~= TOOLS[i].sName then bIsToolCompatible = false -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli - elseif ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) then + elseif ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i]) then bIsToolCompatible = false -- controlli standard elseif TOOLS[i].dDiameter > ToolSearchParameters.dMaxToolDiameter then @@ -627,7 +639,7 @@ function MachiningLib.FindChainSaw( Proc, ToolSearchParameters) end -- se c'è una lista di utensili disponibili, si verifica che l'utensile attuale sia tra quelli - if ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i].sName) then + if ToolSearchParameters.AvailableToolList and not IsToolInAvailableToolList( ToolSearchParameters.AvailableToolList, TOOLS[i]) then bIsToolCompatible = false end @@ -687,9 +699,11 @@ function MachiningLib.GetAvailableToolList( Proc, sToolList, sType) -- se arriva da JSON o NGE else if sToolList and #sToolList > 0 then - local List = EgtSplitString( sToolList) - for i = 1, #List do - table.insert( ToolList, { sName = List[i]}) + -- Lista definita come: "UUID_1,Nome_1;UUID_2,Nome_2;UUID_3,Nome_3" + local Tool = EgtSplitString( sToolList, ';') + for i = 1, #Tool do + local ToolData = EgtSplitString( Tool[i]) + table.insert( ToolList, { sUUID = ToolData[1], sName = ToolData[2]} ) end -- se non ci sono utensili forzati, annullo lista per cercare tra tutti quelli disponibili in modo automatico else diff --git a/Strategies/Standard/HEADCUT/HEADCUT.json b/Strategies/Standard/HEADCUT/HEADCUT.json index 6333621..8ac0cd5 100644 --- a/Strategies/Standard/HEADCUT/HEADCUT.json +++ b/Strategies/Standard/HEADCUT/HEADCUT.json @@ -1,5 +1,6 @@ { "sStrategyId": "HEADCUT", + "sStrategyName": "HEADCUT", "ParameterList" : [ { "sName": "dDepthChamfer", diff --git a/Strategies/Standard/TAILCUT/TAILCUT.json b/Strategies/Standard/TAILCUT/TAILCUT.json index ea2560f..fbf8ea4 100644 --- a/Strategies/Standard/TAILCUT/TAILCUT.json +++ b/Strategies/Standard/TAILCUT/TAILCUT.json @@ -1,5 +1,6 @@ { "sStrategyId": "TAILCUT", + "sStrategyName": "TAILCUT", "ParameterList" : [ { "sName": "dDepthChamfer",