DataBeam :
- correzione in BeamExec per macchine senza BD.MAX_WIDTH2 e BD.MAX_HEIGHT2 - migliorata gestione L030 sotto con 3 facce - migliorata gestione affondamento/elevazione lavorazioni con sega a catena.
This commit is contained in:
@@ -696,8 +696,8 @@ function ProcessLapJoint.Classify( Proc, b3Raw)
|
||||
local bDown = ( vtN[1]:getZ() < BD.NZ_MINB and vtN[2]:getZ() < BD.NZ_MINB) or
|
||||
( vtN[1]:getZ() < BD.NZ_MINA and vtN[2]:getZ() < 0.5 and ( vtN[2]:getZ() < -0.1 or not bSmall)) or
|
||||
( vtN[2]:getZ() < BD.NZ_MINA and vtN[1]:getZ() < 0.5 and ( vtN[1]:getZ() < -0.1 or not bSmall))
|
||||
-- per L30, se forzata la lavorazione con fresa di lato da parametro Q03=2 oppure Q03=3 non devo ruotare
|
||||
local bForceSideMill = ( Proc.Prc == 30 and ( EgtGetInfo( Proc.Id, 'Q03', 'd') == 2 or EgtGetInfo( Proc.Id, 'Q03', 'd') == 3))
|
||||
-- se forzata la lavorazione con fresa di lato da parametro Q03=2/3 non devo ruotare
|
||||
local bForceSideMill = ( EgtGetInfo( Proc.Id, Q_SIDE_ROUGH_TOOL, 'd') == 2 or EgtGetInfo( Proc.Id, Q_SIDE_ROUGH_TOOL, 'd') == 3)
|
||||
bDown = ( bDown and not BD.DOWN_HEAD and not BD.TURN and not bForceSideMill)
|
||||
return true, bDown
|
||||
-- se più di 2 facce
|
||||
@@ -797,8 +797,8 @@ function ProcessLapJoint.Classify( Proc, b3Raw)
|
||||
-- se verso il basso, verifico se utilizzabile seconda faccia
|
||||
if bDown then
|
||||
local bIsU = ( Proc.Fct == 3 and not TestElleShape3( Proc))
|
||||
-- per lapjoint proc 30, se forzata la lavorazione con fresa di lato da parametro Q03=2 oppure Q03=3 non devo ruotare
|
||||
local bForceSideMill = ( Proc.Prc == 30 and ( EgtGetInfo( Proc.Id, 'Q03', 'd') == 2 or EgtGetInfo( Proc.Id, 'Q03', 'd') == 3) and ( Proc.Fct == 3 or Proc.Fct == 4))
|
||||
-- se forzata la lavorazione con fresa di lato da parametro Q03=2/3 non devo ruotare
|
||||
local bForceSideMill = ( ( EgtGetInfo( Proc.Id, Q_SIDE_ROUGH_TOOL, 'd') == 2 or EgtGetInfo( Proc.Id, Q_SIDE_ROUGH_TOOL, 'd') == 3) and ( Proc.Fct == 3 or Proc.Fct == 4))
|
||||
if bForceSideMill then
|
||||
bDown = false
|
||||
elseif nFacInd2 and dElev2 < 2 * dElev then
|
||||
@@ -3520,7 +3520,7 @@ local function GetUShapeWidth( Proc, nFacInd)
|
||||
-- Recupero le facce adiacenti alla principale
|
||||
local vAdj = EgtSurfTmFacetAdjacencies( Proc.Id, nFacInd)[1]
|
||||
-- se non ho facce adiacenti esco subito
|
||||
if not vAdj or #vAdj == 0 then return nil end
|
||||
if not vAdj or #vAdj == 0 then return 0 end
|
||||
-- Normale della faccia
|
||||
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, nFacInd, GDB_ID.ROOT)
|
||||
-- Cerco le facce adiacenti alla principale con angolo concavo >= 90
|
||||
@@ -3575,13 +3575,24 @@ local function MakeByPockets( Proc, nPhase, nRawId, nPartId, nChamfer, dDepthCha
|
||||
if bOrthoFaces then
|
||||
-- ottengo le dimensioni del tunnel
|
||||
dDimMin, dDimMax, dDepth, vtOrtho, nLundIdFace, nSurfInt = GetTunnelDimension( Proc, nPartId)
|
||||
local nPathInt
|
||||
-- se due facce posso utilizzare utensile con diametro doppio della dimensione minima
|
||||
if Proc.Fct == 2 then
|
||||
dDimMin = 2 * dDimMin
|
||||
-- se tre facce aumento il diametro di quanto possibile
|
||||
elseif Proc.Fct == 3 then
|
||||
local nFacInd = BL.GetFaceWithMostAdj( Proc.Id, nPartId, false)
|
||||
local dWidth = GetUShapeWidth( Proc, nFacInd or -1)
|
||||
if dWidth > dDimMin then
|
||||
dDimMin = min( 2 * dDimMin, dWidth)
|
||||
end
|
||||
end
|
||||
-- se devo inserire il chamfer
|
||||
if nChamfer > 0 then
|
||||
local nOk, sErr = MakeChamfer( Proc, bIs3Faces, nAddGrpId, vtOrtho, b3Solid, nSurfInt, dDepthCham)
|
||||
if nOk < 0 then return -1, sErr end
|
||||
end
|
||||
-- se smusso non è esclusivo
|
||||
local nPathInt
|
||||
if nChamfer < 2 then
|
||||
-- ricalcolo se è lavorabile da sotto
|
||||
bMillDown = ( BD.DOWN_HEAD == true)
|
||||
@@ -4443,6 +4454,16 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
||||
-- verifico se posso farlo con la sega-catena
|
||||
local bMakeChainSaw, sSawing, dMaxMat, dSawCornerRad, dSawThick = VerifyChainSaw( Proc, dDimMin, dDimMax)
|
||||
if bMakeChainSaw then
|
||||
-- Ricalcolo l'affondamento tenendo conto di eventuale inclinazione
|
||||
local dSlDepth
|
||||
local frSlDh = Frame3d( Proc.Box:getCenter(), vtOrtho)
|
||||
for i = 1, Proc.Fct do
|
||||
local b3Fac = EgtSurfTmGetFacetBBoxRef( Proc.Id, i - 1, GDB_BB.STANDARD, frSlDh)
|
||||
if b3Fac and ( not dSlDepth or b3Fac:getDimZ() < dSlDepth) then
|
||||
dSlDepth = b3Fac:getDimZ()
|
||||
end
|
||||
end
|
||||
if dSlDepth then dDepth = dSlDepth end
|
||||
-- Verifico se necessarie più passate
|
||||
local nStep = ceil( ( dDimMin - 100 * GEO.EPS_SMALL) / dSawThick)
|
||||
local dStep = 0
|
||||
@@ -4462,7 +4483,7 @@ local function MakeMoreFaces( Proc, nPhase, nRawId, nPartId, dOvmHead, bSinglePa
|
||||
EgtSetMachiningGeometry( {{ Proc.Id, nLundIdFace}})
|
||||
-- imposto uso del lato faccia
|
||||
-- al momento, dato che la fessura è passante da parte a parte, gestisco solo la lavorazione
|
||||
-- dall'alto e di fronte (da dietro è disabilitata perchè ho exracorsa con la FAST).
|
||||
-- dall'alto e di fronte (da dietro è disabilitata perchè ho extracorsa con la FAST).
|
||||
-- Questa feature non è applicata su facce di testa e quindi non controllo l'entrata in X
|
||||
if abs(vtOrtho:getZ()) >= 0.707 then
|
||||
EgtSetMachiningParam( MCH_MP.FACEUSE, MCH_MILL_FU.PARAL_DOWN)
|
||||
|
||||
Reference in New Issue
Block a user