-- 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 --------------------------------------------------------------------- -- 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