- in SawPlusChain nei messaggi si scrive il FeatureId invece di TaskId
- commenti e piccole correzioni
This commit is contained in:
+22
-19
@@ -101,6 +101,7 @@
|
||||
-- 2024/03/04 Implementato attacco esterno se tasca 4 facce sulla coda ma nessun pezzo successivo.
|
||||
-- 2024/03/15 Correzione a calcolo ingombro per feature basse e lunghe dalla testa.
|
||||
-- 2024/04/02 In ForceSideMill escluso caso 4 facce senza possibilità di ingresso lungo Y.
|
||||
-- 2024/04/11 Aggiunta strategia SawPlusChain per lavorazione tasche con lama + sega a catena opzionale. Attivata con Q11.
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
local ProcessLapJoint = {}
|
||||
@@ -4606,10 +4607,11 @@ function SawPlusChain.IsTopologyOk( Proc)
|
||||
if Proc.TopologyLongName == 'Pocket-Blind-RightAngles-Parallel-5' or
|
||||
Proc.TopologyLongName == 'Groove-Through-RightAngles-Parallel-3' or
|
||||
Proc.TopologyLongName == 'Groove-Blind-RightAngles-Parallel-4' then
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -4776,7 +4778,7 @@ end
|
||||
|
||||
|
||||
function SawPlusChain.CalculateLeadInOut( Proc, Machining)
|
||||
-- TODO qui saranno da implementare le funzioni di Tool Collision Avoidance (vedi wiki e FacesBysaw -> CalcLeadInOutPerpGeom)
|
||||
-- TODO implementare le funzioni di Tool Collision Avoidance (vedi wiki e FacesBysaw -> CalcLeadInOutPerpGeom)
|
||||
|
||||
-- si determina se l'inizio o la fine della lavorazione sono chiusi e l'eventuale riduzione da applicare
|
||||
local bIsStartClosed = false
|
||||
@@ -4944,6 +4946,7 @@ end
|
||||
|
||||
|
||||
function SawPlusChain.Saw.GetSCC( vtMachiningDirection)
|
||||
-- TODO implementare SCC come per FacesBySaw
|
||||
local nSCC = MCH_SCC.NONE
|
||||
if AreSameVectorApprox( vtMachiningDirection, Z_AX()) then
|
||||
nSCC = MCH_SCC.ADIR_ZP
|
||||
@@ -4972,7 +4975,7 @@ function SawPlusChain.Saw.CalculateMachiningParameters( Proc)
|
||||
-- ricerca lavorazione
|
||||
Cutting.Name = ML.FindCutting( 'HeadSide', true, false)
|
||||
if not Cutting.Name then
|
||||
Cutting.Message = 'Feature '.. Proc.TaskId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - saw blade not found'
|
||||
Cutting.Message = 'Feature '.. Proc.FeatureId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - saw blade not found'
|
||||
Cutting.CanApply = false
|
||||
EgtOutLog( Cutting.Message)
|
||||
return Cutting
|
||||
@@ -4984,7 +4987,7 @@ function SawPlusChain.Saw.CalculateMachiningParameters( Proc)
|
||||
-- verifica dimensioni tasca compatibili
|
||||
-- se tasca meno spessa della lama la strategia non è applicabile
|
||||
if Cutting.Tool.Thickness > Proc.Pocket.Height - 10 * GEO.EPS_SMALL then
|
||||
Cutting.Message = 'Feature '.. Proc.TaskId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - pocket too narrow for saw blade thickness'
|
||||
Cutting.Message = 'Feature '.. Proc.FeatureId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - pocket too narrow for saw blade thickness'
|
||||
Cutting.CanApply = false
|
||||
EgtOutLog( Cutting.Message)
|
||||
return Cutting
|
||||
@@ -4992,7 +4995,7 @@ function SawPlusChain.Saw.CalculateMachiningParameters( Proc)
|
||||
if #( Proc.Pocket.SideFaces) > 1 then
|
||||
-- se tasca più stretta della lama la strategia non è applicabile
|
||||
if Cutting.Tool.Diameter > Proc.Pocket.Width - 10 * GEO.EPS_SMALL then
|
||||
Cutting.Message = 'Feature '.. Proc.TaskId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - pocket too narrow for saw blade diameter'
|
||||
Cutting.Message = 'Feature '.. Proc.FeatureId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - pocket too narrow for saw blade diameter'
|
||||
Cutting.CanApply = false
|
||||
EgtOutLog( Cutting.Message)
|
||||
return Cutting
|
||||
@@ -5025,7 +5028,7 @@ function SawPlusChain.Saw.CalculateMachiningParameters( Proc)
|
||||
Cutting.Depth = Cutting.Tool.MaxDepth
|
||||
Cutting.RadialOffset = Proc.Pocket.Depth - Cutting.Depth
|
||||
if Proc.Pocket.ApplyOnlySawblade then
|
||||
Cutting.Message = 'Feature '.. Proc.TaskId .. ' : sawblade elevation (' .. EgtNumToString( Proc.Pocket.Depth, 1) .. ') bigger than max tool depth (' .. EgtNumToString( Cutting.Depth, 1) .. ')'
|
||||
Cutting.Message = 'Feature '.. Proc.FeatureId .. ' : sawblade elevation (' .. EgtNumToString( Proc.Pocket.Depth, 1) .. ') bigger than max tool depth (' .. EgtNumToString( Cutting.Depth, 1) .. ')'
|
||||
EgtOutLog( Cutting.Message)
|
||||
end
|
||||
end
|
||||
@@ -5068,7 +5071,7 @@ function SawPlusChain.Saw.CalculateMachiningParameters( Proc)
|
||||
-- eventuale avviso di danneggiamento pezzo successivo
|
||||
local dOffsideLength = max( Cutting.LeadIn.StartAddLength, Cutting.LeadOut.EndAddLength) + Cutting.Tool.Diameter / 2 + 10 * GEO.EPS_SMALL
|
||||
if ( not Proc.Tail or Proc.AdvTail) and Proc.AffectedFaces.Left and ( Proc.Pocket.DistanceToNextPart < dOffsideLength) then
|
||||
local sDamageNextPieceMessage = 'Feature '.. Proc.TaskId .. ' : sawblade can damage next piece.'
|
||||
local sDamageNextPieceMessage = 'Feature '.. Proc.FeatureId .. ' : sawblade can damage next piece.'
|
||||
if #Cutting.Message > 0 then
|
||||
Cutting.Message = Cutting.Message .. '\n' .. sDamageNextPieceMessage
|
||||
else
|
||||
@@ -5093,7 +5096,7 @@ function SawPlusChain.Chainsaw.CalculateMachiningParameters( Proc)
|
||||
Chainsawing.Name = ML.FindSawing( 'Sawing', nil, nil, 'Longest')
|
||||
end
|
||||
if not Chainsawing.Name then
|
||||
Chainsawing.Message = 'Feature '.. Proc.TaskId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - chainsaw not found'
|
||||
Chainsawing.Message = 'Feature '.. Proc.FeatureId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - chainsaw not found'
|
||||
Chainsawing.CanApply = false
|
||||
EgtOutLog( Chainsawing.Message)
|
||||
return Chainsawing
|
||||
@@ -5105,7 +5108,7 @@ function SawPlusChain.Chainsaw.CalculateMachiningParameters( Proc)
|
||||
-- verifica dimensioni tasca compatibili
|
||||
-- se tasca meno spessa della sega a catena la strategia non è applicabile
|
||||
if Chainsawing.Tool.Thickness > Proc.Pocket.Height - 10 * GEO.EPS_SMALL then
|
||||
Chainsawing.Message = 'Feature '.. Proc.TaskId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - pocket too narrow for chainsaw thickness'
|
||||
Chainsawing.Message = 'Feature '.. Proc.FeatureId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - pocket too narrow for chainsaw thickness'
|
||||
Chainsawing.CanApply = false
|
||||
EgtOutLog( Chainsawing.Message)
|
||||
return Chainsawing
|
||||
@@ -5113,7 +5116,7 @@ function SawPlusChain.Chainsaw.CalculateMachiningParameters( Proc)
|
||||
if #( Proc.Pocket.SideFaces) > 1 then
|
||||
-- se tasca più stretta della sega a catena la strategia non è applicabile
|
||||
if Chainsawing.Tool.Width > Proc.Pocket.Width - 10 * GEO.EPS_SMALL then
|
||||
Chainsawing.Message = 'Feature '.. Proc.TaskId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - pocket too narrow for chainsaw width'
|
||||
Chainsawing.Message = 'Feature '.. Proc.FeatureId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - pocket too narrow for chainsaw width'
|
||||
Chainsawing.CanApply = false
|
||||
EgtOutLog( Chainsawing.Message)
|
||||
return Chainsawing
|
||||
@@ -5139,7 +5142,7 @@ function SawPlusChain.Chainsaw.CalculateMachiningParameters( Proc)
|
||||
else
|
||||
Chainsawing.Depth = Chainsawing.Tool.MaxMat
|
||||
Chainsawing.LongitudinalOffset = Proc.Pocket.Depth - Chainsawing.Depth
|
||||
Chainsawing.Message = 'Feature '.. Proc.TaskId .. ' : chainsaw elevation (' .. EgtNumToString( Proc.Pocket.Depth, 1) .. ') bigger than max tool depth (' .. EgtNumToString( Chainsawing.Depth, 1) .. ')'
|
||||
Chainsawing.Message = 'Feature '.. Proc.FeatureId .. ' : chainsaw elevation (' .. EgtNumToString( Proc.Pocket.Depth, 1) .. ') bigger than max tool depth (' .. EgtNumToString( Chainsawing.Depth, 1) .. ')'
|
||||
EgtOutLog( Chainsawing.Message)
|
||||
end
|
||||
-- offset radiale
|
||||
@@ -5167,7 +5170,7 @@ function SawPlusChain.Chainsaw.CalculateMachiningParameters( Proc)
|
||||
-- eventuale avviso di danneggiamento pezzo successivo
|
||||
local dOffsideLength = max( Chainsawing.LeadIn.StartAddLength, Chainsawing.LeadOut.EndAddLength) + Chainsawing.Tool.Width / 2 + 10 * GEO.EPS_SMALL
|
||||
if ( not Proc.Tail or Proc.AdvTail) and Proc.AffectedFaces.Left and ( Proc.Pocket.DistanceToNextPart < dOffsideLength) then
|
||||
local sDamageNextPieceMessage = 'Feature '.. Proc.TaskId .. ' : chainsaw can damage next piece.'
|
||||
local sDamageNextPieceMessage = 'Feature '.. Proc.FeatureId .. ' : chainsaw can damage next piece.'
|
||||
if #Chainsawing.Message > 0 then
|
||||
Chainsawing.Message = Chainsawing.Message .. '\n' .. sDamageNextPieceMessage
|
||||
else
|
||||
@@ -5188,13 +5191,13 @@ function SawPlusChain.Make( Proc, nRawId, nPhase, bOnlySaw)
|
||||
|
||||
-- TODO per implementare la strategia con lapjoint lunghe bisogna prima riconoscere le topologie che arrivano
|
||||
if Proc.IsSplittedLapJoint then
|
||||
local sErr = 'Feature '.. Proc.TaskId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not implemented for long lapjoint '
|
||||
local sErr = 'Feature '.. Proc.FeatureId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not implemented for long lapjoint'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
|
||||
if not SawPlusChain.IsTopologyOk( Proc) then
|
||||
local sErr = 'Feature '.. Proc.TaskId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not implemented for topology ' .. Proc.TopologyLongName
|
||||
local sErr = 'Feature '.. Proc.FeatureId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not implemented'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
@@ -5202,7 +5205,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 and ( Proc.Fct > 3 or not Proc.AffectedFaces.Top) then
|
||||
local sErr = 'Feature '.. Proc.TaskId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - pocket on bottom face'
|
||||
local sErr = 'Feature '.. Proc.FeatureId .. ' : strategy ' .. Proc.Pocket.Strategy .. ' not applicable - pocket on bottom face'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
end
|
||||
@@ -6494,7 +6497,7 @@ local function MakeLongMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead)
|
||||
for i = 1, #vAddId do
|
||||
local b3Box = EgtGetBBoxGlob( vAddId[i], GDB_BB.STANDARD)
|
||||
local nFct = EgtSurfTmFacetCount( vAddId[i])
|
||||
local AddProc = { Id = vAddId[i], Grp = Proc.Grp, Prc = Proc.Prc, Box = b3Box, TotBox = Proc.Box, Fct = nFct, Flg = Proc.Flg, PartId = Proc.PartId, TaskId = Proc.TaskId, IsSplittedLapJoint = true}
|
||||
local AddProc = { Id = vAddId[i], Grp = Proc.Grp, Prc = Proc.Prc, Box = b3Box, TotBox = Proc.Box, Fct = nFct, Flg = Proc.Flg, PartId = Proc.PartId, TaskId = Proc.TaskId, FeatureId = Proc.FeatureId, IsSplittedLapJoint = true}
|
||||
Topology.Classify( AddProc, b3Raw)
|
||||
-- lasciare il false nel sesto parametro (perchè internamente viene verificato se diverso da nil)
|
||||
local bOk, sMyWarn
|
||||
|
||||
Reference in New Issue
Block a user