Files
databeamnew/LuaLibs/MachiningLib.lua
T
andrea.villa 80dcdb0003 - Facce e adiacenze calcolate solo per feature con topologia
- 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
2024-04-30 16:30:49 +02:00

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