DataBeam :
- correzioni varie per tagli a cubetti.
This commit is contained in:
+19
-17
@@ -193,25 +193,27 @@ function ProcessCut.Make( Proc, nPhase, nRawId, nPartId, dOvmHead, bFromBottom)
|
||||
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
|
||||
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
|
||||
-- se pezzo ancora attaccato alla trave, per non rovinare quello successivo
|
||||
if not BL.IsSplittedPartPhase( nPhase) then
|
||||
-- se non da sotto e praticamente orizzontale ( inclinazione inferiore a 11.5deg)
|
||||
if not bDownCut and vtN:getZ() > 0.98 then
|
||||
-- se la faccia occupa tutta la trave in X e Y e non interessa la faccia inferiore, si fanno partire i tagli a cubetti dalla testa
|
||||
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 non da sotto e quasi orizzontale ( inclinazione inferiore a 30)
|
||||
if not bDownCut and vtN:getZ() > 0.866 then
|
||||
-- se la faccia termina davanti o dietro la trave e arriva in coda e non interessa la faccia inferiore, forzo il taglio a cubetti a partire dal davanti
|
||||
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
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user