From 09d1becf1e21dfead6ee3b574cfed41d24d3f31d Mon Sep 17 00:00:00 2001 From: tastyratz Date: Sun, 5 Mar 2023 11:48:45 -0500 Subject: [PATCH] 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. --- .../scripts/InsertAtLayerChange.py | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/plugins/PostProcessingPlugin/scripts/InsertAtLayerChange.py b/plugins/PostProcessingPlugin/scripts/InsertAtLayerChange.py index 5fb506b42b..8cadceb528 100644 --- a/plugins/PostProcessingPlugin/scripts/InsertAtLayerChange.py +++ b/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