- in Process require di BeamExec spostato dopo la dichiarazione delle variabili globali

- in BeamExec -> CollectFeatures si salva l'indice della Proc nel vProc
- in FeatureLib aggiunta funzione GetFeatureMaxNotClampableLengths
- correzioni e migliorie GetFeatureMaxNotClampableLengths
This commit is contained in:
luca.mazzoleni
2025-01-14 15:17:18 +01:00
parent cc8410b0c5
commit d76ecbc9f6
6 changed files with 70 additions and 49 deletions
+8 -3
View File
@@ -588,6 +588,7 @@ end
-------------------------------------------------------------------------------------------------------------
local function CollectFeatures( Part)
-- recupero le feature
local nProcCount = 0
local vProc = {}
local LayerId = {}
LayerId[1] = BeamLib.GetAddGroup( Part.id)
@@ -645,6 +646,8 @@ local function CollectFeatures( Part)
end
-- se ci sono strategie disponibili, aggiungo a lista delle feature da lavorare
if Proc.AvailableStrategies and #Proc.AvailableStrategies > 0 then
nProcCount = nProcCount + 1
Proc.nIndexInVProc = nProcCount
table.insert( vProc, Proc)
-- altrimenti errore (non ci sono strategie per lavorare la topologia riconosciuta)
else
@@ -658,6 +661,8 @@ local function CollectFeatures( Part)
end
else
Proc.nFlg = 0
nProcCount = nProcCount + 1
Proc.nIndexInVProc = nProcCount
table.insert( vProc, Proc)
EgtOutLog( ' Feature ' .. tostring( Proc.idFeature) .. ' is empty (no geometry)')
end
@@ -1022,9 +1027,6 @@ function BeamExec.GetProcessings( PROCESSINGS, PARTS)
-- recupero informazioni ausiliarie feature e dipendenze tra feature stesse
-- TODO le dipendenze cambiano in base alla rotazione del pezzo? probabilmente no
vProcRot[dRotIndex] = GetFeatureInfoAndDependency( vProcRot[dRotIndex], PARTS[nPart])
-- calcola le strategie applicabili ( presenti nella tabella vProcRot[dRotIndex].AvailableStrategies)
vProcRot[dRotIndex] = CalculateStrategies( vProcRot[dRotIndex], PARTS[nPart])
else
-- inserisco una tabella vuota
table.insert( vProcRot, {})
@@ -1307,6 +1309,9 @@ function BeamExec.ProcessMachinings( PROCESSINGS, PARTS)
for nPart = 1, #PARTS do
-- calcolo della migliore strategia per ogni rotazione del pezzo
for dRotIndex = 1, 4 do
-- calcola le strategie applicabili
PROCESSINGS[nPart].Rotation[dRotIndex] = CalculateStrategies( PROCESSINGS[nPart].Rotation[dRotIndex], PARTS[nPart])
-- tra le calcolate, sceglie la migliore
PROCESSINGS[nPart].Rotation[dRotIndex] = GetBestStrategy( PROCESSINGS[nPart].Rotation[dRotIndex])
end