- a WallExec aggiunta rimozione operazioni se legate a lavorazioni specchiate

- modifiche varie per forzare sideGroove in caso la lavorazione principale sia una tasca cieca che guarda in alto
- modificata MakeMoreFaces per contemplare lavorazioni in doppio
This commit is contained in:
luca.mazzoleni
2023-08-04 18:57:04 +02:00
parent 57ed0d934f
commit 5ff950015e
2 changed files with 76 additions and 21 deletions
+40 -2
View File
@@ -673,6 +673,7 @@ local function SetMirroredFeatures( vProc, b3Raw)
local nMirrorId
local dYMirrorAx
local dDeltaZ
local bIsMirrorTowardsBottom = false
for j = 1, #vProc do
local ProcMirror = vProc[j]
if ProcMirror.TopologyLongName == Proc.TopologyLongName and ProcMirror.Id ~= Proc.Id and ProcMirror.Flg ~= 0 then
@@ -709,6 +710,7 @@ local function SetMirroredFeatures( vProc, b3Raw)
local ptOnMirrorAx = ( Proc.Box:getCenter() + ProcMirror.Box:getCenter()) / 2
dYMirrorAx = ptOnMirrorAx:getY() - b3Tab:getMin():getY()
dDeltaZ = ProcMirror.Box:getMax():getZ() - Proc.Box:getMax():getZ()
bIsMirrorTowardsBottom = ProcMirror.AffectedFaces.Bottom
end
end
end
@@ -721,6 +723,11 @@ local function SetMirroredFeatures( vProc, b3Raw)
Proc.MirrorAx = dYMirrorAx
-- Offset Z tra le feature
Proc.MirrorDeltaZ = dDeltaZ
-- se sono groove cieche e la principale guarda su e l'altra guarda giù, la principale va trattata come sidegroove in accordo con la seconda
if ( Proc.TopologyLongName == 'Groove-Blind-RightAngles-Parallel-3' or Proc.TopologyLongName == 'Groove-Blind-RightAngles-Parallel-4') and
Proc.AffectedFaces.Top and bIsMirrorTowardsBottom then
Proc.Stype = 2
end
end
end
@@ -783,7 +790,7 @@ function WallExec.ProcessFeatures()
else
table.insert( Stats, {Err=0, Msg='', Rot=0, CutId=Proc.CutId, TaskId=Proc.TaskId})
end
elseif not Proc.Double then
elseif not Proc.Double then
local sMsg = 'Feature not machinable by orientation'
table.insert( Stats, {Err=1, Msg=sMsg, Rot=0, CutId=Proc.CutId, TaskId=Proc.TaskId})
end
@@ -795,7 +802,38 @@ function WallExec.ProcessFeatures()
-- ELIMINAZIONE LAVORAZIONI MIRROR IN BASE A SETTAGGIO MACHININGTODELETE IN PROC
-- VERIFICA E UPDATE NOTE PER LAVORAZIONI IN CUI SI CONTROLLA SE I PERCORSI SONO SPECCHIATI
-------
-- setto quali sono le lavorazioni da disattivare perchè specchiate di lavorazioni in doppio
local vProcToDisable = {}
for i = 1, #vProc do
local Proc = vProc[i]
if Proc.Double and Proc.Double > 0 then
for j = 1, #vProc do
local ProcMirror = vProc[j]
if Proc.MirrorId == ProcMirror.Id then
table.insert( vProcToDisable, ProcMirror.Id)
end
end
end
end
-- cancello le operazioni legate a lavorazioni specchiate
local nOperId = EgtGetNextOperation( EgtGetPhaseDisposition( 1))
while nOperId do
EgtSetCurrMachining( nOperId)
local nOperationProcIds = EgtGetMachiningGeometry()
local nOperationProcId = EgtIf( #nOperationProcIds[1] > 1, nOperationProcIds[1][1], nOperationProcIds[1])
local nCurrentOperId = nOperId
for i = 1, #vProcToDisable do
local ProcId = vProcToDisable[i]
if nOperationProcId == ProcId then
nOperId = EgtGetNextOperation( nOperId)
EgtRemoveOperation(nCurrentOperId)
break
end
end
if nCurrentOperId == nOperId then
nOperId = EgtGetNextOperation( nOperId)
end
end
-- se macchina pareti
if not WD.BEAM_MACHINE then
-- riordino le lavorazioni tra tutti i pezzi