- in SawPlusChain implementata sega a catena, da testare

This commit is contained in:
luca.mazzoleni
2024-03-29 19:20:19 +01:00
parent e3f8783c18
commit 51b5c7ac80
+110 -48
View File
@@ -4710,9 +4710,9 @@ function SawPlusChain.GetToolFromMachining( sMachiningName)
Tool.Name = EgtTdbGetCurrToolParam( MCH_TP.NAME)
Tool.IsCCW = ( EgtMdbGetCurrMachiningParam( MCH_MP.SPEED) < 0)
Tool.Type = EgtTdbGetCurrToolParam( MCH_TP.TYPE)
Tool.Diameter = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or 0
-- lama
if Tool.Type == MCH_TY.SAW_STD or Tool.Type == MCH_TY.SAW_FLAT then
Tool.Diameter = EgtTdbGetCurrToolParam( MCH_TP.DIAM) or 0
Tool.Thickness = EgtTdbGetCurrToolParam(MCH_TP.THICK) or 0
Tool.MaxDepth = EgtTdbGetCurrToolMaxDepth() or 0
Tool.SideStep = EgtTdbGetCurrToolValInNotes( MCH_TP.USERNOTES, 'SIDESTEP', 'd')
@@ -4776,12 +4776,9 @@ function SawPlusChain.GetHorizontalSteps( Machining)
end
local HorizontalSteps = {}
HorizontalSteps.StepLength = 0
HorizontalSteps.Count = 1
if Machining.Tool.SideStep then
HorizontalSteps.Count = ceil( ( Machining.Depth - 10 * GEO.EPS_SMALL) / Machining.Tool.SideStep)
if HorizontalSteps.Count > 1 then
HorizontalSteps.StepLength = ( Machining.Depth - Machining.Tool.SideStep) / ( HorizontalSteps.Count - 1)
end
HorizontalSteps.Count = ceil( ( Machining.Depth - 10 * GEO.EPS_SMALL) / Machining.Tool.SideStep)
if HorizontalSteps.Count > 1 then
HorizontalSteps.StepLength = ( Machining.Depth - Machining.Tool.SideStep) / ( HorizontalSteps.Count - 1)
end
return HorizontalSteps
@@ -4791,13 +4788,19 @@ function SawPlusChain.GetLeadInOut( Proc, Machining)
-- si determina se l'inizio o la fine della lavorazione sono chiusi e l'eventuale riduzione da applicare
local bIsStartClosed = false
local bIsEndClosed = false
local dAddLengthToReduce = sqrt( Machining.Depth * Machining.Tool.Diameter - Machining.Depth * Machining.Depth)
local bIsMortising = ( Machining.Tool.Type == MCH_TY.MORTISE_STD)
local dAddLengthToReduce = 0
if bIsMortising then
dAddLengthToReduce = Machining.Tool.Diameter / 2
else
dAddLengthToReduce = sqrt( Machining.Depth * Machining.Tool.Diameter - Machining.Depth * Machining.Depth)
end
if #( Proc.Pocket.SideFaces) == 2 then
bIsStartClosed = true
bIsEndClosed = true
elseif #( Proc.Pocket.SideFaces) == 1 then
local CCWDirection = ( Machining.FaceToMachine.VtN ^ Proc.Pocket.BottomFace.VtN)
if Machining.ToolInvert then
if Machining.ToolInvert or bIsMortising then
CCWDirection = - CCWDirection
end
if CCWDirection * Proc.Pocket.SideFaces[1].VtN > 10 * GEO.EPS_SMALL then
@@ -4817,25 +4820,34 @@ function SawPlusChain.GetLeadInOut( Proc, Machining)
local LeadIn = {}
local LeadOut = {}
LeadIn.Type = MCH_MILL_LI.LINEAR
LeadOut.Type = MCH_MILL_LI.LINEAR
LeadIn.TangentDistance = 0
LeadOut.TangentDistance = 0
LeadIn.Elevation = 0
LeadOut.Elevation = 0
LeadIn.CompLength = 0
LeadOut.CompLength = 0
LeadIn.StartAddLength = 0
LeadOut.EndAddLength = 0
LeadIn.PerpDistance = 0
LeadOut.PerpDistance = 0
if bIsStartClosed then
LeadIn.StartAddLength = -dAddLengthToReduce
LeadIn.PerpDistance = 1
end
if bIsEndClosed then
LeadOut.EndAddLength = -dAddLengthToReduce
LeadOut.PerpDistance = 1
if Machining.Tool.Type ~= MCH_TY.MORTISE_STD then
LeadIn.Type = MCH_MILL_LI.LINEAR
LeadOut.Type = MCH_MILL_LI.LINEAR
LeadIn.TangentDistance = 0
LeadOut.TangentDistance = 0
LeadIn.Elevation = 0
LeadOut.Elevation = 0
LeadIn.CompLength = 0
LeadOut.CompLength = 0
LeadIn.PerpDistance = 0
LeadOut.PerpDistance = 0
if bIsStartClosed then
LeadIn.StartAddLength = -dAddLengthToReduce
LeadIn.PerpDistance = 1
end
if bIsEndClosed then
LeadOut.EndAddLength = -dAddLengthToReduce
LeadOut.PerpDistance = 1
end
else
if bIsStartClosed then
LeadIn.StartAddLength = -dAddLengthToReduce
end
if bIsEndClosed then
LeadOut.EndAddLength = -dAddLengthToReduce
end
end
return LeadIn, LeadOut
@@ -4851,6 +4863,7 @@ function SawPlusChain.ApplyMachining( Machining, sOperationNamePrefix, b3Raw)
end
-- impostazione parametri lavorazione
local sUserNotes = EgtGetMachiningParam( MCH_MP.USERNOTES)
EgtSetMachiningGeometry( {{ Machining.ProcId, Machining.FaceToMachine.Id}})
EgtSetMachiningParam( MCH_MP.FACEUSE, Machining.Faceuse)
EgtSetMachiningParam( MCH_MP.SCC, Machining.SCC)
@@ -4859,24 +4872,30 @@ function SawPlusChain.ApplyMachining( Machining, sOperationNamePrefix, b3Raw)
EgtSetMachiningParam( MCH_MP.TOOLINVERT, Machining.ToolInvert)
EgtSetMachiningParam( MCH_MP.OFFSR, Machining.RadialOffset)
EgtSetMachiningParam( MCH_MP.OFFSL, Machining.LongitudinalOffset)
EgtSetMachiningParam( MCH_MP.LITANG, Machining.LeadIn.TangentDistance)
EgtSetMachiningParam( MCH_MP.LIPERP, Machining.LeadIn.PerpDistance)
EgtSetMachiningParam( MCH_MP.LOTANG, Machining.LeadOut.TangentDistance)
EgtSetMachiningParam( MCH_MP.LOPERP, Machining.LeadOut.PerpDistance)
if Machining.Tool.Type ~= MCH_TY.MORTISE_STD then
EgtSetMachiningParam( MCH_MP.LITANG, Machining.LeadIn.TangentDistance)
EgtSetMachiningParam( MCH_MP.LIPERP, Machining.LeadIn.PerpDistance)
EgtSetMachiningParam( MCH_MP.LOTANG, Machining.LeadOut.TangentDistance)
EgtSetMachiningParam( MCH_MP.LOPERP, Machining.LeadOut.PerpDistance)
end
EgtSetMachiningParam( MCH_MP.STARTADDLEN, Machining.LeadIn.StartAddLength)
EgtSetMachiningParam( MCH_MP.ENDADDLEN, Machining.LeadOut.EndAddLength)
EgtSetMachiningParam( MCH_MP.ENDADDLEN, Machining.LeadOut.EndAddLength)
EgtSetMachiningParam( MCH_MP.STEPTYPE, Machining.VerticalSteps.StepType)
EgtSetMachiningParam( MCH_MP.STEP, Machining.VerticalSteps.StepLength)
local sNotes
if Machining.VerticalSteps.MaxElev then
sNotes = EgtSetValInNotes( sNotes, 'MaxElev', Machining.VerticalSteps.MaxElev)
if Machining.Steps then
if Machining.Steps.StepType then
EgtSetMachiningParam( MCH_MP.STEPTYPE, Machining.Steps.StepType)
end
if Machining.Steps.StepLength then
EgtSetMachiningParam( MCH_MP.STEP, Machining.Steps.StepLength)
end
if Machining.Steps.MaxElev then
sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxElev', Machining.Steps.MaxElev)
end
end
EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, BL.GetBlockedAxis( Machining.Name, Machining.BlockedAxis.Orientation, b3Raw, Machining.FaceToMachine.VtN, Machining.BlockedAxis.VtOut))
EgtSetMachiningParam( MCH_MP.OVERL, Machining.Overlap)
EgtSetMachiningParam( MCH_MP.INITANGS, Machining.SuggestedAngles)
EgtSetMachiningParam( MCH_MP.STARTPOS, max( Machining.StartSafetyLength, EgtGetMachiningParam( MCH_MP.STARTPOS)))
EgtSetMachiningParam( MCH_MP.USERNOTES, sNotes)
EgtSetMachiningParam( MCH_MP.USERNOTES, sUserNotes)
local bIsApplyOk = ML.ApplyMachining( true, false)
if not bIsApplyOk then
@@ -4984,16 +5003,16 @@ function SawPlusChain.Make( Proc, b3Raw, bOnlySaw)
Cutting.RadialOffset = Proc.Pocket.Depth - Cutting.Depth
end
-- step verticale e offset longitudinale
Cutting.VerticalSteps = SawPlusChain.GetVerticalSteps( Proc, Cutting)
if Cutting.ToolInvert and Cutting.VerticalSteps.Count > 1 then
Cutting.Steps = SawPlusChain.GetVerticalSteps( Proc, Cutting)
if Cutting.ToolInvert and Cutting.Steps.Count > 1 then
Cutting.LongitudinalOffset = - Proc.Pocket.Height
else
Cutting.LongitudinalOffset = 0
end
-- distanza di sicurezza
Cutting.StartSafetyLength = 10
-- overlap
Cutting.Overlap = 0
-- step orizzontale
Cutting.HorizontalSteps = SawPlusChain.GetHorizontalSteps( Cutting)
-- faceuse
Cutting.Faceuse = BL.GetNearestOrthoOpposite( Proc.Pocket.Direction)
-- SCC
@@ -5010,9 +5029,16 @@ function SawPlusChain.Make( Proc, b3Raw, bOnlySaw)
local bOk, sErr
-- lavorazione con lama
local dOriginalRadialOffset = Cutting.RadialOffset
-- eventuale step orizzontale
if Cutting.Tool.SideStep then
Cutting.HorizontalSteps = SawPlusChain.GetHorizontalSteps( Cutting)
else
Cutting.HorizontalSteps.Count = 1
Cutting.HorizontalSteps.StepLength = 0
end
local dOriginalRadialOffsetCutting = Cutting.RadialOffset
for i = Cutting.HorizontalSteps.Count, 1, -1 do
Cutting.RadialOffset = dOriginalRadialOffset + Cutting.HorizontalSteps.StepLength * ( i - 1)
Cutting.RadialOffset = dOriginalRadialOffsetCutting + Cutting.HorizontalSteps.StepLength * ( i - 1)
bOk, sErr = SawPlusChain.ApplyMachining( Cutting, 'Cut_', b3Raw)
end
@@ -5021,12 +5047,48 @@ function SawPlusChain.Make( Proc, b3Raw, bOnlySaw)
end
-- parametri della lavorazione con sega a catena
-- lato di lavoro e inversioni
if Chainsawing.Tool.IsCCW then
Chainsawing.Workside = MCH_MILL_WS.RIGHT
Chainsawing.Invert = false
else
Chainsawing.Workside = MCH_MILL_WS.LEFT
Chainsawing.Invert = true
end
Chainsawing.ToolInvert = false
-- profondità e offset longitudinale
if Chainsawing.Tool.MaxMat > Proc.Pocket.Depth - 10 * GEO.EPS_SMALL then
Chainsawing.Depth = Proc.Pocket.Depth
Chainsawing.LongitudinalOffset = 0
else
Chainsawing.Depth = Chainsawing.Tool.MaxMat
Chainsawing.LongitudinalOffset = Proc.Pocket.Depth - Chainsawing.Depth
end
-- offset radiale
Chainsawing.RadialOffset = 0
-- distanza di sicurezza
Chainsawing.StartSafetyLength = 10
-- overlap
Chainsawing.Overlap = 0
-- faceuse
Chainsawing.Faceuse = BL.GetNearestParalOpposite( Proc.Pocket.Direction)
-- SCC
Chainsawing.SCC = MCH_SCC.NONE
-- angoli suggeriti
Chainsawing.SuggestedAngles = ''
-- asse bloccato
Chainsawing.BlockedAxis = {}
Chainsawing.BlockedAxis.Orientation = 'perpendicular'
-- approccio e retrazione
Chainsawing.LeadIn, Chainsawing.LeadOut = SawPlusChain.GetLeadInOut( Proc, Chainsawing)
-- lavorazione con sega a catena
-- lavorazione con sega a catena
Chainsawing.VerticalSteps = SawPlusChain.GetVerticalSteps( Proc, Chainsawing)
local dOriginalRadialOffsetChainsawing = Chainsawing.RadialOffset
for i = Chainsawing.VerticalSteps.Count, 1, -1 do
Chainsawing.RadialOffset = dOriginalRadialOffsetChainsawing + Chainsawing.VerticalSteps.StepLength * ( i - 1)
bOk, sErr = SawPlusChain.ApplyMachining( Chainsawing, 'Chainsaw_', b3Raw)
end
return bOk, sErr
end