Files
databeamnew/Strategies/Standard/STR0005/STR0005.lua
T
luca.mazzoleni cc8410b0c5 - in BeamExec -> CollectFeatures inserito calcolo riduzione lunghezza pinzabile
- in FeatureLib aggiunte funzioni GetFeatureVolume e CalculateFeatureNotClampableLengths
- in STR0005 aggiunta scelta strategie di taglio; al momento non contemplato massimo materiale lama
- aggiunta BLADETOWASTE, solo intestazione
2025-01-10 18:13:39 +01:00

75 lines
3.0 KiB
Lua

-- Strategia: STR0005
-- Descrizione
-- lama per taglio facce con cubetti se necessario
-- Feature: tagli singoli con eventuali cubetti
-- carico librerie
local BeamLib = require( 'BeamLib')
local BeamData = require( 'BeamData')
local MachiningLib = require( 'MachiningLib')
local FeatureLib = require( 'FeatureLib')
-- strategie di base
local BladeToWaste = require( 'BLADETOWASTE')
-- Tabella per definizione modulo
local STR0005 = {}
local Strategy = {}
-------------------------------------------------------------------------------------------------------------
local function GetBestCuttingStrategy( Proc, Part, StrategyParameters)
local sCuttingStrategy = ''
local dFeatureVolume = FeatureLib.GetFeatureVolume( Proc, Part)
local dFeatureMaxDimension = max( Proc.b3Box:getDimX(), Proc.b3Box:getDimY(), Proc.b3Box:getDimZ())
local dFeatureMaxNotClampableLengthHead = max( Proc.NotClampableLength.Rot0.Head, Proc.NotClampableLength.Rot90.Head, Proc.NotClampableLength.Rot180.Head, Proc.NotClampableLength.Rot270.Head)
local dFeatureMaxNotClampableLengthTail = max( Proc.NotClampableLength.Rot0.Tail, Proc.NotClampableLength.Rot90.Tail, Proc.NotClampableLength.Rot180.Tail, Proc.NotClampableLength.Rot270.Tail)
if dFeatureVolume < StrategyParameters.dMaxWasteVolume + 10 * GEO.EPS_SMALL
and dFeatureMaxDimension < StrategyParameters.dMaxWasteLength + 10 * GEO.EPS_SMALL then
-- TODO non sto considerando se l'utensile (non ancora scelto) ci arriva o no!
sCuttingStrategy = 'DROP_WHOLE_WASTE'
elseif FeatureLib.IsMachiningLong( max( dFeatureMaxNotClampableLengthHead, dFeatureMaxNotClampableLengthTail), Part, { dMaxSegmentLength = BeamData.LONGCUT_ENDLEN}) then
sCuttingStrategy = 'LEAVE_WASTE_ATTACHED'
else
sCuttingStrategy = 'DICE_CUT'
end
return sCuttingStrategy
end
function STR0005.Make( bAddMachining, Proc, Part, CustomParameters)
-- carico parametri da default e li aggiorno con quelli passati dal chiamante (potrebbero non essere congruenti)
local StrategyLib = {}
StrategyLib.Config = require( 'STR0005\\STR0005Config')
Strategy.sName = StrategyLib.Config.sStrategyId
CustomParameters = BeamLib.GetUpdateCustomParameters( CustomParameters, StrategyLib.Config.Parameters)
Strategy.Parameters = BeamLib.LoadCustomParametersInStrategy( CustomParameters)
Strategy.Result = {}
Strategy.Result.sInfo = ''
local Cutting = {}
local sCuttingStrategy = ''
if Strategy.Parameters.sCuttingStrategy == 'AUTO' then
sCuttingStrategy = GetBestCuttingStrategy( Proc, Part, Strategy.Parameters)
else
sCuttingStrategy = Strategy.Parameters.sCuttingStrategy
end
if sCuttingStrategy == 'DROP_WHOLE_WASTE' then
elseif sCuttingStrategy == 'LEAVE_WASTE_ATTACHED' then
elseif sCuttingStrategy == 'DICE_CUT' then
else
-- strategia di taglio non riconosciuta
end
return bAreAllMachiningsAdded, Strategy.Result
end
-------------------------------------------------------------------------------------------------------------
return STR0005