- In MachiningLib aggiunte funzioni per ricerca utensile nella lista passata anziché in tutta la tabella TOOLS

- In BCS aggiunte funzioni per recuperare lavorazioni attive dai file  *machining*Data.lua, per Essetre
- Per capire dove recuperare strategie e utensili si legge ora il nome della macchina. Il parametro STRATEGIES_SCRIPT poteva essere modificabile in quanto in chiaro
- STR0011 e STR0013 prevedono lettura lista utensili. ( Le altre strategie sono da fare!)
This commit is contained in:
andrea.villa
2025-08-27 16:37:41 +02:00
parent a0e595e58d
commit 8e49d0afcc
6 changed files with 225 additions and 23 deletions
+116 -8
View File
@@ -245,7 +245,7 @@ local function GetStrategies_Essetre( Proc)
---------------------------------------------------------------------
-- Feature : Drilling (0-40)
elseif ID.IsDrilling( Proc) then
Strategies = { { sStrategyId = 'STR0011'}}
Strategies = { { sStrategyId = 'STR0011'}, { sStrategyId = 'STR0013'}}
---------------------------------------------------------------------
-- Feature : Tenon (1-50)
elseif ID.IsTenon( Proc) then
@@ -393,7 +393,7 @@ end
----------------------------------------------------------------------------------
-- *** ESSETRE ***
----------------------------------------------------------------------------------
-- funzione che recupera i paraemtri custom della strategia. Per cliente Essetre, vengono salvati dei valori 'Q' sul processing del file NGE per modificare il comportamento delle macro
-- funzione che recupera i parametri custom della strategia. Per cliente Essetre, vengono salvati dei valori 'Q' sul processing del file NGE per modificare il comportamento delle macro
local function GetParameters_Essetre( Proc, sStrategyIdToGet)
local Parameters = {}
@@ -435,6 +435,101 @@ local function GetParameters_Essetre( Proc, sStrategyIdToGet)
return Parameters
end
-------------------------------------------------------------------------------------------------------------
-- funzione che verifica se un item è contenuto in lista
local function Contains( List, Item)
for _, value in ipairs( List) do
if EgtStartsWith( Item, value) then
return true
end
end
return false
end
-------------------------------------------------------------------------------------------------------------
-- funzione che ritorna lista utensili presenti in lista compatibili con i tag passati
local function GetToolsFromMachDataFile( MachiningDataList, TagListToGet)
local ToolList = {}
if MachiningDataList and #MachiningDataList > 0 then
for nIndex = 1, #MachiningDataList do
-- se utensile attivo e compatibile con TAG
if MachiningDataList[nIndex].On and Contains( TagListToGet, MachiningDataList[nIndex].Type) then
-- se è nuova versione, prendo il tool
if MachiningDataList[nIndex].Tool then
table.insert( ToolList, MachiningDataList[nIndex].Tool)
-- altrimenti dalla lavorazione si ricava il tool
else
EgtMdbSetCurrMachining( MachiningDataList[nIndex].Name)
table.insert( ToolList, { sName = EgtMdbGetCurrMachiningParam( MCH_MP.TOOL)})
end
end
end
end
return ToolList
end
-------------------------------------------------------------------------------------------------------------
-- TODO da completare
-- funzione che recupera gli utensili disponibili per un certo tipo di lavorazione
local function GetTools_Essetre( Proc, sMachiningCategory)
local sMachDir = EgtGetCurrMachineDir()
local TagList = {}
local ToolList = {}
-- CATEGORIE PREVISTE :
-- Cutting
-- Drill
-- Milling, MillingFinish, MillingAntiSplint
-- Pocketing
-- ChainSawing
if sMachiningCategory == 'Cutting' then
if EgtExistsFile( sMachDir .. '\\Beam\\CutData.lua') then
local CutData = dofile( sMachDir .. '\\Beam\\CutData.lua')
TagList = { 'HeadSide', 'TailSide', 'LongCut'}
ToolList = GetToolsFromMachDataFile( CutData, TagList)
end
elseif sMachiningCategory == 'Drilling' or ID.IsDrilling( Proc) then
if EgtExistsFile( sMachDir .. '\\Beam\\DrillData.lua') then
local DrillData = dofile( sMachDir .. '\\Beam\\DrillData.lua')
if sMachiningCategory == 'Pocketing' or sMachiningCategory == 'Milling' then
TagList = { 'Pocket'}
else
TagList = { 'Drill', 'Predrill', 'AngleDrill', 'MultiDrill'}
end
ToolList = GetToolsFromMachDataFile( DrillData, TagList)
end
elseif sMachiningCategory == 'Milling' or sMachiningCategory == 'MillingFinish' or sMachiningCategory == 'MillingAntiSplint' then
if EgtExistsFile( sMachDir .. '\\Beam\\MillingData.lua') then
local MillingData = dofile( sMachDir .. '\\Beam\\MillingData.lua')
-- TODO da fare!!
TagList = { 'Prof', 'FreeContour', 'Tenon', 'DtTenon', 'DtMortise', 'BirdsMouth', 'Chamfer', 'Mark', 'Text', 'Long2Cut',
'Long2CutDown', 'LongSmallCut', 'BHSideMill', 'CleanCorner', 'ProfTCone', 'Long2CutSide', 'SmallToolContour',
'AntiSplintMillCut', 'SideMillAsBlade', 'Prof_end'}
ToolList = GetToolsFromMachDataFile( MillingData, TagList)
end
elseif sMachiningCategory == 'Pocketing' then
if EgtExistsFile( sMachDir .. '\\Beam\\PocketingData.lua') then
local PocketingData = dofile( sMachDir .. '\\Beam\\PocketingData.lua')
if ID.IsMortise( Proc) then
TagList = { 'Mortise', 'Mortise'}
else
TagList = { 'Pocket', 'OpenPocket'}
end
ToolList = GetToolsFromMachDataFile( PocketingData, TagList)
end
elseif sMachiningCategory == 'ChainSawing' then
if EgtExistsFile( sMachDir .. '\\Beam\\SawingData.lua') then
local SawingData = dofile( sMachDir .. '\\Beam\\SawingData.lua')
TagList = { 'Sawing', 'Mortising'}
ToolList = GetToolsFromMachDataFile( SawingData, TagList)
end
end
return ToolList
end
----------------------------------------------------------------------------------
-- *** Esecuzione ***
----------------------------------------------------------------------------------
@@ -445,13 +540,11 @@ function BasicCustomerStrategies.GetStrategiesFromBasicCustomerStrategies( Proc)
local StrategiesFromScript = {}
-- CLIENTE : ESSETRE
if BeamData.STRATEGIES_SCRIPT == 'Essetre' then
if EgtStartsWith( EgtGetCurrMachineName(), 'Essetre') then
StrategiesFromScript = GetStrategies_Essetre( Proc)
-- se nessuno script specifico in BeamData, si carica standard di default EGALWARE
elseif not BeamData.STRATEGIES_SCRIPT or BeamData.STRATEGIES_SCRIPT == 'Egalware' then
StrategiesFromScript = GetStrategies_Egalware( Proc)
-- per tutti gli altri clienti, si carica standard di default EGALWARE
else
StrategiesFromScript = nil
StrategiesFromScript = GetStrategies_Egalware( Proc)
end
return StrategiesFromScript
@@ -463,7 +556,7 @@ function BasicCustomerStrategies.GetParametersFromBasicCustomerStrategies( Proc,
local ParametersFromScript = {}
-- CLIENTE : ESSETRE
if BeamData.STRATEGIES_SCRIPT == 'Essetre' then
if EgtStartsWith( EgtGetCurrMachineName(), 'Essetre') then
ParametersFromScript = GetParameters_Essetre( Proc, sStrategyIdToGet)
else
ParametersFromScript = nil
@@ -484,6 +577,21 @@ function BasicCustomerStrategies.UpdateStrategies( AvailableStrategies)
return AvailableStrategies
end
----------------------------------------------------------------------------------
-- lettura utensili disponibili settati in lista machining data
function BasicCustomerStrategies.GetToolsFromMachiningDataFile( Proc, sToolType)
local ToolList = {}
-- CLIENTE : ESSETRE
if EgtStartsWith( EgtGetCurrMachineName(), 'Essetre') then
ToolList = GetTools_Essetre( Proc, sToolType)
-- l'ordine di come le lavorazioni sono state in lista deve essere rispettato
ToolList.bRespectListOrder = true
end
return ToolList
end
-------------------------------------------------------------------------------------------------------------
return BasicCustomerStrategies