diff --git a/LuaLibs/FeatureLib.lua b/LuaLibs/FeatureLib.lua index 6518d3f..aa70c25 100644 --- a/LuaLibs/FeatureLib.lua +++ b/LuaLibs/FeatureLib.lua @@ -499,6 +499,7 @@ function FeatureLib.GetDTMortiseData( Proc) -- distanza massima all'imbocco ortogonale all'asse local vtDiff = EgtEP( idAux, GDB_RT.GLOB) - EgtSP( idAux, GDB_RT.GLOB) + local vtOrtDiff = vtDiff - vtDiff * vtAx * vtAx local dMortiseMaxDist = min( vtOrtDiff:len(), dMortiseWidth) @@ -509,6 +510,9 @@ function FeatureLib.GetDTMortiseData( Proc) FeatureExtraInfo.dMortiseDepth = dMortiseDepth FeatureExtraInfo.dMortiseMinRadius = dMortiseMinRadius FeatureExtraInfo.vtMortiseN = vtMortiseN + vtDiff:normalize() + FeatureExtraInfo.vtMortisePathStart = EgtSV( idAux, GDB_RT.GLOB) * vtDiff + FeatureExtraInfo.vtMortisePathEnd = EgtEV( idAux, GDB_RT.GLOB) * vtDiff FeatureExtraInfo.idAddAuxGeom = idAux return FeatureExtraInfo diff --git a/LuaLibs/PreSimulationLib.lua b/LuaLibs/PreSimulationLib.lua index e07f5b5..9d548d4 100644 --- a/LuaLibs/PreSimulationLib.lua +++ b/LuaLibs/PreSimulationLib.lua @@ -237,7 +237,7 @@ end ------------------------------------------------------------------------------------------------------------- -- check extracorsa da geometria -- TODO da considerare anche gli attacchi -function PreSimulationLib.CheckOutOfStrokeFromGeometry( idGeometry, Proc, nSCC, Tool) +function PreSimulationLib.CheckOutOfStrokeFromGeometry( idGeometry, vtHead, nSCC, Tool) local b3GeomMaxOffset = EgtGetBBoxGlob( idGeometry, GDB_BB.STANDARD) local ptBoxCenter = b3GeomMaxOffset:getCenter() @@ -260,7 +260,7 @@ function PreSimulationLib.CheckOutOfStrokeFromGeometry( idGeometry, Proc, nSCC, -- Z- table.insert( PointsOnToolTipCenter, Point3d( ptBoxCenter - dBoxDimZ / 2 * Z_AX())) - local bOutOfStroke = PreSimulationLib.CheckOutOfStrokeFromPoints( PointsOnToolTipCenter, Proc.FeatureInfo.vtTenonN, nSCC, Tool) + local bOutOfStroke = PreSimulationLib.CheckOutOfStrokeFromPoints( PointsOnToolTipCenter, vtHead, nSCC, Tool) return bOutOfStroke end diff --git a/Strategies/Standard/STR0001/STR0001.lua b/Strategies/Standard/STR0001/STR0001.lua index 7e71c0b..860dc6e 100644 --- a/Strategies/Standard/STR0001/STR0001.lua +++ b/Strategies/Standard/STR0001/STR0001.lua @@ -189,7 +189,7 @@ local function GetTenonStrategy( Proc, Part) -- TODO sostituire con applicazione della lavorazione? local idGeomMaxOffset = EgtCopyGlob( Proc.FeatureInfo.idAddAuxGeom, Part.idTempGroup) EgtOffsetCurve( idGeomMaxOffset, Machining.Milling.AuxiliaryData.Clones[1].dRadialOffset + TOOLS[Machining.Milling.ToolInfo.nToolIndex].dDiameter / 2, Part.idTempGroup) - local bOutOfStroke = PreSimulationLib.CheckOutOfStrokeFromGeometry( idGeomMaxOffset, Proc, Machining.Milling.nSCC, TOOLS[Machining.Milling.ToolInfo.nToolIndex]) + local bOutOfStroke = PreSimulationLib.CheckOutOfStrokeFromGeometry( idGeomMaxOffset, Proc.FeatureInfo.vtTenonN, Machining.Milling.nSCC, TOOLS[Machining.Milling.ToolInfo.nToolIndex]) if bOutOfStroke then Machining.Milling.bIsApplicable = false end diff --git a/Strategies/Standard/STR0006/STR0006.lua b/Strategies/Standard/STR0006/STR0006.lua index bec4b55..afbbf21 100644 --- a/Strategies/Standard/STR0006/STR0006.lua +++ b/Strategies/Standard/STR0006/STR0006.lua @@ -165,7 +165,7 @@ local function GetTenonStrategy( Proc, Part) -- TODO sostituire con applicazione della lavorazione? local idGeomMaxOffset = EgtCopyGlob( Proc.FeatureInfo.idAddAuxGeom, Part.idTempGroup) EgtOffsetCurve( idGeomMaxOffset, Machining.Milling.AuxiliaryData.Clones[1].dRadialOffset + TOOLS[Machining.Milling.ToolInfo.nToolIndex].dDiameter / 2, Part.idTempGroup) - local bOutOfStroke = PreSimulationLib.CheckOutOfStrokeFromGeometry( idGeomMaxOffset, Proc, Machining.Milling.nSCC, TOOLS[Machining.Milling.ToolInfo.nToolIndex]) + local bOutOfStroke = PreSimulationLib.CheckOutOfStrokeFromGeometry( idGeomMaxOffset, Proc.FeatureInfo.vtTenonN, Machining.Milling.nSCC, TOOLS[Machining.Milling.ToolInfo.nToolIndex]) if bOutOfStroke then Machining.Milling.bIsApplicable = false end diff --git a/Strategies/Standard/STR0007/STR0007.lua b/Strategies/Standard/STR0007/STR0007.lua index 7891d2b..5fecf2d 100644 --- a/Strategies/Standard/STR0007/STR0007.lua +++ b/Strategies/Standard/STR0007/STR0007.lua @@ -8,6 +8,7 @@ local BeamLib = require( 'BeamLib') local BeamData = require( 'BeamDataNew') local MachiningLib = require( 'MachiningLib') local FeatureLib = require( 'FeatureLib') +local PreSimulationLib = require( 'PreSimulationLib') -- strategie di base local BladeToWaste = require('BLADETOWASTE') @@ -15,6 +16,19 @@ local BladeToWaste = require('BLADETOWASTE') local STR0007 = {} local Strategy = {} +------------------------------------------------------------------------------------------------------------- +local function GetSCC( Machining) + local nSCC + + if Machining.vtToolDirection:getX() > 0 then + nSCC = MCH_SCC.ADIR_XP + else + nSCC = MCH_SCC.ADIR_XM + end + + return nSCC +end + ------------------------------------------------------------------------------------------------------------- function GetMortiseStrategy( Proc, Part) local Machining = {} @@ -94,11 +108,16 @@ function GetMortiseStrategy( Proc, Part) ToolSearchParameters.AvailableToolList = MachiningLib.GetAvailableToolList( Proc, Strategy.Parameters.sMillingList, 'Milling') Machining.Milling.ToolInfo = MachiningLib.FindMill( Proc, ToolSearchParameters) if Machining.Milling.ToolInfo.nToolIndex then - Machining.Milling.bIsApplicable = true + local dToolDiam = TOOLS[Machining.Milling.ToolInfo.nToolIndex].dDiameter + -- se richiesta passata antischeggia + if Strategy.Parameters.bAntiSplint then + Machining.AntiSplint = GetMortiseAntiSplint( Proc, Part, Machining.Milling.ToolInfo) + end + + Machining.Milling.bIsApplicable = true -- calcolo numero passate necessarie - if Proc.FeatureInfo.dMortiseMaxDist > TOOLS[Machining.Milling.ToolInfo.nToolIndex].dDiameter * 1.9 then - local dToolDiam = TOOLS[Machining.Milling.ToolInfo.nToolIndex].dDiameter + if Proc.FeatureInfo.dMortiseMaxDist > dToolDiam * 1.9 then local sSideStep = TOOLS[Machining.Milling.ToolInfo.nToolIndex].dSideStep Machining.nMillingPathsNeeded = 1 + ceil( ( Proc.FeatureInfo.dMortiseMaxDist - dToolDiam * 1.9) / ( sSideStep * 2)) -- suddivido step in base al numero passate da fare @@ -107,6 +126,55 @@ function GetMortiseStrategy( Proc, Part) Machining.nMillingPathsNeeded = 1 end + -- aggiungo geometria + Machining.Milling.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, -1}} + Machining.Milling.nToolIndex = Machining.Milling.ToolInfo.nToolIndex + Machining.Milling.nType = MCH_MY.MILLING + Machining.Milling.vtToolDirection = Proc.FeatureInfo.vtMortiseN + Machining.Milling.sDepth = Strategy.Parameters.dOverMatOnLength + + -- LeadIn / LeadOut + Machining.Milling.LeadIn = {} + Machining.Milling.LeadOut = {} + Machining.Milling.LeadIn.nType = MCH_MILL_LI.TANGENT + Machining.Milling.LeadOut.nType = MCH_MILL_LI.TANGENT + + local dDeltaAngledEntry = Proc.FeatureInfo.vtMortisePathStart * dToolDiam / 2 + local dDeltaAngledExit = Proc.FeatureInfo.vtMortisePathEnd * dToolDiam / 2 + + Machining.Milling.LeadIn.dTangentDistance = dToolDiam / 2 + dDeltaAngledEntry + BeamData.COLL_SIC + Machining.Milling.LeadIn.dPerpDistance = 0 + Machining.Milling.LeadOut.dTangentDistance = dToolDiam / 2 + dDeltaAngledExit + BeamData.COLL_SIC + Machining.Milling.LeadOut.dPerpDistance = 0 + + if Proc.AffectedFaces.bLeft and Strategy.bCanMoveAfterSplit then + Machining.Milling.sStage = 'AfterTail' + end + + -- sistemo il lato e la direzione di lavoro + Machining.Milling.bInvert = EgtIf( TOOLS[Machining.Milling.ToolInfo.nToolIndex].bIsCCW, false, true) + Machining.Milling.nWorkside = EgtIf( TOOLS[Machining.Milling.ToolInfo.nToolIndex].bIsCCW, MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT) + + Machining.Milling.dMaxElev = Proc.FeatureInfo.dMortiseDepth + + Machining.Milling.nSCC = GetSCC( Machining.Milling) + + -- passate con sovramateriale + Machining.Milling.AuxiliaryData = { Clones = {}} + for i = Machining.nMillingPathsNeeded, 1, -1 do + -- il primo è il passaggio più esterno + local nIndexClones = Machining.nMillingPathsNeeded - i + 1 + -- cambia solo sovrmateriale radiale + Machining.Milling.AuxiliaryData.Clones[nIndexClones] = {} + -- ultima passata con sovramateriale impostato + if i == 1 then + Machining.Milling.AuxiliaryData.Clones[nIndexClones].dRadialOffset = Strategy.Parameters.dOverMatOnRadius + else + -- suddivido step in base al numero passate da fare + Machining.Milling.AuxiliaryData.Clones[nIndexClones].dRadialOffset = ( i - 1) * Machining.Milling.dRealSideStep + end + end + local ParametersMRR = {} ParametersMRR.nToolIndex = Machining.Milling.ToolInfo.nToolIndex Result.Milling.dMRR = MachiningLib.GetToolMRR( ParametersMRR) @@ -116,6 +184,16 @@ function GetMortiseStrategy( Proc, Part) else Machining.Milling.bIsApplicable = false end + + -- test finecorsa sulla passata più esterna: se extracorsa, la lavorazione non è fattibile + local idGeomMaxOffset = EgtCopyGlob( Proc.FeatureInfo.idAddAuxGeom, Part.idTempGroup) + EgtAddCurveCompoLineTg( idGeomMaxOffset, Machining.Milling.LeadIn.dTangentDistance, false) + EgtAddCurveCompoLineTg( idGeomMaxOffset, Machining.Milling.LeadOut.dTangentDistance, true) + EgtOffsetCurve( idGeomMaxOffset, Machining.Milling.AuxiliaryData.Clones[1].dRadialOffset + TOOLS[Machining.Milling.ToolInfo.nToolIndex].dDiameter / 2, Part.idTempGroup) + local bOutOfStroke = PreSimulationLib.CheckOutOfStrokeFromGeometry( idGeomMaxOffset, Proc.FeatureInfo.vtMortiseN, Machining.Milling.nSCC, TOOLS[Machining.Milling.ToolInfo.nToolIndex]) + if bOutOfStroke then + Machining.Milling.bIsApplicable = false + end end end @@ -161,9 +239,9 @@ function GetMortiseMachiningResult( Proc, Result) TotalResult.dCompletionIndex = FeatureLib.GetFeatureCompletionIndex( 100) TotalResult.dMRR = ( Result.Milling.dMRR + Result.Cutting.dMRR) / 2 local sQuality - if not Strategy.Machining.bCuttingWithMill and Strategy.Machining.bAntiSplint then + if not Strategy.Machining.bCuttingWithMill and Strategy.Machining.AntiSplint.bIsApplicable then sQuality = 'BEST' - elseif Strategy.Machining.bAntiSplint then + elseif Strategy.Machining.AntiSplint.bIsApplicable then sQuality = 'FINE' else sQuality = 'STD' @@ -176,7 +254,7 @@ function GetMortiseMachiningResult( Proc, Result) TotalResult.sStatus = Result.Milling.sStatus TotalResult.dCompletionIndex = FeatureLib.GetFeatureCompletionIndex( 100) TotalResult.dMRR = Result.Milling.dMRR - local sQuality = EgtIf( Strategy.Parameters.bAntiSplint, 'BEST', 'STD') + local sQuality = EgtIf( Strategy.Machining.AntiSplint.bIsApplicable, 'BEST', 'STD') TotalResult.dQuality = FeatureLib.GetStrategyQuality( sQuality) TotalResult.nFeatureRotationIndex = GetFeatureRotationIndex( Proc) TotalResult.sInfo = '' @@ -233,14 +311,15 @@ local function CalcTopPath( nProcId, AuxId, nAddGrpId, dAltMort, dSideAng, b3Sol end ------------------------------------------------------------------------------------------------------------- -function ApplyMortiseAntiSplint( Proc, Part) +function GetMortiseAntiSplint( Proc, Part, ToolInfo) + local AntiSplint = { bIsApplicable = false} -- se il percorso non è chiuso, aggiungo percorso e lavorazione antischeggia if not EgtCurveIsClosed( Proc.FeatureInfo.idAddAuxGeom) then -- recupero gruppo per geometria addizionale local nAddGrpId = BeamLib.GetAddGroup( Part.id) -- calcolo il percorso top mortise - local dSideAng = TOOLS[Strategy.Machining.Milling.ToolInfo.nToolIndex].dSideAngle - local dToolDiam = TOOLS[Strategy.Machining.Milling.ToolInfo.nToolIndex].dDiameter + local dSideAng = TOOLS[ToolInfo.nToolIndex].dSideAngle + local dToolDiam = TOOLS[ToolInfo.nToolIndex].dDiameter local vtExtr = Proc.FeatureInfo.vtMortiseN local nAuxId1 = CalcTopPath( Proc.id, Proc.FeatureInfo.idAddAuxGeom, nAddGrpId, Proc.FeatureInfo.dMortiseDepth, dSideAng, Part.b3Part) -- se esiste il percorso @@ -275,48 +354,61 @@ function ApplyMortiseAntiSplint( Proc, Part) if not nId1 then local sErr = 'Wrong geometry : Error on DtMortise ' EgtOutLog( sErr) - return false, sErr + return AntiSplint end EgtModifyCurveExtrusion( nId1, vtExtr, GDB_RT.GLOB) - local Machining = {} - Machining.nToolIndex = Strategy.Machining.Milling.ToolInfo.nToolIndex - Machining.nType = MCH_MY.MILLING - Machining.vtToolDirection = Proc.FeatureInfo.vtMortiseN + AntiSplint.nToolIndex = ToolInfo.nToolIndex + AntiSplint.nType = MCH_MY.MILLING + AntiSplint.vtToolDirection = Proc.FeatureInfo.vtMortiseN -- LeadIn / LeadOut - Machining.LeadIn = {} - Machining.LeadOut = {} - Machining.LeadIn.nType = MCH_MILL_LI.TANGENT - Machining.LeadOut.nType = MCH_MILL_LI.TANGENT - Machining.LeadIn.dTangentDistance = TOOLS[Strategy.Machining.Milling.ToolInfo.nToolIndex].dDiameter / 2 + BeamData.COLL_SIC - Machining.LeadIn.dPerpDistance = 0 - Machining.LeadOut.dTangentDistance = TOOLS[Strategy.Machining.Milling.ToolInfo.nToolIndex].dDiameter / 2 + BeamData.COLL_SIC - Machining.LeadOut.dPerpDistance = 0 + AntiSplint.LeadIn = {} + AntiSplint.LeadOut = {} + AntiSplint.LeadIn.nType = MCH_MILL_LI.TANGENT + AntiSplint.LeadOut.nType = MCH_MILL_LI.TANGENT + AntiSplint.LeadIn.dTangentDistance = TOOLS[ToolInfo.nToolIndex].dDiameter / 2 + BeamData.COLL_SIC + AntiSplint.LeadIn.dPerpDistance = 0 + AntiSplint.LeadOut.dTangentDistance = TOOLS[ToolInfo.nToolIndex].dDiameter / 2 + BeamData.COLL_SIC + AntiSplint.LeadOut.dPerpDistance = 0 - Machining.dRadialOffset = dToolRadDelta - 1 - Machining.sDepth = Proc.FeatureInfo.dMortiseDepth - Strategy.Parameters.dOverMatOnLength - Machining.Geometry = {{ nId1, -1}} - Machining.bInvert = EgtIf( TOOLS[Strategy.Machining.Milling.ToolInfo.nToolIndex].bIsCCW, false, true) - Machining.nWorkside = EgtIf( TOOLS[Strategy.Machining.Milling.ToolInfo.nToolIndex].bIsCCW, MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT) - Machining.dMaxElev = Proc.FeatureInfo.dMortiseDepth + AntiSplint.dRadialOffset = dToolRadDelta - 1 + AntiSplint.sDepth = Proc.FeatureInfo.dMortiseDepth - Strategy.Parameters.dOverMatOnLength + AntiSplint.Geometry = {{ nId1, -1}} + AntiSplint.bInvert = EgtIf( TOOLS[ToolInfo.nToolIndex].bIsCCW, false, true) + AntiSplint.nWorkside = EgtIf( TOOLS[ToolInfo.nToolIndex].bIsCCW, MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT) + AntiSplint.dMaxElev = Proc.FeatureInfo.dMortiseDepth + AntiSplint.nSCC = GetSCC( AntiSplint) if Proc.AffectedFaces.bLeft and Strategy.bCanMoveAfterSplit then - Machining.sStage = 'AfterTail' + AntiSplint.sStage = 'AfterTail' + end + + -- test finecorsa sulla passata più esterna: se extracorsa, la lavorazione non è fattibile + local idGeomOffset = EgtCopyGlob( nId1, Part.idTempGroup) + EgtOffsetCurve( idGeomOffset, EgtIf( AntiSplint.bInvert, -TOOLS[ToolInfo.nToolIndex].dDiameter / 2, TOOLS[ToolInfo.nToolIndex].dDiameter / 2), Part.idTempGroup) + -- trasformo arco in una curva compo per poi allungarla in direzione tangente + idGeomOffset = EgtCurveCompo( Part.idTempGroup, idGeomOffset) + EgtAddCurveCompoLineTg( idGeomOffset, AntiSplint.LeadIn.dTangentDistance, false) + EgtAddCurveCompoLineTg( idGeomOffset, AntiSplint.LeadOut.dTangentDistance, true) + local bOutOfStroke = PreSimulationLib.CheckOutOfStrokeFromGeometry( idGeomOffset, Proc.FeatureInfo.vtMortiseN, AntiSplint.nSCC, TOOLS[ToolInfo.nToolIndex]) + -- se soddisfa tutti i requisiti, posso applicare + if bOutOfStroke then + AntiSplint.bIsApplicable = false + else + AntiSplint.bIsApplicable = true end - MachiningLib.AddMachinings( Proc, Machining) else local sErr = 'Wrong geometry : Error on DtMortise ' .. tostring( Proc.id) EgtOutLog( sErr) - return false, sErr end else local sErr = 'Wrong geometry : Error on DtMortise ' .. tostring( Proc.id) EgtOutLog( sErr) - return false, sErr end end + return AntiSplint end @@ -347,7 +439,7 @@ function STR0007.Make( bAddMachining, Proc, Part, CustomParameters) local ptCutC, vtCutN = EgtSurfTmFacetCenter( Proc.id, 1, GDB_ID.ROOT) if ptCutC and vtCutN and AreSameVectorApprox( Proc.FeatureInfo.vtMortiseN, vtCutN) then -- recupero gruppo per geometria addizionale - local nAddGrpId = BeamLib.GetAddGroup( Part.id) + local nAddGrpId = Part.idTempGroup Strategy.idMortiseCutPlane = EgtSurfTmPlaneInBBox( nAddGrpId, ptCutC, vtCutN, Part.b3Part, GDB_RT.GLOB) end end @@ -400,65 +492,19 @@ function STR0007.Make( bAddMachining, Proc, Part, CustomParameters) end -- se richiesta passata antischeggia - if Strategy.Parameters.bAntiSplint then - ApplyMortiseAntiSplint( Proc, Part) + if Strategy.Machining.AntiSplint.bIsApplicable then + bAreAllMachiningsAdded = bAreAllMachiningsAdded and MachiningLib.AddMachinings( Proc, Strategy.Machining.AntiSplint) end -- passaggio sul profilo if Strategy.Machining.Milling.bIsApplicable then - local AuxiliaryData = {} -- se molti passaggi richiesti, si fa svuotatura -- TODO in attesa delle svuotature, si fanno passaggi senza limiti sul numero massimo. Poi togliere il FALSE nella condizione. if false and Strategy.Machining.nMillingPathsNeeded > Strategy.Parameters.nMaxMillingPaths then -- TODO. SERVONO NUOVE SVUOTATURE!!!! else - -- aggiungo geometria - Strategy.Machining.Milling.Geometry = {{ Proc.FeatureInfo.idAddAuxGeom, -1}} - Strategy.Machining.Milling.nToolIndex = Strategy.Machining.Milling.ToolInfo.nToolIndex - Strategy.Machining.Milling.nType = MCH_MY.MILLING - Strategy.Machining.Milling.vtToolDirection = Proc.FeatureInfo.vtMortiseN - Strategy.Machining.Milling.sDepth = Strategy.Parameters.dOverMatOnLength - - -- LeadIn / LeadOut - Strategy.Machining.Milling.LeadIn = {} - Strategy.Machining.Milling.LeadOut = {} - Strategy.Machining.Milling.LeadIn.nType = MCH_MILL_LI.TANGENT - Strategy.Machining.Milling.LeadOut.nType = MCH_MILL_LI.TANGENT - Strategy.Machining.Milling.LeadIn.dTangentDistance = TOOLS[Strategy.Machining.Milling.ToolInfo.nToolIndex].dDiameter / 2 + BeamData.COLL_SIC - Strategy.Machining.Milling.LeadIn.dPerpDistance = 0 - Strategy.Machining.Milling.LeadOut.dTangentDistance = TOOLS[Strategy.Machining.Milling.ToolInfo.nToolIndex].dDiameter / 2 + BeamData.COLL_SIC - Strategy.Machining.Milling.LeadOut.dPerpDistance = 0 - - if Proc.AffectedFaces.bLeft and Strategy.bCanMoveAfterSplit then - Strategy.Machining.Milling.sStage = 'AfterTail' - end - - -- sistemo il lato e la direzione di lavoro - Strategy.Machining.Milling.bInvert = EgtIf( TOOLS[Strategy.Machining.Milling.ToolInfo.nToolIndex].bIsCCW, false, true) - Strategy.Machining.Milling.nWorkside = EgtIf( TOOLS[Strategy.Machining.Milling.ToolInfo.nToolIndex].bIsCCW, MCH_MILL_WS.LEFT, MCH_MILL_WS.RIGHT) - - Strategy.Machining.Milling.dMaxElev = Proc.FeatureInfo.dMortiseDepth - - -- TODO calcolare SCC - - -- passate con sovramateriale - AuxiliaryData.Clones = {} - for i = Strategy.Machining.nMillingPathsNeeded, 1, -1 do - -- il primo è il passaggio più esterno - local nIndexClones = Strategy.Machining.nMillingPathsNeeded - i + 1 - -- cambia solo sovrmateriale radiale - AuxiliaryData.Clones[nIndexClones] = {} - -- ultima passata con sovramateriale impostato - if i == 1 then - AuxiliaryData.Clones[nIndexClones].dRadialOffset = Strategy.Parameters.dOverMatOnRadius - else - -- suddivido step in base al numero passate da fare - AuxiliaryData.Clones[nIndexClones].dRadialOffset = ( i - 1) * Strategy.Machining.Milling.dRealSideStep - end - end - -- aggiunge lavorazione - bAreAllMachiningsAdded = MachiningLib.AddMachinings( Proc, Strategy.Machining.Milling, AuxiliaryData) + bAreAllMachiningsAdded = bAreAllMachiningsAdded and MachiningLib.AddMachinings( Proc, Strategy.Machining.Milling, Strategy.Machining.Milling.AuxiliaryData) end end end