diff --git a/LuaLibs/BeamExec.lua b/LuaLibs/BeamExec.lua index bb9c72b..92ba580 100644 --- a/LuaLibs/BeamExec.lua +++ b/LuaLibs/BeamExec.lua @@ -991,12 +991,12 @@ local function OrderFeatures( vProc, b3Raw, nPartId) if abs( B2.Box:getDimX() - b3Raw:getDimX()) < 0.2 * b3Raw:getDimX() then return not ( B1.Tail or B2.Box:getMin():getX() + 20 > B1.Box:getCenter():getX()) end - -- se primo è foro e l'altro no, lo penalizzo - if Drill.Identify(B1) and not Drill.Identify(B2) then - return ( B1.Box:getCenter():getX() > B2.Box:getMax():getX() + dDrillPenalty) + -- se primo è foro e l'altro no, lo penalizzo (a patto che il foro non attraversi nessuna feature) + if Drill.Identify(B1) and not B1.Dependency and not Drill.Identify(B2) then + return ( B1.Box:getCenter():getX() > B2.Box:getMax():getX() + dDrillPenalty) end - -- se primo è altro e secondo è foro, lo premio - if not Drill.Identify(B1) and Drill.Identify(B2) then + -- se primo è altro e secondo è foro, lo premio (a patto che il foro non attraversi nessuna feature) + if not Drill.Identify(B1) and not B2.Dependency and Drill.Identify(B2) then return ( B1.Box:getMax():getX() + dDrillPenalty > B2.Box:getCenter():getX()) end -- se prima è mortasa coda di rondine sul fianco e secondo taglio longitudinale, la coda di rondine va sempre prima