This commit is contained in:
fieldOfView 2016-06-30 11:03:17 +02:00
commit 43a3ea853a
3 changed files with 14 additions and 17 deletions

View File

@ -546,12 +546,12 @@ class CuraApplication(QtApplication):
for _ in range(count): for _ in range(count):
if node.getParent() and node.getParent().callDecoration("isGroup"): if node.getParent() and node.getParent().callDecoration("isGroup"):
new_node = copy.deepcopy(node.getParent()) #Copy the group node. new_node = copy.deepcopy(node.getParent()) #Copy the group node.
new_node.callDecoration("setConvexHull",None) new_node.callDecoration("recomputeConvexHull")
op.addOperation(AddSceneNodeOperation(new_node,node.getParent().getParent())) op.addOperation(AddSceneNodeOperation(new_node,node.getParent().getParent()))
else: else:
new_node = copy.deepcopy(node) new_node = copy.deepcopy(node)
new_node.callDecoration("setConvexHull", None) new_node.callDecoration("recomputeConvexHull")
op.addOperation(AddSceneNodeOperation(new_node, node.getParent())) op.addOperation(AddSceneNodeOperation(new_node, node.getParent()))
op.push() op.push()

View File

@ -7,7 +7,6 @@ from UM.Scene.SceneNode import SceneNode
from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator
from UM.Math.Vector import Vector from UM.Math.Vector import Vector
from UM.Math.AxisAlignedBox import AxisAlignedBox from UM.Math.AxisAlignedBox import AxisAlignedBox
from UM.Application import Application
from UM.Scene.Selection import Selection from UM.Scene.Selection import Selection
from UM.Preferences import Preferences from UM.Preferences import Preferences
@ -16,8 +15,6 @@ from cura.ConvexHullDecorator import ConvexHullDecorator
from . import PlatformPhysicsOperation from . import PlatformPhysicsOperation
from . import ZOffsetDecorator from . import ZOffsetDecorator
import copy
class PlatformPhysics: class PlatformPhysics:
def __init__(self, controller, volume): def __init__(self, controller, volume):
super().__init__() super().__init__()
@ -100,18 +97,15 @@ class PlatformPhysics:
# continue # continue
# Get the overlap distance for both convex hulls. If this returns None, there is no intersection. # Get the overlap distance for both convex hulls. If this returns None, there is no intersection.
try: head_hull = node.callDecoration("getConvexHullHead")
head_hull = node.callDecoration("getConvexHullHead") if head_hull:
if head_hull: overlap = head_hull.intersectsPolygon(other_node.callDecoration("getConvexHull"))
overlap = head_hull.intersectsPolygon(other_node.callDecoration("getConvexHull")) if not overlap:
if not overlap: other_head_hull = other_node.callDecoration("getConvexHullHead")
other_head_hull = other_node.callDecoration("getConvexHullHead") if other_head_hull:
if other_head_hull: overlap = node.callDecoration("getConvexHull").intersectsPolygon(other_head_hull)
overlap = node.callDecoration("getConvexHull").intersectsPolygon(other_head_hull) else:
else: overlap = node.callDecoration("getConvexHull").intersectsPolygon(other_node.callDecoration("getConvexHull"))
overlap = node.callDecoration("getConvexHull").intersectsPolygon(other_node.callDecoration("getConvexHull"))
except:
overlap = None #It can sometimes occur that the calculated convex hull has no size, in which case there is no overlap.
if overlap is None: if overlap is None:
continue continue

View File

@ -10,3 +10,6 @@ class ZOffsetDecorator(SceneNodeDecorator):
def getZOffset(self): def getZOffset(self):
return self._z_offset return self._z_offset
def __deepcopy__(self, memo):
return ZOffsetDecorator()