-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:
luca.mazzoleni
2024-04-08 15:26:49 +02:00
parent bfaeb8e414
commit 37026c548d
+47 -18
View File
@@ -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