82 lines
2.5 KiB
Lua
82 lines
2.5 KiB
Lua
-- 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
|