From 960a39035082c030e5e175a8aa7bc2fa394282c3 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 27 Sep 2016 14:05:56 +0200 Subject: [PATCH] Ensure that the correct properties get set for writing profiles to g-code CURA-2462 --- cura/Settings/MachineManager.py | 1 + plugins/GCodeWriter/GCodeWriter.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index ac8d1256ce..a112e52dbc 100644 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -683,6 +683,7 @@ class MachineManager(QObject): stack_quality_changes = changes[0] else: Logger.log("w", "Unable to find quality changes container. Using empty container instead") + print(stack_quality.getMetaDataEntry("quality_type"), quality_changes_container.getName(), extruder_id) stack_quality_changes = self._empty_quality_changes_container else: # This is case of quality container and the no-op quality changes container. diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py index 95d6659dd1..695e90dbf8 100644 --- a/plugins/GCodeWriter/GCodeWriter.py +++ b/plugins/GCodeWriter/GCodeWriter.py @@ -98,6 +98,11 @@ class GCodeWriter(MeshWriter): return "" flat_global_container = self._createFlattenedContainerInstance(stack.getTop(), container_with_profile) + + # Ensure that quality_type is set. (Can happen if we have empty quality changes). + if flat_global_container.getMetaDataEntry("quality_type", None) is None: + flat_global_container.addMetaDataEntry("quality_type", stack.findContainer({"type": "quality"}).getMetaDataEntry("quality_type", "normal")) + serialized = flat_global_container.serialize() data = {"global_quality": serialized} @@ -106,9 +111,15 @@ class GCodeWriter(MeshWriter): if not extruder_quality: Logger.log("w", "No extruder quality profile found, not writing quality for extruder %s to file!", extruder.getId()) continue - flat_extruder_quality = self._createFlattenedContainerInstance(extruder.getTop(), extruder_quality) + # Ensure that extruder is set. (Can happen if we have empty quality changes). + if flat_extruder_quality.getMetaDataEntry("extruder", None) is None: + flat_extruder_quality.addMetaDataEntry("extruder", extruder.getBottom().getId()) + + # Ensure that quality_type is set. (Can happen if we have empty quality changes). + if flat_extruder_quality.getMetaDataEntry("quality_type", None) is None: + flat_extruder_quality.addMetaDataEntry("quality_type", extruder.findContainer({"type": "quality"}).getMetaDataEntry("quality_type", "normal")) extruder_serialized = flat_extruder_quality.serialize() data.setdefault("extruder_quality", []).append(extruder_serialized)