diff --git a/LuaLibs/PreSimulationLib.lua b/LuaLibs/PreSimulationLib.lua index 5fcaf37..1eb8671 100644 --- a/LuaLibs/PreSimulationLib.lua +++ b/LuaLibs/PreSimulationLib.lua @@ -426,7 +426,7 @@ function PreSimulationLib.CheckCollision( sBladeEngagement, Parameters, Optional bCheckOnlyRestlengthForAxisABC = true -- se l'elevazione reale (rispetto al pezzo) è maggiore del massimo materiale è sempre collisione -- TODO funzione -else + else local Edge = Parameters.Edge local vtNFace = Parameters.vtNFace local dDepthToMachine = Parameters.dDepthToMachine diff --git a/Strategies/Standard/HEADCUT/HEADCUT.lua b/Strategies/Standard/HEADCUT/HEADCUT.lua index 0cd913d..c1bdd59 100644 --- a/Strategies/Standard/HEADCUT/HEADCUT.lua +++ b/Strategies/Standard/HEADCUT/HEADCUT.lua @@ -36,7 +36,7 @@ function HEADCUT.Make( bAddMachining, Proc, Part, CustomParameters) dMaxWasteLength = Strategy.Parameters.dMaxWasteLength, dMaxWasteVolume = Strategy.Parameters.dMaxWasteVolume } local bAreAllMachiningsAdded = true - -- si setta che è taglio di coda + -- si setta che è taglio di testa Strategy.bIsHeadCut = true -- se abilitato, faccio tagli di PRECUT a zero (come SPLIT) @@ -54,6 +54,10 @@ function HEADCUT.Make( bAddMachining, Proc, Part, CustomParameters) -- TODO di quale utensile si deve impostare la qualità qui? Strategy.Result.dQuality = FeatureLib.GetStrategyQuality( 'SAWBLADE') + -- se coincide con inizio grezzo, non va fatto + if abs( Proc.b3Box:getCenter():getX() - Part.b3Raw:getMax():getX()) < 10 * GEO.EPS_SMALL then + return true, Strategy.Result + end -- se devo applicare le lavorazioni if bAddMachining then diff --git a/Strategies/Standard/STR0002/STR0002.lua b/Strategies/Standard/STR0002/STR0002.lua index 94c9153..fbebbf4 100644 --- a/Strategies/Standard/STR0002/STR0002.lua +++ b/Strategies/Standard/STR0002/STR0002.lua @@ -101,7 +101,7 @@ end ------------------------------------------------------------------------------------------------------------- -- TODO va gestita meglio la decisione delle facce da lavorare -local function GetBestPocketingStrategy( Proc) +local function GetBestPocketingStrategy( Proc, Part) -- imposto parametri di ricerca utensile in base a topologia local Machining = {} local Milling = {} @@ -180,6 +180,19 @@ local function GetBestPocketingStrategy( Proc) Milling.ToolInfo = {} Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if Milling.ToolInfo.nToolIndex then + -- se faccia singola e feature lavorata in unica lavorazione si può sempre affondare + if Proc.Topology.sName == 'Cut-1-Through' + or Proc.Topology.sName == 'Bevel-1-Through' then + -- eventuali punti di spezzatura + local FeatureSplittingPoints = FeatureLib.GetFeatureSplittingPoints( Proc, Part) + local bIsSplitFeature = false + if #FeatureSplittingPoints > 0 then + bIsSplitFeature = true + end + if not bIsSplitFeature then + Milling.ToolInfo.dResidualDepth = 0 + end + end Milling.bIsApplicable = true local ParametersMRR = {} ParametersMRR.nToolIndex = Milling.ToolInfo.nToolIndex @@ -514,7 +527,7 @@ function STR0002.Make( bAddMachining, Proc, Part, CustomParameters) local ToolInfo = {} local Pocketing = {} - Strategy.Machining = GetBestPocketingStrategy( Proc) + Strategy.Machining = GetBestPocketingStrategy( Proc, Part) if Strategy.Result.sStatus ~= 'Not-Applicable' then local vAddId = {}