- in SawPlusChain implementata sega a catena, da testare
This commit is contained in:
+110
-48
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user