Added cutoff distance

This commit is contained in:
Jaime van Kessel 2015-08-13 11:25:34 +02:00
parent 377d43942a
commit 49e39d637c
3 changed files with 15 additions and 7 deletions

View file

@ -25,20 +25,22 @@ class ConvexHullJob(Job):
child_hull = child.callDecoration("getConvexHull") child_hull = child.callDecoration("getConvexHull")
if child_hull: if child_hull:
hull.setPoints(numpy.append(hull.getPoints(), child_hull.getPoints(), axis = 0)) hull.setPoints(numpy.append(hull.getPoints(), child_hull.getPoints(), axis = 0))
if hull.getPoints().size < 3: if hull.getPoints().size < 3:
self._node.callDecoration("setConvexHull", None) self._node.callDecoration("setConvexHull", None)
self._node.callDecoration("setConvexHullJob", None) self._node.callDecoration("setConvexHullJob", None)
return return
else: else:
if not self._node.getMeshData(): if not self._node.getMeshData():
return return
mesh = self._node.getMeshData() mesh = self._node.getMeshData()
vertex_data = mesh.getTransformed(self._node.getWorldTransformation()).getVertices() vertex_data = mesh.getTransformed(self._node.getWorldTransformation()).getVertices()
# Don't use data below 0. TODO; We need a better check for this as this gives poor results for meshes with long edges.
vertex_data = vertex_data[vertex_data[:,1]>0]
hull = Polygon(numpy.rint(vertex_data[:, [0, 2]]).astype(int)) hull = Polygon(numpy.rint(vertex_data[:, [0, 2]]).astype(int))
# First, calculate the normal convex hull around the points # First, calculate the normal convex hull around the points
hull = hull.getConvexHull() hull = hull.getConvexHull()

View file

@ -125,7 +125,7 @@ class CuraApplication(QtApplication):
t = controller.getTool("TranslateTool") t = controller.getTool("TranslateTool")
if t: if t:
t.setEnabledAxis([ToolHandle.XAxis, ToolHandle.ZAxis]) t.setEnabledAxis([ToolHandle.XAxis, ToolHandle.YAxis,ToolHandle.ZAxis])
Selection.selectionChanged.connect(self.onSelectionChanged) Selection.selectionChanged.connect(self.onSelectionChanged)

View file

@ -19,6 +19,7 @@ from . import ConvexHullJob
import time import time
import threading import threading
import copy
class PlatformPhysics: class PlatformPhysics:
def __init__(self, controller, volume): def __init__(self, controller, volume):
@ -53,16 +54,21 @@ class PlatformPhysics:
self._change_timer.start() self._change_timer.start()
continue continue
build_volume_bounding_box = copy.deepcopy(self._build_volume.getBoundingBox())
build_volume_bounding_box.setBottom(-9001) # Ignore intersections with the bottom
# Mark the node as outside the build volume if the bounding box test fails. # Mark the node as outside the build volume if the bounding box test fails.
if self._build_volume.getBoundingBox().intersectsBox(bbox) != AxisAlignedBox.IntersectionResult.FullIntersection: if build_volume_bounding_box.intersectsBox(bbox) != AxisAlignedBox.IntersectionResult.FullIntersection:
node._outside_buildarea = True node._outside_buildarea = True
else: else:
node._outside_buildarea = False node._outside_buildarea = False
# Move the node upwards if the bottom is below the build platform. # Move it downwards if bottom is above platform
move_vector = Vector() move_vector = Vector()
if not Float.fuzzyCompare(bbox.bottom, 0.0): if bbox.bottom > 0:
move_vector.setY(-bbox.bottom) move_vector.setY(-bbox.bottom)
#if not Float.fuzzyCompare(bbox.bottom, 0.0):
# pass#move_vector.setY(-bbox.bottom)
# If there is no convex hull for the node, start calculating it and continue. # If there is no convex hull for the node, start calculating it and continue.
if not node.getDecorator(ConvexHullDecorator): if not node.getDecorator(ConvexHullDecorator):