DataBeam :
- numerose correzioni di Filippo per FAST.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2020/11/16
|
||||
-- ProcessLapJoint.lua by Egaltech s.r.l. 2020/12/09
|
||||
-- Gestione calcolo mezzo-legno per Travi
|
||||
-- 2019/10/08 Agg. gestione OpenPocket.
|
||||
|
||||
@@ -279,6 +279,7 @@ local function GetTunnelDimension( Proc, nPartId)
|
||||
local dDimMin
|
||||
local dDimMax
|
||||
local nLongIdFace = 0
|
||||
local bOppoFace = false
|
||||
-- ottengo il versore ortogonale
|
||||
local ptN1, vtN1 = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
local _, vtN2 = EgtSurfTmFacetCenter( Proc.Id, 1, GDB_ID.ROOT)
|
||||
@@ -286,6 +287,7 @@ local function GetTunnelDimension( Proc, nPartId)
|
||||
if vtOrtho:isSmall() then
|
||||
_, vtN2 = EgtSurfTmFacetCenter( Proc.Id, 2, GDB_ID.ROOT)
|
||||
vtOrtho = vtN1 ^ vtN2
|
||||
bOppoFace = true
|
||||
end
|
||||
-- ottengo il boundingBox e prendo le dimensioni lungo la normale (Z locale) che rappresenta la profondità della fessura
|
||||
local frFc = Frame3d( ptN1, vtOrtho) ;
|
||||
@@ -319,13 +321,14 @@ local function GetTunnelDimension( Proc, nPartId)
|
||||
nLongIdFace = nFacCnt-1
|
||||
-- altrimenti verifico anche con la faccia precedente
|
||||
else
|
||||
local nFaceToCheck = EgtIf( bOppoFace, nFacCnt-3, nFacCnt-2)
|
||||
-- prendo le dimensioni della faccia e poi confronto con il minimo
|
||||
_, DimH, DimV = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFacCnt-2, GDB_ID.ROOT)
|
||||
_, DimH, DimV = EgtSurfTmFacetMinAreaRectangle( Proc.Id, nFaceToCheck, GDB_ID.ROOT)
|
||||
-- se trovato con il minimo, questa seconda faccia non è la più lunga
|
||||
if abs(DimH - dDimMin) < GEO.EPS_SMALL or abs(DimV - dDimMin) < GEO.EPS_SMALL then
|
||||
nLongIdFace = nFacCnt-1
|
||||
else
|
||||
nLongIdFace = nFacCnt-2
|
||||
nLongIdFace = nFaceToCheck
|
||||
end
|
||||
end
|
||||
if not dDimMax then
|
||||
@@ -565,8 +568,8 @@ function ProcessLapJoint.Classify( Proc, b3Raw)
|
||||
else
|
||||
-- dati della faccia
|
||||
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacInd, GDB_ID.ROOT)
|
||||
-- cerco se c'è faccia adiacente
|
||||
local nFaceAdj = GetFaceAdj( Proc, nFacInd, dH, dV)
|
||||
-- cerco se c'è faccia adiacente sul lato più lungo
|
||||
local nFaceAdj = GetFaceAdj( Proc, nFacInd, dH, dV) or -1
|
||||
local bIsL = ( Proc.Fct == 2 or TestElleShape3( Proc) or TestElleShape4( Proc) == 2)
|
||||
-- verifico se è lavorabile solo dal basso
|
||||
local bDown = ( vtN:getZ() < BD.NZ_MINA)
|
||||
@@ -580,7 +583,7 @@ function ProcessLapJoint.Classify( Proc, b3Raw)
|
||||
bDown = ( vtN2:getZ() < BD.NZ_MINB)
|
||||
end
|
||||
-- verifico se la faccia principale è sottosquadra, ha forma L e anche la faccia adiacente
|
||||
elseif vtN:getZ() < -10 * GEO.EPS_SMALL and bIsL and nFaceAdj > 0 then
|
||||
elseif vtN:getZ() < -10 * GEO.EPS_SMALL and bIsL and nFaceAdj >= 0 then
|
||||
-- box del pezzo
|
||||
local b3Solid = EgtGetBBoxGlob( EgtGetFirstNameInGroup( nPartId, 'Box') or GDB_ID.NULL, GDB_BB.STANDARD)
|
||||
-- se il numero di facce > 2 or il box della feature supera una certa distanza dalle teste allora controllo la z della faccia ausiiaria
|
||||
@@ -2725,11 +2728,16 @@ local function CheckDiamToolByFaces( Proc, nFacInd, dH, dV, bIsU, bIsL, dElev, n
|
||||
local dLen22 = dist( tExtremPt[1][2], tExtremPt[2][2])
|
||||
dLargeVal = min( dLargeVal, dLen11, dLen12, dLen21, dLen22)
|
||||
end
|
||||
-- per essere accettabile, il diametro massimo deve essere minore della larghezza della faccia
|
||||
if dMaxDiam < dLargeVal + 20 * GEO.EPS_SMALL then
|
||||
-- se forma a l e flag uso truciolatore, favorisco il suo utilizzo
|
||||
if bIsL and nUseRoughTool == 1 then
|
||||
return dMaxDiam, 'OpenPocket', nUseRoughTool, dMaxDiam
|
||||
else
|
||||
return false, '', 0, dMaxDiam
|
||||
-- per essere accettabile, il diametro massimo deve essere minore della larghezza della faccia
|
||||
if dMaxDiam < dLargeVal + 20 * GEO.EPS_SMALL then
|
||||
return dMaxDiam, 'OpenPocket', nUseRoughTool, dMaxDiam
|
||||
else
|
||||
return false, '', 0, dMaxDiam
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3335,6 +3343,16 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
||||
nUseRoughTool = 1
|
||||
end
|
||||
end
|
||||
-- 03/12/2020 aggiunto controllo su feature 30
|
||||
-- se processo 30 e non sto usando il truciolatore
|
||||
if bNewCheck and Proc.Prc == 30 and nUseRoughTool == 0 then
|
||||
-- verifico se forzato uso truciolatore
|
||||
nUseRT = EgtGetInfo( Proc.Id, sMakeBySideRoughTool, 'i')
|
||||
if nUseRT and nUseRT ~= 0 then
|
||||
sMchFind = 'OpenPocket'
|
||||
nUseRoughTool = 1
|
||||
end
|
||||
end
|
||||
-- verifico dalla forma se non posso prendere utensile grande
|
||||
if ( Proc.Fct == 3 and bIsU and bSinglePart) or ( Proc.Fct == 2 and bIsL) or Proc.Fct == 1 then
|
||||
sMchFindBackUp = sMchFind
|
||||
@@ -3734,6 +3752,15 @@ function ProcessLapJoint.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
|
||||
AssignQValues( Proc)
|
||||
-- verifico forzatura lama
|
||||
local bForcedBlade = EgtGetInfo( Proc.Id, sUseRoughTool, 'i') ~= 1 and EgtGetInfo( Proc.Id, sUseMill, 'i') ~= 1
|
||||
-- se ho attivo la lama e ho la feature 30, verifico i parametri Q propri della feature
|
||||
if bForcedBlade and Proc.Prc == 30 then
|
||||
local nBladeAntisplint = EgtGetInfo( Proc.Id, sAntisplintMode, 'i') or 0
|
||||
local nUseRoughToolOnSide = EgtGetInfo( Proc.Id, sMakeBySideRoughTool, 'i') or 0
|
||||
-- se antischeggia di fresa o abilitato sgrossatore di fianco
|
||||
if nBladeAntisplint == 2 or nUseRoughToolOnSide == 1 then
|
||||
bForcedBlade = false
|
||||
end
|
||||
end
|
||||
-- se lunghezza richiede spezzatura
|
||||
if Proc.Box:getDimX() > BD.LONGCUT_MAXLEN then
|
||||
-- una faccia
|
||||
|
||||
Reference in New Issue
Block a user