Files
DataWall/LuaLibs/WProcessDoubleCut.lua
T
luca.mazzoleni 1236d196ba - TestElleShape 3 e 4 spostati in WallLib
- a DoubleCut aggiunto riconoscimento della sola L011
- in WallLib aggiunta funzione GetProcessAffectedFaces che restituisce le facce del grezzo interessate dalla feature
- in WallExec aggiunte alle Proc informazioni sulle facce della feature
- alcune modifiche iniziali per Mirror
2023-06-20 09:35:25 +02:00

75 lines
2.8 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.
-- 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