diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index bab79b6..337b5cc 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -43,6 +43,7 @@ -- 2023/01/31 Nelle lavorazioni in doppio aggiunta la minima distanza tra le feature. -- 2023/02/17 Ora le forature che intersecano le mortase sono sempre fatte prima della mortasa stessa. -- 2023/02/17 Nelle tasche in doppio, la distanza minima ammessa tra le feature è stata portata a 50. +-- 2023/02/20 Ora le mortase a coda di rondine laterali sono sempre fatte prima dei tagli longitudinali. -- Tabella per definizione modulo local BeamExec = {} @@ -705,6 +706,16 @@ local function OrderFeatures( vProc, b3Raw) B2.Box:getCenter():getX() > B1.Box:getMin():getX() and B2.Box:getCenter():getX() < B1.Box:getMax():getX() then return false end + -- se prima è coda di rondine e secondo taglio longitudinale, la coda di rondine va sempre prima + if DtMortise.SideIdentify(B1) and ( LongCut.Identify(B2) or Long2Cut.Identify(B2)) and + OverlapsXY( B1.Box, B2.Box) then + return true + end + -- se primo è taglio longitudinale e seconda è coda di rondine, il taglio longitudinale va sempre dopo + if ( LongCut.Identify(B1) or Long2Cut.Identify(B1)) and DtMortise.SideIdentify(B2) and + OverlapsXY( B1.Box, B2.Box) then + return false + end -- se entrambi tenoni e si intersecano, metto prima tenone vero e poi base tenone if ( Tenon.Identify( B1) or DtTenon.Identify( B1)) and ( Tenon.Identify( B2) or DtTenon.Identify( B2)) and B1.Box:getMin():getX() < B2.Box:getMax():getX() + 100 * GEO.EPS_SMALL and B2.Box:getMin():getX() < B1.Box:getMax():getX() + 100 * GEO.EPS_SMALL then