Browse Source

Properly catch when either extruder or global quality is not properly set

Cornercase, but it avoids bubbling odd error messages to the UI.

Fixes CURA-1997
Arjen Hiemstra 8 years ago
parent
commit
0f1c59c925
1 changed files with 8 additions and 0 deletions
  1. 8 0
      plugins/GCodeWriter/GCodeWriter.py

+ 8 - 0
plugins/GCodeWriter/GCodeWriter.py

@@ -90,12 +90,20 @@ class GCodeWriter(MeshWriter):
         prefix_length = len(prefix)
 
         container_with_profile = stack.findContainer({"type": "quality"})
+        if not container_with_profile:
+            Logger.log("e", "No valid quality profile found, not writing settings to GCode!")
+            return ""
+
         flat_global_container = self._createFlattenedContainerInstance(stack.getTop(),container_with_profile)
         serialized = flat_global_container.serialize()
         data = {"global_quality": serialized}
 
         for extruder in ExtruderManager.getInstance().getMachineExtruders(stack.getId()):
             extruder_quality = extruder.findContainer({"type": "quality"})
+            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)
 
             extruder_serialized = flat_extruder_quality.serialize()