diff --git a/Strategies/Standard/TAILCUT/TAILCUT.lua b/Strategies/Standard/TAILCUT/TAILCUT.lua index 45bdb3a..01ed7f3 100644 --- a/Strategies/Standard/TAILCUT/TAILCUT.lua +++ b/Strategies/Standard/TAILCUT/TAILCUT.lua @@ -8,7 +8,8 @@ local BeamLib = require( 'BeamLib') local BeamData = require( 'BeamData') local MachiningLib = require( 'MachiningLib') local SPLITCUT = require( 'SPLITCUT') -local DiceCut = require( 'DiceCut') +-- strategie di base +local BladeToWaste = require('BLADETOWASTE') -- Tabella per definizione modulo local TAILCUT = {} @@ -73,20 +74,24 @@ function TAILCUT.Make( bAddMachining, Proc, Part, CustomParameters) -- se abilitato, faccio tagli di PRECUT a zero (come SPLIT) if Strategy.Parameters.bExecutePreCut then Strategy.dOffset = Part.dRestLength + Strategy.bIsPreCut = true MachiningsToAdd = SPLITCUT.Execute( Proc, Part, Strategy) end - -- TODO: funzione che calcola tagli data una faccia - -- BladeToWaste( Proc, Part) - - local Faces = {} - local Face1 = {} - local Face2 = {} - local OptionalParameters = {} - Face1.ptCenter = Proc.Faces[1].ptCenter - Face1.vtN = Proc.Faces[1].vtN - OptionalParameters.b3BoxToDicing = Part.b3Raw - Faces = DiceCut.GetDice( Part, Face1, Face2, OptionalParameters) + Strategy.Machining, _ = BladeToWaste.Make( Proc, Part, OptionalParameters) + if Strategy.Machining and #Strategy.Machining > 0 then + for i = 1, #Strategy.Machining do + local TempList = {} + TempList.Splitting = Strategy.Machining[i] + if i == #Strategy.Machining then + TempList.Splitting.sUserNotes = 'Cut;' + TempList.AuxiliaryData = { bIsSplitOrCut = true} + else + TempList.Splitting.sUserNotes = 'Precut;' + end + table.insert( MachiningsToAdd, TempList) + end + end end -- aggiungo lavorazioni trovate alla lista generale diff --git a/StrategyLibs/SPLITCUT.lua b/StrategyLibs/SPLITCUT.lua index 3d54754..5d63537 100644 --- a/StrategyLibs/SPLITCUT.lua +++ b/StrategyLibs/SPLITCUT.lua @@ -201,10 +201,13 @@ function SPLITCUT.Execute( Proc, Part, Strategy) local OptionalParameters = {} OptionalParameters.nToolIndex = Strategy.SplitStrategy[1].ToolInfo.nToolIndex OptionalParameters.dLongitudinalOffset = Strategy.dOffset or 0 - OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + if not Strategy.bIsPreCut then + OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + Machining.AuxiliaryData.bIsSplitOrCut = true + end + OptionalParameters.dRadialStepSpan = 0 - Machining.AuxiliaryData.bIsSplitOrCut = true local EdgeToMachine = SPLITCUT.GetEdgeToMachine( Proc, -Y_AX()) Machining.Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) @@ -220,7 +223,9 @@ function SPLITCUT.Execute( Proc, Part, Strategy) -- Taglio lato frontale OptionalParameters.dLongitudinalOffset = Strategy.dOffset or 0 OptionalParameters.dDepthToMachine = Part.dWidth / 2 + BeamData.CUT_EXTRA_MIN - OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Presplit;', 'Precut;') + if not Strategy.bIsPreCut then + OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Presplit;', 'Precut;') + end OptionalParameters.dRadialStepSpan = 0 local EdgeToMachine = SPLITCUT.GetEdgeToMachine( Proc, -Y_AX()) @@ -235,11 +240,12 @@ function SPLITCUT.Execute( Proc, Part, Strategy) OptionalParameters.nToolIndex = Strategy.SplitStrategy[1].ToolInfo.nToolIndex OptionalParameters.dLongitudinalOffset = Strategy.dOffset or 0 OptionalParameters.dDepthToMachine = Part.dWidth / 2 + BeamData.CUT_EXTRA_MIN - OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + if not Strategy.bIsPreCut then + OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + Machining.AuxiliaryData.bIsSplitOrCut = true + end OptionalParameters.dRadialStepSpan = 0 - Machining.AuxiliaryData.bIsSplitOrCut = true - EdgeToMachine = SPLITCUT.GetEdgeToMachine( Proc, Y_AX()) Machining.Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) table.insert( Machinings, Machining) @@ -252,11 +258,12 @@ function SPLITCUT.Execute( Proc, Part, Strategy) OptionalParameters.nToolIndex = Strategy.SplitStrategy[1].ToolInfo.nToolIndex OptionalParameters.dLongitudinalOffset = Strategy.dOffset or 0 OptionalParameters.dDepthToMachine = Part.dHeight + BeamData.CUT_EXTRA - OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + if not Strategy.bIsPreCut then + OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + Machining.AuxiliaryData.bIsSplitOrCut = true + end OptionalParameters.dRadialStepSpan = 0 - Machining.AuxiliaryData.bIsSplitOrCut = true - local EdgeToMachine = SPLITCUT.GetEdgeToMachine( Proc, Z_AX()) Machining.Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) table.insert( Machinings, Machining) @@ -271,10 +278,11 @@ function SPLITCUT.Execute( Proc, Part, Strategy) OptionalParameters.dLongitudinalOffset = Strategy.dOffset or 0 local dExtraMaxMat = ( Strategy.SplitStrategy[1].ToolInfo.dMaxMatBladeFromTop + Strategy.SplitStrategy[2].ToolInfo.dMaxMatBladeFromDown - Part.dHeight - BeamData.CUT_EXTRA_MIN) / 2 OptionalParameters.dDepthToMachine = Strategy.SplitStrategy[1].ToolInfo.dMaxMatBladeFromTop - dExtraMaxMat - OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Presplit;', 'Precut;') + if not Strategy.bIsPreCut then + OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Presplit;', 'Precut;') + end OptionalParameters.dRadialStepSpan = 0 - local EdgeToMachine = SPLITCUT.GetEdgeToMachine( Proc, Z_AX()) Machining.Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) table.insert( Machinings, Machining) @@ -287,11 +295,12 @@ function SPLITCUT.Execute( Proc, Part, Strategy) OptionalParameters.nToolIndex = Strategy.SplitStrategy[2].ToolInfo.nToolIndex OptionalParameters.dLongitudinalOffset = Strategy.dOffset or 0 OptionalParameters.dDepthToMachine = Strategy.SplitStrategy[2].ToolInfo.dMaxMatBladeFromDown - dExtraMaxMat - OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + if not Strategy.bIsPreCut then + OptionalParameters.sUserNotes = EgtIf( Strategy.bSplit, 'Split;', 'Cut;') + Machining.AuxiliaryData.bIsSplitOrCut = true + end OptionalParameters.dRadialStepSpan = 0 - Machining.AuxiliaryData.bIsSplitOrCut = true - EdgeToMachine = SPLITCUT.GetEdgeToMachine( Proc, -Z_AX()) Machining.Splitting = FaceByBlade.Make( Proc, Part, Proc.Faces[1], EdgeToMachine, OptionalParameters) table.insert( Machinings, Machining)