DataBeam :
- aggiunta gestione ingombri di testa o coda per tagli doppi generici con lama.
This commit is contained in:
+21
-21
@@ -1,4 +1,4 @@
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2019/08/29
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2019/09/09
|
||||
-- Gestione calcolo mezzo-legno per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
@@ -207,15 +207,15 @@ local function MakeTwoFacesByMill( Proc, nPhase, nRawId, nPartId)
|
||||
-- dati delle facce
|
||||
local ptC = {}
|
||||
local vtN = {}
|
||||
ptC[0], vtN[0] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
ptC[1], vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT)
|
||||
ptC[1], vtN[1] = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
ptC[2], vtN[2] = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT)
|
||||
-- dati medi
|
||||
local ptM = ( ptC[0] + ptC[1]) / 2
|
||||
local ptM = ( ptC[1] + ptC[2]) / 2
|
||||
-- verifico non siano orientate verso il basso
|
||||
local bFaceOk = {}
|
||||
bFaceOk[0] = ( vtN[0]:getZ() >= BD.NZ_MINB)
|
||||
bFaceOk[1] = ( vtN[1]:getZ() >= BD.NZ_MINB)
|
||||
if not bFaceOk[0] and not bFaceOk[1] then
|
||||
bFaceOk[2] = ( vtN[2]:getZ() >= BD.NZ_MINB)
|
||||
if not bFaceOk[1] and not bFaceOk[2] then
|
||||
local sErr = 'Error on process ' .. tostring( Proc.Id) .. ' LapJoint from bottom impossible'
|
||||
EgtOutLog( sErr)
|
||||
return false, sErr
|
||||
@@ -223,29 +223,29 @@ local function MakeTwoFacesByMill( Proc, nPhase, nRawId, nPartId)
|
||||
-- scelta faccia da lavorare
|
||||
local nFacInd
|
||||
-- se entrambe possibili
|
||||
if bFaceOk[0] and bFaceOk[1] then
|
||||
if bFaceOk[1] and bFaceOk[2] then
|
||||
-- se in testa o coda, scelgo quella con la normale più parallela all'asse trave
|
||||
if Proc.Head or Proc.Tail then
|
||||
if vtN[0]:getZ() < BD.NZ_MINA then
|
||||
if vtN[1]:getZ() < BD.NZ_MINA then
|
||||
nFacInd = 1
|
||||
elseif vtN[1]:getZ() < BD.NZ_MINA then
|
||||
elseif vtN[2]:getZ() < BD.NZ_MINA then
|
||||
nFacInd = 0
|
||||
else
|
||||
nFacInd = EgtIf( abs( vtN[0]:getX()) > abs( vtN[1]:getX()), 0, 1)
|
||||
nFacInd = EgtIf( abs( vtN[1]:getX()) > abs( vtN[2]:getX()), 0, 1)
|
||||
end
|
||||
-- altrimenti, scelgo quella con la normale più perpendicolare all'asse trave (se uguali, quella verso X+)
|
||||
else
|
||||
if abs( abs( vtN[0]:getX()) - abs( vtN[1]:getX())) < GEO.EPS_SMALL then
|
||||
if abs( abs( vtN[1]:getX()) - abs( vtN[2]:getX())) < GEO.EPS_SMALL then
|
||||
if ptM:getX() > b3Raw:getCenter():getX() then
|
||||
nFacInd = EgtIf( vtN[0]:getX() > vtN[1]:getX(), 0, 1)
|
||||
nFacInd = EgtIf( vtN[1]:getX() > vtN[2]:getX(), 0, 1)
|
||||
else
|
||||
nFacInd = EgtIf( vtN[0]:getX() < vtN[1]:getX(), 0, 1)
|
||||
nFacInd = EgtIf( vtN[1]:getX() < vtN[2]:getX(), 0, 1)
|
||||
end
|
||||
else
|
||||
nFacInd = EgtIf( abs( vtN[0]:getX()) < abs( vtN[1]:getX()), 0, 1)
|
||||
nFacInd = EgtIf( abs( vtN[1]:getX()) < abs( vtN[2]:getX()), 0, 1)
|
||||
end
|
||||
end
|
||||
elseif bFaceOk[0] then
|
||||
elseif bFaceOk[1] then
|
||||
nFacInd = 0
|
||||
else
|
||||
nFacInd = 1
|
||||
@@ -269,11 +269,11 @@ local function MakeTwoFacesByMill( Proc, nPhase, nRawId, nPartId)
|
||||
-- aggiungo geometria
|
||||
EgtSetMachiningGeometry( {{ Proc.Id, nFacInd}})
|
||||
-- imposto uso faccia e lato correzione
|
||||
if vtN[nOthInd]:getX() > 0.1 then
|
||||
if vtN[nOthInd+1]:getX() > 0.1 then
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_LEFT)
|
||||
elseif vtN[nOthInd]:getX() < -0.1 then
|
||||
elseif vtN[nOthInd+1]:getX() < -0.1 then
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_RIGHT)
|
||||
elseif vtN[nOthInd]:getZ() < -0.1 then
|
||||
elseif vtN[nOthInd+1]:getZ() < -0.1 then
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_TOP)
|
||||
else
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.ORTHO_DOWN)
|
||||
@@ -281,7 +281,7 @@ local function MakeTwoFacesByMill( Proc, nPhase, nRawId, nPartId)
|
||||
-- imposto lato di correzione
|
||||
EgtSetMachiningParam( MCH_MP.WORKSIDE, MCH_MILL_WS.LEFT)
|
||||
-- imposto posizione braccio porta testa
|
||||
if vtN[nFacInd]:getY() < GEO.EPS_SMALL then
|
||||
if vtN[nFacInd+1]:getY() < GEO.EPS_SMALL then
|
||||
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.ADIR_YM)
|
||||
else
|
||||
EgtSetMachiningParam( MCH_MP.SCC, MCH_SCC.ADIR_YP)
|
||||
@@ -608,7 +608,7 @@ end
|
||||
---------------------------------------------------------------------
|
||||
-- Applicazione della lavorazione
|
||||
---------------------------------------------------------------------
|
||||
function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId)
|
||||
function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
|
||||
-- limiti di fresatura semplice
|
||||
local MAX_MILL_LIN = 80
|
||||
local MAX_MILL_VOL = ( 80 * 240 * 20) / 2
|
||||
@@ -676,7 +676,7 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId)
|
||||
return MakeTwoFacesByMill( Proc, nPhase, nRawId, nPartId)
|
||||
-- altrimenti, con lama
|
||||
else
|
||||
return Fbs.MakeTwo( Proc, nPhase, nRawId, nPartId, 'HeadSide')
|
||||
return Fbs.MakeTwo( Proc, nPhase, nRawId, nPartId, dOvmHead, 'HeadSide')
|
||||
end
|
||||
-- tre o più facce
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user