DataBeam :

- aggiunta gestione ingombri di testa o coda per tagli doppi generici con lama.
This commit is contained in:
Dario Sassi
2019-09-10 08:12:06 +00:00
parent 4d26232057
commit 39be33451a
3 changed files with 37 additions and 27 deletions
+11 -4
View File
@@ -16,7 +16,7 @@ local BD = require( 'BeamData')
local ML = require( 'MachiningLib')
---------------------------------------------------------------------
function FacesBySaw.MakeTwo( Proc, nPhase, nRawId, nPartId, sCutName)
function FacesBySaw.MakeTwo( Proc, nPhase, nRawId, nPartId, dOvmHead, sCutName)
-- recupero l'ingombro del grezzo di appartenenza
local b3Raw = EgtGetRawPartBBox( nRawId)
-- ingombro del pezzo
@@ -120,16 +120,23 @@ function FacesBySaw.MakeTwo( Proc, nPhase, nRawId, nPartId, sCutName)
end
end
end
return true
else
-- lavoro la prima faccia
local bOk, sErr = BL.MakeOneFaceBySaw( Proc.Id, 0, sCutting, dSawDiam, vtRef[1], nil, dCutExtra, BD.CUT_SIC, 0, 0, nil, b3Raw)
if not bOk then return bOk, sErr end
-- lavoro seconda faccia
bOk, sErr = BL.MakeOneFaceBySaw( Proc.Id, 1, sCutting, dSawDiam, vtRef[2], nil, dCutExtra, BD.CUT_SIC, 0, 0, nil, b3Raw)
if not bOk then return bOk, sErr end
return true
if not bOk then
return bOk, sErr
end
end
-- eventuale segnalazione ingombro di testa o coda
if Proc.Head then
BL.UpdateHCING( nRawId, b3Raw:getMax():getX() - dOvmHead - Proc.Box:getMin():getX())
elseif Proc.Tail then
BL.UpdateTCING( nRawId, Proc.Box:getMax():getX() - b3Raw:getMin():getX())
end
return true
end
---------------------------------------------------------------------
+5 -2
View File
@@ -1,4 +1,4 @@
-- ProcessDrill.lua by Egaltech s.r.l. 2019/09/04
-- ProcessDrill.lua by Egaltech s.r.l. 2019/09/09
-- Gestione calcolo doppi tagli di lama per Travi
-- Tabella per definizione modulo
@@ -184,7 +184,10 @@ function ProcessDoubleCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
end
-- altrimenti, tagli diretti delle facce
else
return Fbs.MakeTwo( Proc, nPhase, nRawId, nPartId, EgtIf( bHead, 'HeadSide', 'TailSide'))
local bOk, sErr = Fbs.MakeTwo( Proc, nPhase, nRawId, nPartId, dOvmHead, EgtIf( bHead, 'HeadSide', 'TailSide'))
if not bOk then
return bOk, sErr
end
end
end
-- eventuale segnalazione ingombro di testa o coda
+21 -21
View File
@@ -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