- 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
This commit is contained in:
@@ -10,5 +10,63 @@ 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
|
||||
|
||||
Reference in New Issue
Block a user