DataBeam :
- numerose correzioni di Filippo per FAST.
This commit is contained in:
+19
-3
@@ -1,4 +1,4 @@
|
||||
-- ProcessCut.lua by Egaltech s.r.l. 2020/11/20
|
||||
-- ProcessCut.lua by Egaltech s.r.l. 2020/12/09
|
||||
-- Gestione calcolo singoli tagli di lama per Travi
|
||||
|
||||
-- Tabella per definizione modulo
|
||||
@@ -192,6 +192,7 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom)
|
||||
local ptC, vtN = EgtSurfTmFacetCenter( Proc.Id, 0, GDB_ID.ROOT)
|
||||
local bDownCut = ( vtN:getZ() <= dNzLimDwnUp)
|
||||
local bFillAreaPiece
|
||||
local bFillTail
|
||||
-- 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
|
||||
@@ -202,6 +203,15 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom)
|
||||
bFillAreaPiece = true
|
||||
end
|
||||
end
|
||||
-- caso particolare: se non da sotto e quasi piana e finisce sulla coda e non sborda sulla faccia inferiore
|
||||
-- se non viene fatto il taglio a cubetti, lo si forza a farlo perchè la lama entra nel pezzo successivo
|
||||
if not bDownCut and vtN:getZ() > 0.866 then
|
||||
if ( abs( Proc.Box:getMin():getY() - b3Solid:getMin():getY() ) < 10*GEO.EPS_SMALL or abs( Proc.Box:getMax():getY() - b3Solid:getMax():getY() ) < 10*GEO.EPS_SMALL) and
|
||||
abs( Proc.Box:getMin():getX() - b3Solid:getMin():getX() ) < 10*GEO.EPS_SMALL and b3Solid:getMin():getZ() < Proc.Box:getMin():getZ() - 100 * GEO.EPS_SMALL then
|
||||
bFillTail = true
|
||||
end
|
||||
end
|
||||
|
||||
-- se taglio di testa
|
||||
if Proc.Head then
|
||||
-- se coincide con il taglio di separazione precedente, non va fatto
|
||||
@@ -252,12 +262,18 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom)
|
||||
local vCuts = {}
|
||||
if dCutH > dMaxDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC or dCutV > dMaxVertDepth - BD.CUT_EXTRA - 3 * BD.COLL_SIC then
|
||||
local ptExtra, vtExtra
|
||||
if bFillAreaPiece then
|
||||
local bAutoCalcSurf = true
|
||||
if bFillAreaPiece or bFillTail then
|
||||
local ptMiddle = ( b3Solid:getMin() + b3Solid:getMax()) / 2
|
||||
ptExtra = Point3d( b3Solid:getMin():getX() + 5*GEO.EPS_SMALL, ptMiddle:getY(), ptMiddle:getZ())
|
||||
vtExtra = X_AX()
|
||||
bAutoCalcSurf = false
|
||||
end
|
||||
vCuts = DC.GetDice( EgtGetParent( Proc.Id), b3Solid, ptC, vtN, bAutoCalcSurf, ptExtra, vtExtra, dMaxDepth - BD.CUT_EXTRA)
|
||||
-- se taglio sborda in coda e non è stato inserito nessun taglio a cubetti, lo rilancio con le dimensioni customizzate
|
||||
if bFillTail and #vCuts == 0 then
|
||||
vCuts = DC.GetDice( EgtGetParent( Proc.Id), b3Solid, ptC, vtN, bAutoCalcSurf, ptExtra, vtExtra, dMaxDepth - BD.CUT_EXTRA, Proc.Box:getDimY())
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user