DataBeam :

- migliorie e correzioni varie.
This commit is contained in:
Dario Sassi
2020-12-01 11:10:24 +00:00
parent 7c6961985c
commit e0698bb00d
8 changed files with 235 additions and 53 deletions
+19 -2
View File
@@ -1,4 +1,4 @@
-- ProcessCut.lua by Egaltech s.r.l. 2020/11/13
-- ProcessCut.lua by Egaltech s.r.l. 2020/11/20
-- Gestione calcolo singoli tagli di lama per Travi
-- Tabella per definizione modulo
@@ -191,6 +191,17 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom)
-- dati geometrici del taglio
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
local bDownCut = ( vtN:getZ() <= dNzLimDwnUp)
local bFillAreaPiece
-- caso particolare: se faccia quasi piana e componente X negativa, si vuole evitare che i tagli a cubetti sulla faccia non iniziano dalla coda ma dalla testa
-- se non è taglio da sotto verifico se la faccia uccupa tutta l'area del pezzo,
-- cioè componente Z vicina a 1 e box faccia e box pezzo corrispondenti e non sborda sulla faccia inferiore
if not bDownCut and vtN:getZ() > 0.98 then
if abs( Proc.Box:getMin():getX() - b3Solid:getMin():getX() ) < 10*GEO.EPS_SMALL and abs( Proc.Box:getMax():getX() - b3Solid:getMax():getX() ) < 10*GEO.EPS_SMALL and
abs( Proc.Box:getMin():getY() - b3Solid:getMin():getY() ) < 10*GEO.EPS_SMALL and abs( Proc.Box:getMax():getY() - b3Solid:getMax():getY() ) < 10*GEO.EPS_SMALL and
b3Solid:getMin():getZ() < Proc.Box:getMin():getZ() - 100 * GEO.EPS_SMALL then
bFillAreaPiece = true
end
end
-- se taglio di testa
if Proc.Head then
-- se coincide con il taglio di separazione precedente, non va fatto
@@ -240,7 +251,13 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom)
EgtOutLog( string.format( 'MaxDepth=%.1f MaxVertDepth=%.1f CutH=%.1f CutV=%.1f', dMaxDepth, dMaxVertDepth, dCutH, dCutV), 3)
local vCuts = {}
if dCutH > dMaxDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC or dCutV > dMaxVertDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC then
vCuts = DC.GetDice( EgtGetParent( Proc.Id), b3Solid, ptC, vtN, true, nil, nil, dMaxDepth - BD.CUT_EXTRA)
local ptExtra, vtExtra
if bFillAreaPiece then
local ptMiddle = ( b3Solid:getMin() + b3Solid:getMax()) / 2
ptExtra = Point3d( b3Solid:getMin():getX() + 5*GEO.EPS_SMALL, ptMiddle:getY(), ptMiddle:getZ())
vtExtra = X_AX()
end
vCuts = DC.GetDice( EgtGetParent( Proc.Id), b3Solid, ptC, vtN, true, ptExtra, vtExtra, dMaxDepth - BD.CUT_EXTRA)
end
--DC.PrintOrderCut( vCuts)
if #vCuts > 0 then