Files
databeamnew/LuaLibs/BasicCustomerStrategies.lua
T
andrea.villa 746eb9efe9 - Creazione gruppo temporaneo (da riportare)
- Riconoscimento Topologico SawCut se attraversa la trave (da riportare)
- Dati di pinzaggio feature spostato in STR0012
2025-10-24 17:10:22 +02:00

762 lines
41 KiB
Lua

--BasicCustomerStrategies.lua by Egalware s.r.l. 2024/04/02
-- Libreria strategie di base disponibili per i clienti
-- 2024/04/02 PRIMA VERSIONE CALCOLO LAVORAZIONI CON STRATEGIE
-- Tabella per definizione modulo
local BasicCustomerStrategies = {}
-- Include
require( 'EgtBase')
-- Carico i dati globali
local BeamData = require( 'BeamData')
local BeamLib = require( 'BeamLib')
local ID = require( 'Identity')
-- TODO tabella da compleatare man mano che si inseriscono le varie strategie
-- ESEMPIO SCRITTURA TABELLA CON STRATEGIE DISPONIBILI
---------------------------------------------------------------------
-- Feature : Cut
-- if ID.TipoFeature( Proc) then
-- if Proc.Topology.sName == 'QQQQQQQQQ' then
-- Strategies = {
-- { sStrategyId = 'STR9999',
-- Parameters = {
-- { sName = 'Val_1', sValue = '15', sType = 'd'},
-- { sName = 'Val_2', sValue = 'false', sType = 'b'}
-- }
-- }
-- { sStrategyId = 'STR9998'}
-- }
-- end
-- end
----------------------------------------------------------------------------------
-- *** STRATEGIE ***
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
-- *** EGALWARE ***
----------------------------------------------------------------------------------
local function GetStrategies_Egalware( Proc)
local Strategies = {}
local sFile = BEAM.BASEDIR .. '\\Strategies\\AvailableStrategyList.json'
-- se non esiste file JSON, annullo la lista contenente le strategie
if not EgtExistsFile( sFile) then
return nil
end
local CompleteList = {}
CompleteList.FEATURE = BeamLib.ImportFileJSON( sFile)
Strategies = BeamLib.GetStrategiesFromList( Proc, CompleteList)
-- si salva che la strategia è stata presa dallo standard
if Strategies and #Strategies > 0 then
Strategies.bIsBasicStrategy = true
end
return Strategies
end
----------------------------------------------------------------------------------
-- *** ESSETRE ***
----------------------------------------------------------------------------------
local function GetStrategies_Essetre( Proc)
local Strategies = {}
---------------------------------------------------------------------
-- Feature : Cut (1-10)
if ID.IsHeadCut( Proc) then
Strategies = { { sStrategyId = 'HEADCUT'}}
---------------------------------------------------------------------
-- Feature : Cut (2-10)
elseif ID.IsTailCut( Proc) then
Strategies = { { sStrategyId = 'TAILCUT'}}
---------------------------------------------------------------------
-- Feature : Cut (1-10)
elseif ID.IsCut( Proc) then
if Proc.Topology.sName == 'Cut-1-Through' or Proc.Topology.sName == 'Bevel-1-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}}
elseif Proc.Topology.sName == 'HeadCut' then
Strategies = { { sStrategyId = 'HEADCUT'}}
elseif Proc.Topology.sName == 'TailCut' then
Strategies = { { sStrategyId = 'TAILCUT'}}
end
---------------------------------------------------------------------
-- Feature : Longitudinal Cut (0-10)
elseif ID.IsLongitudinalCut( Proc) then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
---------------------------------------------------------------------
-- Feature : Double Cut (1-11)
elseif ID.IsDoubleCut( Proc) then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}}
---------------------------------------------------------------------
-- Feature : Ridge or Valley Cut (0-12)
elseif ID.IsDoubleLongitudinalCut( Proc) then
Strategies = { { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
---------------------------------------------------------------------
-- Feature : Saw Cut (0-13)
elseif ID.IsSawCut( Proc) then
if Proc.Topology.sName == 'Cut-1-Through' or Proc.Topology.sName == 'Bevel-1-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
end
---------------------------------------------------------------------
-- Feature : Slot (0-16)
elseif ID.IsSlot( Proc) then
if Proc.Topology.sName == 'Pocket-5-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-4-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Tunnel-4-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-2-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Rabbet-2-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
end
---------------------------------------------------------------------
-- Feature : Front Slot (0-17)
elseif ID.IsFrontSlot( Proc) then
if Proc.Topology.sName == 'Pocket-5-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-4-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Tunnel-4-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-2-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Rabbet-2-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
end
---------------------------------------------------------------------
-- Feature : Birds Mouth (0-20)
elseif ID.IsBirdsMouth( Proc) then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
---------------------------------------------------------------------
-- Feature : Hip or Valley Rafter Notch (0-25)
elseif ID.IsHipValleyRafterNotch( Proc) then
if Proc.Topology.sName == 'RafterNotch-5-Through' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Groove-3-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-2-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Rabbet-2-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
end
---------------------------------------------------------------------
-- Feature : Ridge Lap (1-30)
elseif ID.IsRidgeLap( Proc) then
if Proc.Topology.sName == 'RidgeLap-3-Through' then
Strategies = { { sStrategyId = 'STR0012'}}
elseif Proc.Topology.sName == 'Groove-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-2-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Rabbet-2-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Cut-1-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0005'}}
end
---------------------------------------------------------------------
-- Feature : Lap Joint (0-30)
elseif ID.IsLapJoint( Proc) then
if Proc.Topology.sName == 'Pocket-5-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-4-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Tunnel-4-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-2-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Rabbet-2-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
end
---------------------------------------------------------------------
-- Feature : Notch/Rabbet (0-32)
elseif ID.IsNotchRabbet( Proc) then
if Proc.Topology.sName == 'Pocket-5-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-4-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Tunnel-4-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-2-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Rabbet-2-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
end
---------------------------------------------------------------------
-- Feature : Block Haus (0-33)
elseif ID.IsBlockHaus( Proc) then
if Proc.Topology.sName == 'Groove-3-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
end
---------------------------------------------------------------------
-- Feature : Notch (0-32)
elseif ID.IsNotch( Proc) then
if Proc.Topology.sName == 'Pocket-5-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-4-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Tunnel-4-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-2-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Rabbet-2-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
end
---------------------------------------------------------------------
-- Feature : French Ridge Lap (1-35)
elseif ID.IsFrenchRidgeLap( Proc) then
---------------------------------------------------------------------
-- Feature : Chamfer (0-36)
elseif ID.IsChamfer( Proc) then
---------------------------------------------------------------------
-- Feature : Block Haus Half Lap (0-37)
elseif ID.IsHalfBlockHaus( Proc) then
---------------------------------------------------------------------
-- Feature : Block Haus Front (0-38)
elseif ID.IsFrontBlockHaus( Proc) then
---------------------------------------------------------------------
-- Feature : Pocket (0-39)
elseif ID.IsPocket( Proc) then
if Proc.Topology.sName == 'Pocket-5-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-4-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Tunnel-4-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-2-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Rabbet-2-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
end
---------------------------------------------------------------------
-- Feature : Drilling (0-40)
elseif ID.IsDrill( Proc) then
Strategies = { { sStrategyId = 'STR0011'}, { sStrategyId = 'STR0013'}}
---------------------------------------------------------------------
-- Feature : Tenon (1-50)
elseif ID.IsTenon( Proc) then
Strategies = { { sStrategyId = 'STR0006'}}
---------------------------------------------------------------------
-- Feature : Mortise (0-50)
elseif ID.IsMortise( Proc) then
if Proc.Topology.sName == 'Pocket-5-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-4-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Tunnel-4-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-2-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Rabbet-2-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Pocket-Round' or Proc.Topology.sName == 'Pocket-Round-Front' or Proc.Topology.sName == 'Pocket-Round-Through' then
Strategies = { { sStrategyId = 'STR0008'}}
end
---------------------------------------------------------------------
-- Feature : Front Mortise (0-51)
elseif ID.IsFrontMortise( Proc) then
if Proc.Topology.sName == 'Pocket-5-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-4-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Tunnel-4-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0003'}, { sStrategyId = 'STR0004'}}
elseif Proc.Topology.sName == 'Groove-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-3-Blind' then
Strategies = { { sStrategyId = 'STR0002'}}
elseif Proc.Topology.sName == 'Bevel-2-Blind' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Rabbet-2-Through' then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0005'}, { sStrategyId = 'STR0010'}}
elseif Proc.Topology.sName == 'Pocket-Round' or Proc.Topology.sName == 'Pocket-Round-Front' or Proc.Topology.sName == 'Pocket-Round-Through' then
Strategies = { { sStrategyId = 'STR0008'}}
end
---------------------------------------------------------------------
-- Feature : House (1-52)
elseif ID.IsHouse( Proc) then
---------------------------------------------------------------------
-- Feature : House Mortise (0-53)
elseif ID.IsHouseMortise( Proc) then
---------------------------------------------------------------------
-- Feature : Dovetail Tenon (1-55)
elseif ID.IsDovetailTenon( Proc) then
Strategies = { { sStrategyId = 'STR0001'}}
---------------------------------------------------------------------
-- Feature : Dovetail Mortise (0-55)
elseif ID.IsDovetailMortise( Proc) then
Strategies = { { sStrategyId = 'STR0007'}}
---------------------------------------------------------------------
-- Feature : Dovetail Mortise Front (0-56)
elseif ID.IsFrontDovetailMortise( Proc) then
Strategies = { { sStrategyId = 'STR0007'}}
---------------------------------------------------------------------
-- Feature : Marking (0-60)
elseif ID.IsMarking( Proc) then
Strategies = { { sStrategyId = 'STR0014'}}
---------------------------------------------------------------------
-- Feature : Text (0-61)
elseif ID.IsText( Proc) then
Strategies = { { sStrategyId = 'STR0014'}}
---------------------------------------------------------------------
-- Feature : Scarf Simple (1-70)
elseif ID.IsScarfSimple( Proc) then
---------------------------------------------------------------------
-- Feature : Scarf Joint (1-71)
elseif ID.IsScarfJoint( Proc) then
---------------------------------------------------------------------
-- Feature : Step Joint (1-80)
elseif ID.IsStepJoint( Proc) then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0010'}}
---------------------------------------------------------------------
-- Feature : Step Joint Notch (0-80)
elseif ID.IsStepJointNotch( Proc) then
Strategies = { { sStrategyId = 'STR0002'}, { sStrategyId = 'STR0010'}}
---------------------------------------------------------------------
-- Feature : Planing (0-90)
elseif ID.IsPlaning( Proc) then
---------------------------------------------------------------------
-- Feature : Front Profile (0-100)
elseif ID.IsFrontProfile( Proc) then
Strategies = { { sStrategyId = 'STR0015'}}
---------------------------------------------------------------------
-- Feature : Head Concave Profile (0-101)
elseif ID.IsHeadConcaveProfile( Proc) then
Strategies = { { sStrategyId = 'STR0015'}}
---------------------------------------------------------------------
-- Feature : Head Convex Profile (0-102)
elseif ID.IsHeadConvexProfile( Proc) then
Strategies = { { sStrategyId = 'STR0015'}}
---------------------------------------------------------------------
-- Feature : Head Cambered Profile (0-103)
elseif ID.IsHeadCamberedProfile( Proc) then
Strategies = { { sStrategyId = 'STR0015'}}
---------------------------------------------------------------------
-- Feature : Round Arch (0-104)
elseif ID.IsRoundArch( Proc) then
Strategies = { { sStrategyId = 'STR0015'}}
---------------------------------------------------------------------
-- Feature : Head Profile (0-106)
elseif ID.IsHeadProfile( Proc) then
Strategies = { { sStrategyId = 'STR0015'}}
---------------------------------------------------------------------
-- Feature : Sphere (0-107)
elseif ID.IsSphere( Proc) then
---------------------------------------------------------------------
-- Feature : Triangle Cut (0-120)
elseif ID.IsTriangleCut( Proc) then
---------------------------------------------------------------------
-- Feature : TyroleanDovetail (0-136)
elseif ID.IsTyroleanDovetail( Proc) then
---------------------------------------------------------------------
-- Feature : Dovetail (0-138)
elseif ID.IsDovetail( Proc) then
---------------------------------------------------------------------
-- Feature : Free Contour (0-250)
elseif ID.IsFreeContour( Proc) then
---------------------------------------------------------------------
-- Feature : Outline (0-251)
elseif ID.IsOutline( Proc) then
---------------------------------------------------------------------
-- Feature : Aperture (0-252)
elseif ID.IsAperture( Proc) then
---------------------------------------------------------------------
-- Feature : Variant (0-900)
elseif ID.IsVariant( Proc) then
---------------------------------------------------------------------
end
-- si salva che la strategia è stata presa dallo script
if #Strategies > 0 then
Strategies.bIsBasicStrategy = true
end
return Strategies
end
----------------------------------------------------------------------------------
-- *** PARAMETRI ***
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
-- *** ESSETRE ***
----------------------------------------------------------------------------------
-- 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 = {}
--###---###---###---###---###---###---###---###---###---###---###---###---###--
-- Feature : HeadCut
if ID.IsHeadCut( Proc) then
-- Per Essetre non esiste il taglio di testa, quindi si leggono le variabili Q sul processing che coincide con il taglio di testa
if sStrategyIdToGet == 'HEADCUT' then
local dDepthChamfer = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q06', 'd') or 0
table.insert( Parameters, { sName = 'dDepthChamfer', sValue = dDepthChamfer, sType = 'd'})
local dCuttingStrategy = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q05', 'd') or 0
local bForceChainSaw = dCuttingStrategy > 0
table.insert( Parameters, { sName = 'bForceChainSaw', sValue = bForceChainSaw, sType = 'b'})
local bFinishWithMill = dCuttingStrategy == 2
table.insert( Parameters, { sName = 'bFinishWithMill', sValue = bFinishWithMill, sType = 'b'})
end
--###---###---###---###---###---###---###---###---###---###---###---###---###--
-- Feature : Cut (1-10)
elseif ID.IsCut( Proc) then
local dDepthChamfer = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q06', 'd') or 0
table.insert( Parameters, { sName = 'dDepthChamfer', sValue = dDepthChamfer, sType = 'd'})
local bForcePocketing = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q07', 'd') == 1
-- tutte le strategie che non siano svuotatura, devono essere rimosse
if bForcePocketing and sStrategyIdToGet ~= 'STR0002' then
Parameters.bToRemove = true
else
if sStrategyIdToGet == 'STR0002' then
-- non ci sono Q per questa strategia
elseif sStrategyIdToGet == 'STR0005' then
local dCuttingStrategy = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q04', 'd') or 0
local sCuttingStrategy = EgtIf( dCuttingStrategy == 1, 'KEEP_WASTE_ATTACHED', 'AUTO')
table.insert( Parameters, { sName = 'sCuttingStrategy', sValue = sCuttingStrategy, sType = 's'})
end
end
--###---###---###---###---###---###---###---###---###---###---###---###---###--
-- Feature : Drill (1-40)
elseif ID.IsDrill( Proc) then
if sStrategyIdToGet == 'STR0011' then
local dDepthPreHole = ( EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q03', 'd') or 0) == 1
table.insert( Parameters, { sName = 'dDepthPreHole', sValue = dDepthPreHole, sType = 'd'})
elseif sStrategyIdToGet == 'STR0013' then
local bOnlyContouring = ( EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q01', 'd') or 0) == 1
table.insert( Parameters, { sName = 'bOnlyContouring', sValue = bOnlyContouring, sType = 'b'})
end
local bDrillFromOneSide = ( EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q02', 'd') or 0) == 1
local sDrillingMode = EgtIf( bDrillFromOneSide, 'PREFER_ONE', 'AUTO')
table.insert( Parameters, { sName = 'sDrillingMode', sValue = sDrillingMode, sType = 's'})
--###---###---###---###---###---###---###---###---###---###---###---###---###--
-- Feature : Front Profile (0-100)
elseif ID.IsFrontProfile( Proc) then
local dDepthChamfer = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q01', 'd') or 0
local dOverMaterial = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q02', 'd') or 0
local bOnlyChamfer = ( EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q03', 'd') or 0) == 1
table.insert( Parameters, { sName = 'dDepthChamfer' , sValue = dDepthChamfer, sType = 'd'})
table.insert( Parameters, { sName = 'bOnlyChamfer' , sValue = bOnlyChamfer, sType = 'b'})
table.insert( Parameters, { sName = 'dOverMaterial' , sValue = dOverMaterial, sType = 'd'})
--###---###---###---###---###---###---###---###---###---###---###---###---###--
-- Feature : Head Concave Profile (0-101)
elseif ID.IsHeadConcaveProfile( Proc) then
local dDepthChamfer = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q01', 'd') or 0
local dOverMaterial = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q02', 'd') or 0
local bOnlyChamfer = ( EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q04', 'd') or 0) == 1
table.insert( Parameters, { sName = 'dDepthChamfer' , sValue = dDepthChamfer, sType = 'd'})
table.insert( Parameters, { sName = 'bOnlyChamfer' , sValue = bOnlyChamfer, sType = 'b'})
table.insert( Parameters, { sName = 'dOverMaterial' , sValue = dOverMaterial, sType = 'd'})
--###---###---###---###---###---###---###---###---###---###---###---###---###--
-- Feature : Head Convex Profile (0-102)
elseif ID.IsHeadConvexProfile( Proc) then
local dDepthChamfer = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q02', 'd') or 0
local dOverMaterial = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q04', 'd') or 0
local bOnlyChamfer = ( EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q01', 'd') or 0) == 1
table.insert( Parameters, { sName = 'dDepthChamfer' , sValue = dDepthChamfer, sType = 'd'})
table.insert( Parameters, { sName = 'bOnlyChamfer' , sValue = bOnlyChamfer, sType = 'b'})
table.insert( Parameters, { sName = 'dOverMaterial' , sValue = dOverMaterial, sType = 'd'})
--###---###---###---###---###---###---###---###---###---###---###---###---###--
-- Feature : Head Cambered Profile (0-103)
elseif ID.IsHeadCamberedProfile( Proc) then
local sUpperFaceStrategy = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q01', 's') or '' -- Q01 = forza fresa
sUpperFaceStrategy = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q02', 's') or sUpperFaceStrategy or 'AUTO' -- Q02 = forza lama (se entrambi attivi comanda la lama)
table.insert( Parameters, { sName = 'sUpperFaceStrategy' , sValue = sUpperFaceStrategy, sType = 's'})
local dDepthChamfer = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q03', 'd') or 0
local dOverMaterial = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q04', 'd') or 0
local bOnlyChamfer = ( EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q05', 'd') or 0) == 1
table.insert( Parameters, { sName = 'dDepthChamfer' , sValue = dDepthChamfer, sType = 'd'})
table.insert( Parameters, { sName = 'bOnlyChamfer' , sValue = bOnlyChamfer, sType = 'b'})
table.insert( Parameters, { sName = 'dOverMaterial' , sValue = dOverMaterial, sType = 'd'})
--###---###---###---###---###---###---###---###---###---###---###---###---###--
-- Feature : Round Arch (0-104)
elseif ID.IsRoundArch( Proc) then
local dDepthChamfer = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q03', 'd') or 0
local dOverMaterial = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q01', 'd') or 0
local dStripWidth = ( EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q02', 'd') or 0)
table.insert( Parameters, { sName = 'dDepthChamfer' , sValue = dDepthChamfer, sType = 'd'})
table.insert( Parameters, { sName = 'dStripWidth' , sValue = dStripWidth, sType = 'b'})
table.insert( Parameters, { sName = 'dOverMaterial' , sValue = dOverMaterial, sType = 'd'})
--###---###---###---###---###---###---###---###---###---###---###---###---###--
-- Feature : Head Profile (0-106)
elseif ID.IsHeadProfile( Proc) then
local dDepthChamfer = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q01', 'd') or 0
local dOverMaterial = EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q02', 'd') or 0
local bOnlyChamfer = ( EgtGetInfo( Proc.id or GDB_ID.NULL, 'Q03', 'd') or 0) == 1
table.insert( Parameters, { sName = 'dDepthChamfer' , sValue = dDepthChamfer, sType = 'd'})
table.insert( Parameters, { sName = 'bOnlyChamfer' , sValue = bOnlyChamfer, sType = 'b'})
table.insert( Parameters, { sName = 'dOverMaterial' , sValue = dOverMaterial, sType = 'd'})
end
-------------------------------------------------------------------------------
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 and #TagListToGet > 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, { sName = MachiningDataList[nIndex].Tool})
-- altrimenti dalla lavorazione si ricava il tool
elseif MachiningDataList[nIndex].Name then
if EgtMdbSetCurrMachining( MachiningDataList[nIndex].Name) then
table.insert( ToolList, { sName = EgtMdbGetCurrMachiningParam( MCH_MP.TOOL)})
end
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, MillingChamfer
-- Pocketing
-- ChainSawing
if sMachiningCategory == 'Cutting' then
if EgtExistsFile( sMachDir .. '\\Beam\\CutData.lua') then
local CutData = dofile( sMachDir .. '\\Beam\\CutData.lua')
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
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' or sMachiningCategory == 'MillingChamfer' or
sMachiningCategory == 'MillingSmooth' then
if EgtExistsFile( sMachDir .. '\\Beam\\MillingData.lua') then
local MillingData = dofile( sMachDir .. '\\Beam\\MillingData.lua')
-- si cercano TAG esclusivi
if sMachiningCategory == 'MillingSmooth' then
TagList = { 'Mark', 'Text', 'Decor01', 'CleanCorner'}
elseif sMachiningCategory == 'MillingAntiSplint' then
TagList = { 'AntiSplintMillCut'}
elseif ID.IsTenon( Proc) then
TagList = { 'Tenon'}
elseif ID.IsDovetailTenon( Proc) then
-- gestione passaggio di taglio tenone superiore in caso di P14>0. Si prendono le frese per tenone standard dato che serve fresa cilindrica
if sMachiningCategory == 'MillingFinish' then
TagList = { 'Tenon'}
else
TagList = { 'DtTenon'}
end
elseif ID.IsDovetailMortise( Proc) then
TagList = { 'DtMortise'}
elseif ID.IsFrontProfile( Proc) or ID.IsHeadConcaveProfile( Proc) or ID.IsHeadConvexProfile( Proc) or
ID.IsHeadCamberedProfile( Proc) or ID.IsRoundArch( Proc) or ID.IsHeadProfile( Proc) then
if sMachiningCategory == 'MillingFinish' then
TagList = { 'Prof_end'}
end
if not TagList or #TagList == 0 then
TagList = { 'Prof', 'Prof_end'}
end
elseif ID.IsFreeContour( Proc) then
TagList = { 'FreeContour', 'Prof', 'Prof_end'}
elseif ID.IsMarking( Proc) then
TagList = { 'Mark'}
elseif sMachiningCategory == 'MillingChamfer' then
TagList = { 'Chamfer'}
elseif ID.IsText( Proc) then
TagList = { 'Text'}
elseif ID.IsTyroleanDovetail( Proc) or ID.IsDovetail( Proc) then
TagList = { 'ProfTCone', 'Long2Cut'}
elseif ID.IsBirdsMouth( Proc) then
TagList = { 'BirdsMouth'}
elseif sMachiningCategory == 'MillingFinish' then
TagList = { 'CleanCorner', 'SmallToolContour'}
elseif ID.IsSlot( Proc) or ID.IsFrontSlot( Proc) or ID.IsLapJoint( Proc) or ID.IsNotchRabbet( Proc) or ID.IsNotch( Proc) or
ID.IsPocket( Proc) or ID.IsMortise( Proc) or ID.IsFrontMortise( Proc) then
TagList = { 'SideMillAsBlade', 'BHSideMill', 'Long2Cut', 'Long2CutDown', 'LongSmallCut', 'Long2CutSide'}
elseif ID.IsDoubleLongitudinalCut( Proc) or ID.IsDoubleLongitudinalCut( Proc) then
TagList = { 'Long2Cut', 'Long2CutDown', 'LongSmallCut', 'Long2CutSide'}
end
ToolList = GetToolsFromMachDataFile( MillingData, TagList)
end
elseif sMachiningCategory == 'Pocketing' then
if EgtExistsFile( sMachDir .. '\\Beam\\PocketingData.lua') then
local PocketingData = dofile( sMachDir .. '\\Beam\\PocketingData.lua')
-- si cercano TAG esclusivi
if ID.IsMortise( Proc) then
TagList = { '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 ***
----------------------------------------------------------------------------------
-- script delle strategie di base standard definito con cliente (statico e non modificabile)
-- se non esiste JSON configurazione, o se non ha trovato nessuna strategia, prova a cercare in questi script
function BasicCustomerStrategies.GetStrategiesFromBasicCustomerStrategies( Proc)
local StrategiesFromScript = {}
-- CLIENTE : ESSETRE
if EgtStartsWith( EgtGetCurrMachineName(), 'Essetre') then
StrategiesFromScript = GetStrategies_Essetre( Proc)
-- per tutti gli altri clienti, si carica standard di default EGALWARE
else
StrategiesFromScript = GetStrategies_Egalware( Proc)
end
return StrategiesFromScript
end
----------------------------------------------------------------------------------
-- lettura parametri che personalizzano le strategie. I parametri di default sono decisi con cliente
function BasicCustomerStrategies.GetParametersFromBasicCustomerStrategies( Proc, sStrategyIdToGet)
local ParametersFromScript = {}
-- CLIENTE : ESSETRE
if EgtStartsWith( EgtGetCurrMachineName(), 'Essetre') then
ParametersFromScript = GetParameters_Essetre( Proc, sStrategyIdToGet)
else
ParametersFromScript = nil
end
return ParametersFromScript
end
----------------------------------------------------------------------------------
-- funzione che riprocessa le strategie dopo che sono stati letti tutti i parmetri
function BasicCustomerStrategies.UpdateStrategies( AvailableStrategies)
-- 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)
end
end
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
-- per tutti gli altri si considerano tutti gli utensili a disposizione
else
ToolList = nil
end
return ToolList
end
-------------------------------------------------------------------------------------------------------------
return BasicCustomerStrategies