diff --git a/cura/CuraActions.py b/cura/CuraActions.py index d6e5add912..4d121338d8 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -67,11 +67,15 @@ class CuraActions(QObject): current_node = parent_node parent_node = current_node.getParent() - # This was formerly done with SetTransformOperation but because of - # unpredictable matrix deconstruction it was possible that mirrors - # could manifest as rotations. Centering is therefore done by - # moving the node to negative whatever its position is: - center_operation = TranslateOperation(current_node, -current_node._position) + # Find out where the bottom of the object is + bbox = current_node.getBoundingBox() + if bbox: + center_y = current_node.getWorldPosition().y - bbox.bottom + else: + center_y = 0 + + # Move the object so that it's bottom is on to of the buildplate + center_operation = TranslateOperation(current_node, Vector(0, center_y, 0), set_position = True) operation.addOperation(center_operation) operation.push()