76 lines
2.9 KiB
Lua
76 lines
2.9 KiB
Lua
-- WProcessDoubleCut.lua by Egaltech s.r.l. 2023/04/17
|
|
-- Gestione calcolo doppi tagli di lama per Pareti
|
|
-- 2023/04/17 Quando si chiama LapJoint si trasforma il Gruppo da 1 a 3 e da 2 a 4.
|
|
-- 2023/11/14 Aggiunta funzione IdentifyStrict per il riconoscimento della sola feature L011.
|
|
|
|
-- Tabella per definizione modulo
|
|
local WPDC = {}
|
|
|
|
-- Include
|
|
require( 'EgtBase')
|
|
local WL = require( 'WallLib')
|
|
local Cut = require( 'WProcessCut')
|
|
local LapJoint = require( 'WProcessLapJoint')
|
|
|
|
EgtOutLog( ' WProcessDoubleCut started', 1)
|
|
|
|
-- Dati
|
|
local WD = require( 'WallData')
|
|
local ML = require( 'WMachiningLib')
|
|
|
|
---------------------------------------------------------------------
|
|
-- Riconoscimento della feature
|
|
function WPDC.Identify( Proc)
|
|
return ( (( Proc.Grp == 1 or Proc.Grp == 2) and Proc.Prc == 11) or
|
|
( Proc.Grp == 0 and Proc.Prc == 12))
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Riconoscimento della sola feature L011
|
|
function WPDC.IdentifyStrict( Proc)
|
|
return ( Proc.Grp == 1 or Proc.Grp == 2) and Proc.Prc == 11
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Classificazione della feature
|
|
function WPDC.Classify( Proc, b3Raw)
|
|
-- se una faccia, uso la classificazione dei tagli singoli
|
|
if Proc.Fct == 1 then return Cut.Classify( Proc, b3Raw) end
|
|
-- se più di due facce non si fa
|
|
if Proc.Fct > 2 then return false end
|
|
-- dati delle facce
|
|
local vtN = {}
|
|
vtN[1] = EgtSurfTmFacetNormVersor( Proc.Id, 0, GDB_ID.ROOT)
|
|
vtN[2] = EgtSurfTmFacetNormVersor( Proc.Id, 1, GDB_ID.ROOT)
|
|
-- verifico se è lavorabile da sopra o di fianco
|
|
return ( vtN[1]:getZ() >= - 0.01 or vtN[2]:getZ() >= - 0.01)
|
|
end
|
|
|
|
----------------------------------------------------------------------
|
|
-- Classificazione del flip della feature per nesting
|
|
-- return nFlip0, nFlip1
|
|
function WPDC.FlipClassify( Proc)
|
|
|
|
-- se una faccia, uso la classificazione dei tagli singoli
|
|
if Proc.Fct == 1 then return Cut.FlipClassify( Proc) end
|
|
-- se due facce, uso la classificazione del lap joint a due facce
|
|
if Proc.Fct == 2 then return LapJoint.FlipClassify( Proc) end
|
|
-- se più di due facce non si fa
|
|
if Proc.Fct > 2 then return 0, 0 end
|
|
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
-- Applicazione della lavorazione
|
|
function WPDC.Make( Proc, nRawId, b3Raw)
|
|
-- se singola faccia, passo a quella lavorazione
|
|
if Proc.Fct == 1 then return Cut.Make( Proc, nRawId, b3Raw) end
|
|
-- altrimenti due facce e passo alla LapJoint
|
|
local LapProc = { PartId = Proc.PartId, Id = Proc.Id, Grp = Proc.Grp + 2, Prc = Proc.Prc, Box = Proc.Box, Fct = Proc.Fct, Flg = Proc.Flg,
|
|
Diam = Proc.Diam, Fcs = Proc.Fcs, Fce = Proc.Fce, CutId = Proc.CutId, TaskId = Proc.TaskId}
|
|
return LapJoint.Make( LapProc, nRawId, b3Raw)
|
|
end
|
|
|
|
---------------------------------------------------------------------
|
|
return WPDC
|