-- WProcessCut.lua by Egaltech s.r.l. 2020/11/25 -- Gestione calcolo taglio di testa o longitudinale per Pareti -- 2023/07/26 Angolo Z minimo ora gestito tramite costante da WallData CUT_VZ_MIN (default sempre -0.5). -- Tabella per definizione modulo local WPC = {} -- Include require( 'EgtBase') local WL = require( 'WallLib') local FreeContour = require( 'WProcessFreeContour') local LapJoint = require( 'WProcessLapJoint') EgtOutLog( ' WProcessCut started', 1) -- Dati local WD = require( 'WallData') local WM = require( 'WMachiningLib') --------------------------------------------------------------------- -- Riconoscimento della feature function WPC.Identify( Proc) return ( (( Proc.Grp == 1 or Proc.Grp == 2) and Proc.Prc == 10) or (( Proc.Grp == 0 or Proc.Grp == 3 or Proc.Grp == 4) and Proc.Prc == 10)) end --------------------------------------------------------------------- -- Classificazione della feature function WPC.Classify( Proc, b3Raw) -- verifico abbia una sola faccia if Proc.Fct ~= 1 then return false end -- controllo la normale local vtN = EgtSurfTmFacetNormVersor( Proc.Id, 0, GDB_ID.ROOT) if vtN:getZ() < ( WD.CUT_VZ_MIN or - 0.5) then return false end return true end ---------------------------------------------------------------------- -- Classificazione del flip della feature per nesting -- return nFlip0, nFlip1 function WPC.FlipClassify( Proc) -- verifico abbia una sola faccia if Proc.Fct ~= 1 then return 0, 0 end -- controllo la normale local vtN = EgtSurfTmFacetNormVersor( Proc.Id, 0, GDB_ID.ROOT) local vtNZ = vtN:getZ() if vtNZ > - GEO.EPS_SMALL then nFlip0 = 100 elseif vtNZ < ( WD.CUT_VZ_MIN or - 0.5) then nFlip0 = 0 else nFlip0 = 50 end if - vtNZ > - GEO.EPS_SMALL then nFlip1 = 100 elseif - vtNZ < ( WD.CUT_VZ_MIN or - 0.5) then nFlip1 = 0 else nFlip1 = 50 end --nFlip0 = EgtIf( vtN:getZ() < -0.5, 0, 100) --nFlip1 = EgtIf( - vtN:getZ() < -0.5, 0, 100) return nFlip0, nFlip1 end --------------------------------------------------------------------- -- Applicazione della lavorazione function WPC.Make( Proc, nRawId, b3Raw) local vtN = EgtSurfTmFacetNormVersor( Proc.Id, 0, GDB_ID.ROOT) if vtN :getZ() > 0.866 then return LapJoint.Make( Proc, nRawId, b3Raw) else return FreeContour.Make( Proc, nRawId, b3Raw) end end --------------------------------------------------------------------- return WPC