From 005bb0a384994dcdb72844c06d53d46f4200df8e Mon Sep 17 00:00:00 2001 From: "andrea.villa" Date: Mon, 26 Feb 2024 09:42:58 +0100 Subject: [PATCH] Migliorata 'CompareFeatures' per ordine lavorazioni --- LuaLibs/BeamExec.lua | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index 93bd6f6..87919e4 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -53,6 +53,7 @@ -- 2023/11/08 Aggiunta gestione processi Variant. -- 2023/11/30 Migliorato il calcolo elevazione con l'utilizzo della nuova funzione EgtSurfTmFacetElevationInBBox. -- 2023/12/26 Modifiche per centrare i pezzi in Y sulla tavola. +-- 2024/02/26 Migliorata 'CompareFeatures' per ordine lavorazioni -- Tabella per definizione modulo local BeamExec = {} @@ -789,6 +790,14 @@ local function OrderFeatures( vProc, b3Raw) if B1.Head ~= B2.Head then return B1.Head end + -- se entrambi di testa e intersecano stesse facce e primo è scasso a due facce e secondo è un profilo caudato, lo scasso è una riduzione e va fatto prima + if ( ( B1.Head and B2.Head) or ( B1.Tail and B2.Tail)) and ( LapJoint.Identify( B1) and B1.Fct == 2) and ( ProfCamb.Identify( B2)) then + return true + end + -- se entrambi di testa e intersecano stesse facce e primo è un profilo caudato e secondo è scasso a due facce, lo scasso è una riduzione e va lasciato dopo + if ( ( B1.Head and B2.Head) or ( B1.Tail and B2.Tail)) and ( LapJoint.Identify( B2) and B2.Fct == 2) and ( ProfCamb.Identify( B1)) then + return false + end -- se entrambi di testa e primo è scasso o mortasa e secondo no va messo dopo if B1.Head and B2.Head and ( LapJoint.Identify( B1) or Mortise.Identify( B1) or DtMortise.Identify( B1)) and not ( LapJoint.Identify( B2) or Mortise.Identify( B2) or DtMortise.Identify( B2)) then @@ -817,14 +826,22 @@ local function OrderFeatures( vProc, b3Raw) end -- se primo è scasso o mortasa di coda e secondo no, sempre dopo if B1.Tail and ( LapJoint.Identify( B1) or Mortise.Identify( B1) or DtMortise.Identify( B1)) and - not ( B2.Tail and ( LapJoint.Identify( B2) or Mortise.Identify( B2) or DtMortise.Identify( B2))) then + not B2.Tail and ( ( LapJoint.Identify( B2) or Mortise.Identify( B2) or DtMortise.Identify( B2))) then return false end -- se secondo è scasso o mortasa di coda e primo no, va lasciato dopo if B2.Tail and ( LapJoint.Identify( B2) or Mortise.Identify( B2) or DtMortise.Identify( B2)) and - not ( B1.Tail and ( LapJoint.Identify( B1) or Mortise.Identify( B1) or DtMortise.Identify( B1))) then + not B1.Tail and ( ( LapJoint.Identify( B1) or Mortise.Identify( B1) or DtMortise.Identify( B1))) then return true end + -- se entrambi di coda e il primo è una feature taglio di lama e il secondo no, feature taglio lama sempre prima + if B1.Tail and B2.Tail and ( B1.Prc == 10 or B1.Prc == 11) and ( B2.Prc ~= 10 and B2.Prc ~= 11) then + return true + end + -- se entrambi di coda e il secondo è una feature taglio di lama e il primo no, feature taglio lama sempre prima + if B1.Tail and B2.Tail and ( B2.Prc == 10 or B2.Prc == 11) and ( B1.Prc ~= 10 and B1.Prc ~= 11) then + return false + end -- se primo è taglio longitudinale completo o altra lav. lunga, dopo tutte le altre feature non di coda if abs( B1.Box:getDimX() - b3Raw:getDimX()) < 0.2 * b3Raw:getDimX() then -- se anche l'altra è lunga, faccio prima quello piccolo in YZ