-- 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 -- se due facce si verifica solamente se le facce non sono troppo orientate verso il basso (per due facce unite sul lato lungo il check è fatto nella LapJoint) local vtN = {} vtN[1] = EgtSurfTmFacetNormVersor( Proc.Id, 0, GDB_ID.ROOT) vtN[2] = EgtSurfTmFacetNormVersor( Proc.Id, 1, GDB_ID.ROOT) local bIsMachinable = ( vtN[1]:getZ() >= ( WD.CUT_VZ_MIN or - 0.5)) and ( vtN[2]:getZ() >= ( WD.CUT_VZ_MIN or - 0.5)) return bIsMachinable 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 Proc.Grp = Proc.Grp + 2 return LapJoint.Make( Proc, nRawId, b3Raw) end --------------------------------------------------------------------- return WPDC