-in SawPlusChain migliorata gestione nome lavorazione
- in SawPlusChain aggiunti angoli alternativi sega a catena - in SawPlusChain incluso caso 3 facce con fondo che non guarda verso il basso
This commit is contained in:
+47
-18
@@ -4593,7 +4593,7 @@ end
|
||||
-- 4 facce con faccia di fondo grande: la faccia da lavorare è piccola (3 adj) e le facce laterali sono le due piccole
|
||||
-- 3 facce: la faccia di fondo è il fondo della tasca, la faccia da lavorare è grande, non ci sono facce laterali
|
||||
|
||||
-- TODO: gestione messaggi in funzione apposita ( almeno per append)
|
||||
-- TODO gestione messaggi in funzione apposita (almeno per append)
|
||||
|
||||
local SawPlusChain = {}
|
||||
SawPlusChain.Saw = {}
|
||||
@@ -4856,12 +4856,11 @@ function SawPlusChain.CalculateLeadInOut( Proc, Machining)
|
||||
end
|
||||
|
||||
|
||||
function SawPlusChain.ApplyMachining( Machining, sOperationNamePrefix, b3Raw)
|
||||
function SawPlusChain.ApplyMachining( Machining, b3Raw)
|
||||
local sErr = ''
|
||||
local sOperationName = sOperationNamePrefix .. ( EgtGetName( Machining.ProcId) or tostring( Machining.ProcId)) .. '_' .. tostring( Machining.FaceToMachine.Id + 1)
|
||||
local nOperationId = EgtAddMachining( sOperationName, Machining.Name)
|
||||
local nOperationId = EgtAddMachining( Machining.OperationName, Machining.Name)
|
||||
if not nOperationId then
|
||||
sErr = 'Error adding machining ' .. sOperationName .. '-' .. Machining.Name
|
||||
sErr = 'Error adding machining ' .. Machining.OperationName .. '-' .. Machining.Name
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
@@ -4899,8 +4898,8 @@ function SawPlusChain.ApplyMachining( Machining, sOperationNamePrefix, b3Raw)
|
||||
end
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, BL.GetBlockedAxis( Machining.Name, Machining.BlockedAxis.Orientation, b3Raw, Machining.FaceToMachine.VtN, Machining.BlockedAxis.VtOut))
|
||||
EgtSetMachiningParam( MCH_MP.INITANGS, BL.GetChainSawInitAngs( Machining.FaceToMachine.VtN, Machining.Direction, Machining.SuggestedAngles.Index))
|
||||
EgtSetMachiningParam( MCH_MP.OVERL, Machining.Overlap)
|
||||
EgtSetMachiningParam( MCH_MP.INITANGS, Machining.SuggestedAngles)
|
||||
EgtSetMachiningParam( MCH_MP.STARTPOS, max( Machining.StartSafetyLength, EgtGetMachiningParam( MCH_MP.STARTPOS)))
|
||||
if Machining.MaxElev then
|
||||
sUserNotes = EgtSetValInNotes( sUserNotes, 'MaxElev', Machining.MaxElev)
|
||||
@@ -4909,9 +4908,31 @@ function SawPlusChain.ApplyMachining( Machining, sOperationNamePrefix, b3Raw)
|
||||
|
||||
local bIsApplyOk = ML.ApplyMachining( true, false)
|
||||
if not bIsApplyOk then
|
||||
sErr = EgtGetLastMachMgrError()
|
||||
EgtSetOperationMode( nOperationId, false)
|
||||
return false, sErr
|
||||
local nErr
|
||||
nErr, sErr = EgtGetLastMachMgrError()
|
||||
-- se mortasatura e l'errore è compatibile (Axes values not calculable) si prova con l'altra configurazione dell'asse bloccato
|
||||
-- TODO valutare se c'è modo di capire preventivamente la configurazione dell'asse bloccato e quindi rimuovere questa parte di codice
|
||||
if Machining.Type == MCH_OY.MORTISING and nErr == 2507 then
|
||||
if Machining.BlockedAxis.Orientation == 'perpendicular' then
|
||||
Machining.BlockedAxis.Orientation = 'parallel'
|
||||
else
|
||||
Machining.BlockedAxis.Orientation = 'perpendicular'
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.BLOCKEDAXIS, BL.GetBlockedAxis( Machining.Name, Machining.BlockedAxis.Orientation, b3Raw, Machining.FaceToMachine.VtN, Machining.BlockedAxis.VtOut))
|
||||
if Machining.SuggestedAngles.Index == 1 then
|
||||
Machining.SuggestedAngles.Index = 2
|
||||
else
|
||||
Machining.SuggestedAngles.Index = 1
|
||||
end
|
||||
EgtSetMachiningParam( MCH_MP.INITANGS, BL.GetChainSawInitAngs( Machining.FaceToMachine.VtN, Machining.Direction, Machining.SuggestedAngles.Index))
|
||||
sErr = ''
|
||||
bIsApplyOk = ML.ApplyMachining( true, false)
|
||||
end
|
||||
if not bIsApplyOk then
|
||||
nErr, sErr = EgtGetLastMachMgrError()
|
||||
EgtSetOperationMode( nOperationId, false)
|
||||
return false, sErr
|
||||
end
|
||||
end
|
||||
|
||||
return true, sErr
|
||||
@@ -4975,6 +4996,8 @@ function SawPlusChain.Saw.CalculateMachiningParameters( Proc)
|
||||
end
|
||||
|
||||
-- parametri della lavorazione
|
||||
-- direzione utensile
|
||||
Cutting.Direction = Proc.Pocket.Direction
|
||||
-- lato di lavoro e inversioni
|
||||
if Cutting.Tool.IsCCW then
|
||||
Cutting.Workside = MCH_MILL_WS.RIGHT
|
||||
@@ -5012,9 +5035,9 @@ function SawPlusChain.Saw.CalculateMachiningParameters( Proc)
|
||||
-- overlap
|
||||
Cutting.Overlap = 0
|
||||
-- faceuse
|
||||
Cutting.Faceuse = BL.GetNearestOrthoOpposite( Proc.Pocket.Direction)
|
||||
Cutting.Faceuse = BL.GetNearestOrthoOpposite( Cutting.Direction)
|
||||
-- SCC
|
||||
Cutting.SCC = SawPlusChain.Saw.GetSCC( Proc.Pocket.Direction)
|
||||
Cutting.SCC = SawPlusChain.Saw.GetSCC( Cutting.Direction)
|
||||
-- angoli suggeriti
|
||||
Cutting.SuggestedAngles = ''
|
||||
-- asse bloccato
|
||||
@@ -5031,6 +5054,8 @@ function SawPlusChain.Saw.CalculateMachiningParameters( Proc)
|
||||
Cutting.HorizontalSteps.Count = 1
|
||||
Cutting.HorizontalSteps.StepLength = 0
|
||||
end
|
||||
-- nome operazione
|
||||
Cutting.OperationName = 'Cut_' .. ( EgtGetName( Cutting.ProcId) or tostring( Cutting.ProcId)) .. '_' .. tostring( Cutting.FaceToMachine.Id + 1)
|
||||
|
||||
-- eventuale avviso di danneggiamento pezzo successivo
|
||||
local dOffsideLength = max( Cutting.LeadIn.StartAddLength, Cutting.LeadOut.EndAddLength) + Cutting.Tool.Diameter / 2 + 10 * GEO.EPS_SMALL
|
||||
@@ -5085,6 +5110,8 @@ function SawPlusChain.Chainsaw.CalculateMachiningParameters( Proc)
|
||||
end
|
||||
|
||||
-- parametri della lavorazione
|
||||
-- direzione utensile
|
||||
Chainsawing.Direction = Proc.Pocket.Direction
|
||||
-- lato di lavoro e inversioni
|
||||
if Chainsawing.Tool.IsCCW then
|
||||
Chainsawing.Workside = MCH_MILL_WS.RIGHT
|
||||
@@ -5110,18 +5137,20 @@ function SawPlusChain.Chainsaw.CalculateMachiningParameters( Proc)
|
||||
-- overlap
|
||||
Chainsawing.Overlap = 0
|
||||
-- faceuse
|
||||
Chainsawing.Faceuse = BL.GetNearestParalOpposite( Proc.Pocket.Direction)
|
||||
Chainsawing.Faceuse = BL.GetNearestParalOpposite( Chainsawing.Direction)
|
||||
-- SCC
|
||||
Chainsawing.SCC = MCH_SCC.NONE
|
||||
-- angoli suggeriti
|
||||
Chainsawing.SuggestedAngles = ''
|
||||
-- asse bloccato
|
||||
-- asse bloccato e angoli suggeriti
|
||||
Chainsawing.BlockedAxis = {}
|
||||
Chainsawing.BlockedAxis.Orientation = 'perpendicular'
|
||||
Chainsawing.SuggestedAngles = {}
|
||||
Chainsawing.SuggestedAngles.Index = 1
|
||||
-- approccio e retrazione
|
||||
Chainsawing.LeadIn, Chainsawing.LeadOut = SawPlusChain.CalculateLeadInOut( Proc, Chainsawing)
|
||||
-- eventuale step verticale
|
||||
Chainsawing.VerticalSteps = SawPlusChain.GetVerticalSteps( Proc, Chainsawing)
|
||||
-- nome operazione
|
||||
Chainsawing.OperationName = 'Chainsaw_' .. ( EgtGetName( Chainsawing.ProcId) or tostring( Chainsawing.ProcId)) .. '_' .. tostring( Chainsawing.FaceToMachine.Id + 1)
|
||||
|
||||
-- eventuale avviso di danneggiamento pezzo successivo
|
||||
local dOffsideLength = max( Chainsawing.LeadIn.StartAddLength, Chainsawing.LeadOut.EndAddLength) + Chainsawing.Tool.Width / 2 + 10 * GEO.EPS_SMALL
|
||||
@@ -5151,7 +5180,7 @@ function SawPlusChain.Make( Proc, nRawId, nPhase, bOnlySaw)
|
||||
|
||||
-- se tasca su faccia sotto la strategia non è applicabile (la sega a catena in generale non può lavorare da sotto)
|
||||
-- TODO se OnlySaw questo test è da rimuovere ma bisogna considerare anche la lama da sotto
|
||||
if Proc.AffectedFaces.Bottom then
|
||||
if Proc.AffectedFaces.Bottom and ( Proc.Fct > 3 or not Proc.AffectedFaces.Top) then
|
||||
local sErr = 'Feature '.. Proc.FeatureId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - pocket on bottom face'
|
||||
return false, sErr
|
||||
end
|
||||
@@ -5182,7 +5211,7 @@ function SawPlusChain.Make( Proc, nRawId, nPhase, bOnlySaw)
|
||||
Cutting.LeadIn.PerpDistance = dOriginalLeadInPerpDistance - Cutting.RadialOffset
|
||||
Cutting.LeadOut.PerpDistance = dOriginalLeadOutPerpDistance - Cutting.RadialOffset
|
||||
-- applicazione lavorazione
|
||||
bIsCuttingOk, sCuttingApplyMessage = SawPlusChain.ApplyMachining( Cutting, 'Cut_', b3Raw)
|
||||
bIsCuttingOk, sCuttingApplyMessage = SawPlusChain.ApplyMachining( Cutting, b3Raw)
|
||||
-- update messaggi
|
||||
if sCuttingApplyMessage and #sCuttingApplyMessage > 0 then
|
||||
Cutting.Message = Cutting.Message .. 'Apply : ' .. sCuttingApplyMessage .. '\n'
|
||||
@@ -5212,7 +5241,7 @@ function SawPlusChain.Make( Proc, nRawId, nPhase, bOnlySaw)
|
||||
for i = Chainsawing.VerticalSteps.Count, 1, -1 do
|
||||
Chainsawing.RadialOffset = dOriginalRadialOffsetChainsawing + Chainsawing.VerticalSteps.StepLength * ( i - 1)
|
||||
-- applicazione lavorazione
|
||||
bIsChainsawingOk, sChainsawingApplyMessage = SawPlusChain.ApplyMachining( Chainsawing, 'Chainsaw_', b3Raw)
|
||||
bIsChainsawingOk, sChainsawingApplyMessage = SawPlusChain.ApplyMachining( Chainsawing, b3Raw)
|
||||
-- update messaggi
|
||||
if sChainsawingApplyMessage and #sChainsawingApplyMessage > 0 then
|
||||
Chainsawing.Message = Chainsawing.Message .. '\n' .. 'Apply : ' .. sChainsawingApplyMessage
|
||||
|
||||
Reference in New Issue
Block a user