From 7a35e4170bdbf5a511f3de03a6194249f971475a Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 5 Dec 2016 11:28:06 +0100 Subject: [PATCH] Moved translation functionality needed for 3mf into ThreeMFReader. Fix CURA-3089, impacts CURA-382 --- plugins/3MFReader/ThreeMFReader.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 3fee1adcb8..f7d2cc01f1 100644 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -185,9 +185,20 @@ class ThreeMFReader(MeshReader): continue build_item_node = self._createNodeFromObject(object, self._base_name + "_" + str(id)) + + # compensate for original center position, if object(s) is/are not around its zero position + extents = build_item_node.getMeshData().getExtents() + center_vector = Vector(extents.center.x, extents.center.y, extents.center.z) + transform_matrix = Matrix() + transform_matrix.setByTranslation(center_vector) + + # offset with transform from 3mf transform = build_item.get("transform") if transform is not None: - build_item_node.setTransformation(self._createMatrixFromTransformationString(transform)) + transform_matrix.multiply(self._createMatrixFromTransformationString(transform)) + + build_item_node.setTransformation(transform_matrix) + global_container_stack = UM.Application.getInstance().getGlobalContainerStack() # Create a transformation Matrix to convert from 3mf worldspace into ours.