Browse Source

Update InsertAtLayerChange.py

I removed the period from the G-code to insert label for consistency. I also added a third option to this called "Skip layers". This allows you to insert gcode with a specific number of layers skipped (i.e. skip layers 1 will insert gcode every other layer, skip layers 3 will insert every fourth).

As an example, this change allowed me to insert a nozzle cleaning routine in my gcode without having to run it EVERY layer.
tastyratz 2 years ago
parent
commit
09d1becf1e
1 changed files with 19 additions and 6 deletions
  1. 19 6
      plugins/PostProcessingPlugin/scripts/InsertAtLayerChange.py

+ 19 - 6
plugins/PostProcessingPlugin/scripts/InsertAtLayerChange.py

@@ -26,27 +26,40 @@ class InsertAtLayerChange(Script):
                 },
                 "gcode_to_add":
                 {
-                    "label": "G-code to insert.",
+                    "label": "G-code to insert",
                     "description": "G-code to add before or after layer change.",
                     "type": "str",
                     "default_value": ""
+                },
+                "skip_layers":
+                {
+                    "label": "Skip layers",
+                    "description": "Number of layers to skip between insertions (0 for every layer).",
+                    "type": "int",
+                    "default_value": 0,
+                    "minimum_value": 0
                 }
             }
         }"""
 
     def execute(self, data):
         gcode_to_add = self.getSettingValueByKey("gcode_to_add") + "\n"
+        skip_layers = self.getSettingValueByKey("skip_layers")
+        count = 0
         for layer in data:
             # Check that a layer is being printed
             lines = layer.split("\n")
             for line in lines:
                 if ";LAYER:" in line:
                     index = data.index(layer)
-                    if self.getSettingValueByKey("insert_location") == "before":
-                        layer = gcode_to_add + layer
-                    else:
-                        layer = layer + gcode_to_add
+                    if count == 0:
+                        if self.getSettingValueByKey("insert_location") == "before":
+                            layer = gcode_to_add + layer
+                        else:
+                            layer = layer + gcode_to_add
+
+                        data[index] = layer
 
-                    data[index] = layer
+                    count = (count + 1) % (skip_layers + 1)
                     break
         return data