From afb4440d64494161b1a4eb041fcaeb21f44658af Mon Sep 17 00:00:00 2001 From: Thomas Kriechbaumer Date: Wed, 22 Aug 2018 13:46:49 +0200 Subject: [PATCH] add PauseAtHeight post-processing script for RRF --- .../PauseAtHeightRepRapFirmwareDuet.py | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 plugins/PostProcessingPlugin/scripts/PauseAtHeightRepRapFirmwareDuet.py diff --git a/plugins/PostProcessingPlugin/scripts/PauseAtHeightRepRapFirmwareDuet.py b/plugins/PostProcessingPlugin/scripts/PauseAtHeightRepRapFirmwareDuet.py new file mode 100644 index 0000000000..79e5d8c62d --- /dev/null +++ b/plugins/PostProcessingPlugin/scripts/PauseAtHeightRepRapFirmwareDuet.py @@ -0,0 +1,51 @@ +from ..Script import Script + +class PauseAtHeightRepRapFirmwareDuet(Script): + + def getSettingDataString(self): + return """{ + "name": "Pause at height for RepRapFirmware DuetWifi / Duet Ethernet / Duet Maestro", + "key": "PauseAtHeightRepRapFirmwareDuet", + "metadata": {}, + "version": 2, + "settings": + { + "pause_height": + { + "label": "Pause height", + "description": "At what height should the pause occur", + "unit": "mm", + "type": "float", + "default_value": 5.0 + } + } + }""" + + def execute(self, data): + current_z = 0. + pause_z = self.getSettingValueByKey("pause_height") + + layers_started = False + for layer_number, layer in enumerate(data): + lines = layer.split("\n") + for line in lines: + if ";LAYER:0" in line: + layers_started = True + continue + + if not layers_started: + continue + + if self.getValue(line, 'G') == 1 or self.getValue(line, 'G') == 0: + current_z = self.getValue(line, 'Z') + if current_z != None: + if current_z >= pause_z: + prepend_gcode = ";TYPE:CUSTOM\n" + prepend_gcode += "; -- Pause at height (%.2f mm) --\n" % pause_z + prepend_gcode += self.putValue(M = 226) + "\n" + layer = prepend_gcode + layer + + data[layer_number] = layer # Override the data of this layer with the modified data + return data + break + return data