From 2715a209225b74fdbcb7993f04838ebc89994c86 Mon Sep 17 00:00:00 2001 From: Wayne Porter Date: Mon, 10 Sep 2018 12:25:01 -0700 Subject: [PATCH] Add insert gcode at layer change to PostProcessingPlugin --- .../InsertAtLayerChange.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 plugins/PostProcessingPlugin/InsertAtLayerChange.py diff --git a/plugins/PostProcessingPlugin/InsertAtLayerChange.py b/plugins/PostProcessingPlugin/InsertAtLayerChange.py new file mode 100644 index 0000000000..df045e1490 --- /dev/null +++ b/plugins/PostProcessingPlugin/InsertAtLayerChange.py @@ -0,0 +1,55 @@ +# Created by Wayne Porter + +from ..Script import Script + +class InsertAtLayerChange(Script): + def __init__(self): + super().__init__() + + def getSettingDataString(self): + return """{ + "name": "Insert at layer change", + "key": "InsertAtLayerChange", + "metadata": {}, + "version": 2, + "settings": + { + "insert_loc": + { + "label": "When to insert", + "description": "Whether to insert code before or after layer change.", + "type": "enum", + "options": {"before": "Before", "after": "After"}, + "default_value": "before" + }, + "gcode_to_add": + { + "label": "GCODE to insert.", + "description": "GCODE to add before or after layer change.", + "type": "str", + "default_value": "" + } + } + }""" + + def execute(self, data): + in_layer = False + gcode_to_add = self.getSettingValueByKey("gcode_to_add") + "\n" + for layer in data: + # Check that a layer is being printed + lines = layer.split("\n") + if ";LAYER:" in lines[0]: + in_layer = True + else: + in_layer = False + + if in_layer: + index = data.index(layer) + if self.getSettingValueByKey("insert_loc") == "before": + layer = gcode_to_add + layer + else: + layer = layer + gcode_to_add + + data[index] = layer + + return data