80dcdb0003
- Prima versione GetMainFaces funzionante - Prima bozza struttura codice per scelta strategie - Calcolo delle 4 rotazioni per il recupero dei dati - Prima bozza struttura calcolo voto strategie - Modificate strategie di prova STR0001 e STR0002 con nuovo standard
73 lines
4.1 KiB
Lua
73 lines
4.1 KiB
Lua
-- MachiningLib.lua by Egalware s.r.l. 2024/04/02
|
|
-- Libreria ricerca lavorazioni per Travi
|
|
-- 2024/04/02 PRIMA VERSIONE CALCOLO LAVORAZIONI CON STRATEGIE
|
|
|
|
-- Tabella per definizione modulo
|
|
local MachiningLib = {}
|
|
|
|
-- Include
|
|
require( 'EgtBase')
|
|
|
|
EgtOutLog( ' MachiningLib started', 1)
|
|
|
|
-------------------------------------------------------------------------------------------------------------
|
|
-- funzione che trova la strategia migliore per lavorare la feature passata
|
|
-- ritorna la lista della strategia scelta (Id + parameters) e una lista con il risultato di tutte le altre (score + messages)
|
|
function MachiningLib.CalculateRatingStrategies( Proc, b3Raw)
|
|
-- flag per non applicare realmente le lavorazioni, ma limitarsi ai calcoli di fattibilità, quando viene lanciata la make delle strategie
|
|
local bAddMachining = false
|
|
-- controllo se ci sono strategie disponibili
|
|
if Proc.AvailableStrategies and #Proc.AvailableStrategies > 0 then
|
|
-- ciclo tutte le strategie della feature
|
|
for nIndexStrategy = 1, #Proc.AvailableStrategies do
|
|
-- eseguo file config con i parametri di default
|
|
local StrategyDataName = Proc.AvailableStrategies[nIndexStrategy].StrategyId .. '\\' .. Proc.AvailableStrategies[nIndexStrategy].StrategyId .. 'Config'
|
|
local StrategyDataPath = BEAM.BASEDIR .. '\\Strategies\\' .. StrategyDataName .. '.lua'
|
|
local StrategyScriptName = '\\Strategies\\' .. Proc.AvailableStrategies[nIndexStrategy].StrategyId .. '\\' .. Proc.AvailableStrategies[nIndexStrategy].StrategyId
|
|
local StrategyScriptPath = BEAM.BASEDIR .. '\\Strategies\\' .. StrategyScriptName
|
|
if EgtExistsFile( StrategyDataPath) and EgtExistsFile( StrategyScriptPath) then
|
|
local StrategyData = require( StrategyDataName)
|
|
-- eseguo file script strategia
|
|
local StrategyScript = require( StrategyScriptName)
|
|
|
|
-- sovrascrivo i parametri personalizzati salvati su Proc a quelli di default dalla strategia
|
|
if Proc.AvailableStrategies[nIndexStrategy].Parameters and #Proc.AvailableStrategies[nIndexStrategy].Parameters > 0 then
|
|
for j = 1, #StrategyData.Parameters do
|
|
for k = 1, #Proc.AvailableStrategies[i].Parameters[k] do
|
|
if StrategyData.Parameters[j].Name == Proc.AvailableStrategies[nIndexStrategy].Parameters[k].Name then
|
|
StrategyData.Parameters[j].Value = Proc.AvailableStrategies[nIndexStrategy].Parameters[k].Value
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- salvo sul proc i parametri di defalt letti da strategia e personalizzati da interfaccia
|
|
-- N.B. : I parametri personalizzati non più presenti tra i default della strategia, verranno ignorati
|
|
Proc.AvailableStrategies[nIndexStrategy].Parameters = StrategyData.Parameters
|
|
|
|
-- eseguo la strategia solo come calcolo fattibilità e voto. Non si applicano le lavorazioni. Si passa la Proc e i parametri personalizzati
|
|
Proc = StrategyScript.Make( bAddMachining, Proc, Proc.AvailableStrategies[nIndexStrategy].Parameters)
|
|
|
|
-- se lavorazione della feature è completa e si ricerca prima staregia completa, uscire subito
|
|
if BEAM.GetFirstCompletedStrategy and Proc.AvailableStrategies[nIndexStrategy].Status == 'Completed' then
|
|
return Proc
|
|
-- altrimenti continuo e processo le altre strategie e sceglierò la migliore dopo che saranno state tutte analizzate
|
|
else
|
|
; -- non si fa alcunché
|
|
end
|
|
|
|
-- se non trovo i file della strategia, scrivo che non è più disponibile
|
|
else
|
|
Proc.AvailableStrategies[nIndexStrategy].Rating = 0
|
|
Proc.AvailableStrategies[nIndexStrategy].Info = 'Strategy not found'
|
|
Proc.AvailableStrategies[nIndexStrategy].Status = 'Not-Applicable'
|
|
end
|
|
end
|
|
end
|
|
-- si ritorna la lista relativa alla singola feature con i nuovi parametri aggiunti
|
|
return Proc
|
|
end
|
|
|
|
-------------------------------------------------------------------------------------------------------------
|
|
return MachiningLib
|