Created
February 6, 2019 10:17
-
-
Save maximkulkin/fdfbf3284db62d76375ce006a7938869 to your computer and use it in GitHub Desktop.
Ultimaker Cura script to head nozzle and bed at the same time
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from ..Script import Script | |
import re | |
## Modifies G-Code to start nozzle heating without waiting for bed reaching | |
# defined temperature which speeds up print start. | |
# | |
# Due to technical limitations, the search can't cross the border between | |
# layers. | |
class HeatBedAndNozzleAtTheSameTime(Script): | |
def getSettingDataString(self): | |
return """{ | |
"name": "Heat bed and nozzle at the same time", | |
"key": "HeatBedAndNozzleAtTheSameTime", | |
"metadata": {}, | |
"version": 2, | |
"settings": {} | |
}""" | |
def execute(self, data): | |
for layerno, layer in enumerate(data): | |
bed_temperature, bed_temperature_line = None, -1 | |
nozzle_temperature, nozzle_temperature_line = None, -1 | |
lines = layer.split('\n') | |
for lineno, line in enumerate(lines): | |
if line.startswith('M190'): | |
m = re.search(' S(\d+)', line) | |
if m: | |
bed_temperature = int(m.group(1)) | |
bed_temperature_line = lineno | |
break | |
for lineno, line in enumerate(lines): | |
if line.startswith('M104'): | |
m = re.search(' S(\d+)', line) | |
if m: | |
nozzle_temperature = int(m.group(1)) | |
nozzle_temperature_line = lineno | |
break | |
if bed_temperature or nozzle_temperature: | |
commands = [] | |
temperature_line = len(lines) | |
if bed_temperature >= 0: | |
commands.append('M140 S%d' % bed_temperature) | |
temperature_line = min(temperature_line, bed_temperature_line) | |
if nozzle_temperature >= 0: | |
commands.append('M104 S%d' % nozzle_temperature) | |
temperature_line = min(temperature_line, nozzle_temperature_line) | |
data[layerno] = '\n'.join( | |
lines[:temperature_line] + commands + lines[temperature_line:] | |
) | |
break | |
return data |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment