From 59727875db6e574124ab73713d4cd40167cc47b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 14 May 2014 09:19:50 +0200 Subject: [PATCH] Only interpret stand alone T{n} as a tool change command Compare https://groups.google.com/forum/#!topic/octoprint/X8t1btetMmg --- src/octoprint/util/gcodeInterpreter.py | 57 ++++++++++++++------------ 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/src/octoprint/util/gcodeInterpreter.py b/src/octoprint/util/gcodeInterpreter.py index bf5ddb9e..603bf8fb 100644 --- a/src/octoprint/util/gcodeInterpreter.py +++ b/src/octoprint/util/gcodeInterpreter.py @@ -83,27 +83,10 @@ class gcode(object): self._filamentDiameter = 0.0 line = line[0:line.find(';')] - T = getCodeInt(line, 'T') - if T is not None: - posOffset[0] -= offsets[currentExtruder]["x"] if currentExtruder < len(offsets) else 0 - posOffset[1] -= offsets[currentExtruder]["y"] if currentExtruder < len(offsets) else 0 - - currentExtruder = T - - posOffset[0] += offsets[currentExtruder]["x"] if currentExtruder < len(offsets) else 0 - posOffset[1] += offsets[currentExtruder]["y"] if currentExtruder < len(offsets) else 0 - - if len(currentE) <= currentExtruder: - for i in range(len(currentE), currentExtruder + 1): - currentE.append(0.0) - if len(maxExtrusion) <= currentExtruder: - for i in range(len(maxExtrusion), currentExtruder + 1): - maxExtrusion.append(0.0) - if len(totalExtrusion) <= currentExtruder: - for i in range(len(totalExtrusion), currentExtruder + 1): - totalExtrusion.append(0.0) - G = getCodeInt(line, 'G') + M = getCodeInt(line, 'M') + T = getCodeInt(line, 'T') + if G is not None: if G == 0 or G == 1: #Move x = getCodeFloat(line, 'X') @@ -204,13 +187,33 @@ class gcode(object): posOffset[1] = pos[1] - y if z is not None: posOffset[2] = pos[2] - z - else: - M = getCodeInt(line, 'M') - if M is not None: - if M == 82: #Absolute E - absoluteE = True - elif M == 83: #Relative E - absoluteE = False + + elif M is not None: + if M == 82: #Absolute E + absoluteE = True + elif M == 83: #Relative E + absoluteE = False + + elif T is not None: + self._logger.info("Switched to tool T%d" % T) + posOffset[0] -= offsets[currentExtruder]["x"] if currentExtruder < len(offsets) else 0 + posOffset[1] -= offsets[currentExtruder]["y"] if currentExtruder < len(offsets) else 0 + + currentExtruder = T + + posOffset[0] += offsets[currentExtruder]["x"] if currentExtruder < len(offsets) else 0 + posOffset[1] += offsets[currentExtruder]["y"] if currentExtruder < len(offsets) else 0 + + if len(currentE) <= currentExtruder: + for i in range(len(currentE), currentExtruder + 1): + currentE.append(0.0) + if len(maxExtrusion) <= currentExtruder: + for i in range(len(maxExtrusion), currentExtruder + 1): + maxExtrusion.append(0.0) + if len(totalExtrusion) <= currentExtruder: + for i in range(len(totalExtrusion), currentExtruder + 1): + totalExtrusion.append(0.0) + if self.progressCallback is not None: self.progressCallback(100.0)