Files
DataWall/LuaLibs/WProcessDoubleCut.lua
T
DarioS 5da9d312d8 DataWall :
- in gestione batch TS3v7 aggiunta gestione flag per rotazione grezzo di 180deg (da parametro macchina WD.RAWPART_ROT)
- in DoubleCut passate a LapJoint si trasforma il Gruppo da 1 a 3 e da 2 a 4 (altrimenti sbaglia a ordinare le facce)
- in FreeContour e LapJoint la lavorazione CleanCorner viene sempre forzata con lato di lavoro in centro
- in LapJoint razionalizzata gestione parametri Q ed eliminta gestione forzatura lama non usatain realtà.
2023-04-17 17:40:28 +02:00

69 lines
2.6 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
---------------------------------------------------------------------
-- 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