cc8410b0c5
- 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
75 lines
3.0 KiB
Lua
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 |