DataBeam :

- aggiunta gestione rotazioni di 90gradi (abilitata da BD.ROT90 e compatibilmente con sezione)
- migliorato ordinamento fori
- migliorata classificazione Contorni Liberi.
This commit is contained in:
Dario Sassi
2020-05-19 15:40:07 +00:00
parent c7411fe35d
commit 1c7db5d845
6 changed files with 188 additions and 64 deletions
+25 -11
View File
@@ -1,4 +1,4 @@
-- ProcessFreeContour.lua by Egaltech s.r.l. 2020/04/24
-- ProcessFreeContour.lua by Egaltech s.r.l. 2020/05/16
-- Gestione calcolo profilo libero per Travi
-- Tabella per definizione modulo
@@ -39,8 +39,8 @@ function ProcessFreeContour.IsHeadFeature( Proc, b3Raw, dCurrOvmH)
local vtN = EgtCurveExtrusion( AuxId, GDB_RT.GLOB)
return ( vtN:getX() >= 0.5)
end
-- deve occupare la maggior parte dell'area
if Proc.Box:getDimY() > 0.75 * b3Raw:getDimY() or Proc.Box:getDimZ() > 0.75 * b3Raw:getDimZ() then
-- deve occupare una buona parte dell'area
if Proc.Box:getDimY() * Proc.Box:getDimZ() > 0.45 * b3Raw:getDimY() * b3Raw:getDimZ() then
return true
end
-- non è di testa
@@ -67,8 +67,8 @@ function ProcessFreeContour.IsTailFeature( Proc, b3Raw)
local vtN = EgtCurveExtrusion( AuxId, GDB_RT.GLOB)
return ( vtN:getX() <= - 0.5)
end
-- deve occupare la maggior parte dell'area
if Proc.Box:getDimY() > 0.75 * b3Raw:getDimY() and Proc.Box:getDimZ() > 0.75 * b3Raw:getDimZ() then
-- deve occupare una buona parte dell'area
if Proc.Box:getDimY() * Proc.Box:getDimZ() > 0.45 * b3Raw:getDimY() * b3Raw:getDimZ() then
return true
end
-- non è di coda
@@ -85,14 +85,28 @@ function ProcessFreeContour.Classify( Proc, b3Raw)
if not AuxId then return false end
AuxId = AuxId + Proc.Id
local vtN = EgtCurveExtrusion( AuxId, GDB_RT.GLOB)
-- verifico se va lavorata da sotto
local bDown = false
if not bPocket then
bDown = ( vtN:getZ() < - 0.5) and Proc.Box:getDimZ() < 0.9 * b3Raw:getDimZ()
-- se tasca
if bPocket then
local bDown = ( vtN:getZ() < - 0.5)
return true, bDown, false
-- se altrimenti profilo orizzontale
elseif abs( vtN:getZ()) < 0.5 then
return true, false, false
-- se altrimenti profilo verticale che non interessa tutta la sezione
elseif Proc.Box:getDimZ() < 0.9 * b3Raw:getDimZ() then
local bDown = ( vtN:getZ() < - 0.5)
return true, bDown, false
-- altrimenti è profilo verticale che interessa tutta la sezione
else
bDown = ( vtN:getZ() < - 0.5)
-- recupero la massima capacità di lavoro dell'utensile da utilizzare
local sMilling, dMaxDepth = ML.FindMilling( 'FreeContour')
if not sMilling then dMaxDepth = 0 end
if Proc.Box:getDimZ() > dMaxDepth and BD.ROT90 then
return true, false, true
else
return true, false, false
end
end
return true, bDown
end
---------------------------------------------------------------------