126 lines
5.3 KiB
Lua
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 |