Files
databeamnew/Strategies/Standard/STR0014/STR0014.lua
T
2026-04-24 08:41:25 +02:00

126 lines
5.3 KiB
Lua

-- Strategia: STR0014
-- Descrizione
-- Incisione con fresa
-- Feature tipo Mark
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
-- carico librerie
local BeamLib = require( 'BeamLib')
local BeamData = require( 'BeamDataNew')
local MachiningLib = require( 'MachiningLib')
local FeatureLib = require( 'FeatureLib')
local ID = require( 'Identity')
-- Tabella per definizione modulo
local STR0014 = {}
local Strategy = {}
-------------------------------------------------------------------------------------------------------------
local function GetSCC( Machining)
local nSCC
if TOOLS[Machining.nToolIndex].SetupInfo.bToolOnAggregate then
nSCC = MCH_SCC.ADIR_NEAR
elseif Machining.vtToolDirection:getY() <= 0 then
nSCC = MCH_SCC.ADIR_YM
else
nSCC = MCH_SCC.ADIR_YP
end
return nSCC
end
-------------------------------------------------------------------------------------------------------------
-- TODO rimuovere il calcolo MRR dove non serve, è fatto tutto alla fine.
function STR0014.Make( bAddMachining, Proc, Part, CustomParameters)
-- carico parametri de default e li aggiorno con quelli passati dal chiamante (potrebbero non essere congruenti)
local StrategyLib = {}
StrategyLib.Config = STRATEGIES_CONFIG[CustomParameters.sStrategyId]
Strategy.sName = StrategyLib.Config.sStrategyId
Strategy.Parameters = BeamLib.LoadCustomParametersInStrategy( Proc, Part, CustomParameters, StrategyLib.Config)
Strategy.Machining = MachiningLib.InitMachiningParameters( MCH_MY.MILLING)
Strategy.Result = {}
Strategy.Result.dTimeToMachine = 0
local bAreAllMachiningsAdded = true
local ToolSearchParameters = {}
ToolSearchParameters.dElevation = 0
ToolSearchParameters.vtToolDirection = Proc.FeatureInfo.vtExtr
if Strategy.Parameters.sMarkStrategy == 'AUTO' then
ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillingList, 'Milling')
ToolSearchParameters.sMillShape = EgtIf( ID.IsMarking( Proc), 'VMILL', 'PEN')
Strategy.Machining.ToolInfo = {}
Strategy.Machining.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters)
-- se utensile non trovato, si cerca altro tipo di utensile compatibile per questi tipi di lavorazione
if not Strategy.Machining.ToolInfo.nToolIndex then
ToolSearchParameters.sMillShape = EgtIf( ID.IsMarking( Proc), 'PEN', 'VMILL')
Strategy.Machining.ToolInfo = {}
Strategy.Machining.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters)
end
else
if Strategy.Parameters.sMarkStrategy == 'PEN_FORCED' then
ToolSearchParameters.sMillShape = 'PEN'
elseif Strategy.Parameters.sMarkStrategy == 'VMILL_FORCED' then
ToolSearchParameters.sMillShape = 'VMILL'
end
Strategy.Machining.ToolInfo = {}
Strategy.Machining.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters)
end
if Strategy.Machining.ToolInfo.nToolIndex then
Strategy.Result.sStatus = 'Completed'
Strategy.Result.dCompletionIndex = FeatureLib.GetFeatureCompletionIndex( 100)
local Parameters = { nToolIndex = Strategy.Machining.ToolInfo.nToolIndex}
Strategy.Result.dMRR = MachiningLib.GetToolMRR( Parameters)
Strategy.Result.dQuality = FeatureLib.GetStrategyQuality( 'MILL')
else
Strategy.Result = FeatureLib.GetStrategyResultNotApplicable()
end
if Strategy.Result.sStatus ~= 'Not-Applicable' then
if bAddMachining then
-- potrebbero esserci altre geometrie, si prepara già struttura con cloni
Strategy.AuxiliaryData = {}
Strategy.AuxiliaryData.Clones = {}
Strategy.AuxiliaryData.Clones[1] = {}
Strategy.AuxiliaryData.Clones[1].Geometry = {{ Proc.id, -1}}
Strategy.Machining.Geometry = {{ Proc.id, -1}}
Strategy.Machining.nToolIndex = Strategy.Machining.ToolInfo.nToolIndex
Strategy.Machining.vtToolDirection = Proc.FeatureInfo.vtExtr
Strategy.Machining.nSCC = GetSCC( Strategy.Machining)
Strategy.Machining.nType = MCH_MY.MILLING
Strategy.Machining.sDepth = EgtClamp( Strategy.Parameters.dMachiningDepth, -1, 5)
Strategy.Machining.nWorkside = MCH_MILL_WS.CENTER
-- LeadIn / LeadOut
Strategy.Machining.LeadIn = {}
Strategy.Machining.LeadOut = {}
Strategy.Machining.LeadIn.nType = MCH_MILL_LI.NONE
Strategy.Machining.LeadOut.nType = MCH_MILL_LI.NONE
-- stessi parametri cambia solo al geometria
for i = 1, #Proc.FeatureInfo.AdditionalGeometries do
local AuxId = Proc.id + Proc.FeatureInfo.AdditionalGeometries[i]
Strategy.AuxiliaryData.Clones[i+1] = {}
Strategy.AuxiliaryData.Clones[i+1].Geometry = {{ AuxId, -1}}
end
bAreAllMachiningsAdded = MachiningLib.AddMachinings( Proc, Strategy.Machining, Strategy.AuxiliaryData)
end
else
bAreAllMachiningsAdded = false
end
return bAreAllMachiningsAdded, Strategy.Result
end
-------------------------------------------------------------------------------------------------------------
return STR0014