DataBeam :

- in DiceCut ora si fanno i cubetti anche quando le facce superano la massima lunghezza anche se strette
- in Cut corretto orientamento testa per tagli particolari
- rifatta Classify di DoubleCut
- in Drill migliorato controllo ingombro pinza portautensile
- in Tenon e DtTenon portato a 6 il massimo numero di passi.
This commit is contained in:
Dario Sassi
2020-09-25 05:51:49 +00:00
parent 56e5cfc517
commit 14d500e4ab
7 changed files with 79 additions and 51 deletions
+24 -15
View File
@@ -1,4 +1,4 @@
-- ProcessDoubleCut.lua by Egaltech s.r.l. 2020/09/15
-- ProcessDoubleCut.lua by Egaltech s.r.l. 2020/09/24
-- Gestione calcolo doppi tagli di lama per Travi
-- Tabella per definizione modulo
@@ -25,20 +25,27 @@ end
---------------------------------------------------------------------
-- Classificazione della feature
function ProcessDoubleCut.Classify( Proc)
-- numero delle facce
local nFacetCnt = EgtSurfTmFacetCount( Proc.Id)
-- se due facce, verifico se convesso
local bConvex = true
if nFacetCnt == 2 then
local bAdj, _, _, dAng = EgtSurfTmFacetsContact( Proc.Id, 0, 1, GDB_ID.ROOT)
bConvex = not bAdj or ( dAng > 0)
end
-- verifico le normali delle facce
for i = 1, nFacetCnt do
local vtN = EgtSurfTmFacetNormVersor( Proc.Id, i-1, GDB_ID.ROOT)
if not bConvex and ( vtN:getZ() < - 0.72 or ( vtN:getZ() < - 0.259 and Proc.Box:getDimX() > BD.MAX_DIM_DICE)) then
return true, true
function ProcessDoubleCut.Classify( Proc, b3Raw)
--se una faccia, uso la classificazione dei tagli singoli
if Proc.Fct == 1 then return Cut.Classify( Proc, b3Raw) end
-- verifico se convesso
local bAdj, _, _, dAng = EgtSurfTmFacetsContact( Proc.Id, 0, 1, GDB_ID.ROOT)
local bConvex = ( not bAdj or ( dAng > 0))
if bConvex then return true, false end
-- verifico le normali delle facce per tagli da sotto
local dNzLimDwnUp = BL.GetNzLimDownUp( b3Raw)
for i = 1, 2 do
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, i-1, GDB_ID.ROOT)
local bDownCut = ( vtN:getZ() <= dNzLimDwnUp)
if bDownCut then
-- dimensione della faccia perpendicolare alla linea di intersezione tra le facce
local vtN2 = EgtSurfTmFacetNormVersor( Proc.Id, 2-i, GDB_ID.ROOT)
local vtX = vtN2 ^ vtN
local frRef = Frame3d( ptC, ptC + 100 * vtX, ptC + 100 * vtN2)
local b3Ref = EgtSurfTmGetFacetBBoxRef( Proc.Id, i-1, GDB_BB.STANDARD, frRef)
if b3Ref:getDimY() > BD.MAX_DIM_DICE then
return true, true
end
end
end
return true, false
@@ -134,6 +141,8 @@ end
---------------------------------------------------------------------
-- Applicazione della lavorazione
function ProcessDoubleCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead)
-- se singola faccia, passo a quella lavorazione
if Proc.Fct == 1 then return Cut.Make( Proc, nPhase, nRawId, nPartId, dCurrOvmH) end
-- ingombro del grezzo
local b3Raw = EgtGetRawPartBBox( nRawId)
-- ingombro del pezzo