From c15709936b0b2d30f9c60a3ab304855adc376c0c Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 23 Feb 2016 12:55:41 +0100 Subject: [PATCH] Grouping and per object settings now work correctly again --- cura/CuraApplication.py | 1 + plugins/CuraEngineBackend/StartSliceJob.py | 9 +++++---- plugins/PerObjectSettingsTool/PerObjectSettingsModel.py | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index c9fd8233fd..6e4527feec 100644 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -536,6 +536,7 @@ class CuraApplication(QtApplication): group_decorator = GroupDecorator() group_node.addDecorator(group_decorator) group_node.setParent(self.getController().getScene().getRoot()) + group_node.setSelectable(True) center = Selection.getSelectionCenter() group_node.setPosition(center) group_node.setCenterPosition(center) diff --git a/plugins/CuraEngineBackend/StartSliceJob.py b/plugins/CuraEngineBackend/StartSliceJob.py index b94eac0f9e..a45c18271f 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -79,14 +79,16 @@ class StartSliceJob(Job): self._sendSettings(self._profile) - slice_message = self._socket.createMessage("cura.proto.Slice"); + slice_message = self._socket.createMessage("cura.proto.Slice") for group in object_groups: - group_message = slice_message.addRepeatedMessage("object_lists"); + group_message = slice_message.addRepeatedMessage("object_lists") + if group[0].getParent().callDecoration("isGroup"): + self._handlePerObjectSettings(group[0].getParent(), group_message) for object in group: mesh_data = object.getMeshData().getTransformed(object.getWorldTransformation()) - obj = group_message.addRepeatedMessage("objects"); + obj = group_message.addRepeatedMessage("objects") obj.id = id(object) verts = numpy.array(mesh_data.getVertices()) @@ -142,7 +144,6 @@ class StartSliceJob(Job): object_settings = node.callDecoration("getAllSettingValues") if not object_settings: return - for key, value in object_settings.items(): setting = message.addRepeatedMessage("settings") setting.name = key diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsModel.py b/plugins/PerObjectSettingsTool/PerObjectSettingsModel.py index 97b769e65f..7f7cef049b 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsModel.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsModel.py @@ -70,7 +70,7 @@ class PerObjectSettingsModel(ListModel): def _updateModel(self): self.clear() for node in BreadthFirstIterator(self._root): - if type(node) is not SceneNode or not node.getMeshData() or not node.isSelectable(): + if type(node) is not SceneNode or not node.isSelectable(): continue node_profile = node.callDecoration("getProfile") if not node_profile: