#Name: HomeLayerlogic #Info: Home each X layer #Depend: GCode #Type: postprocess #Param: homeLayer(float:1) Home each X layer #Param: retractAmount(float:5) Retraction amount (mm) #Param: primeAmount(float:4.5) Prime amount (mm) __copyright__ = "Copyright (C) 2013 Sverrir Fannar - Released under terms of the AGPLv3 License" import re def getValue(line, key, default = None): if not key in line or (';' in line and line.find(key) > line.find(';')): return default subPart = line[line.find(key) + 1:] m = re.search('^[0-9]+\.?[0-9]*', subPart) if m is None: return default try: return float(m.group(0)) except: return default with open(filename, "r") as f: lines = f.readlines() z = 0. x = 0. y = 0. allow = 0 layers = 0 currentSectionType = 'STARTOFFILE' with open(filename, "w") as f: for line in lines: f.write(line) if line.startswith(';'): #if line.find(";total_layers"): # allow = 1 if line.find(";LAYER:") != -1:# and allow == 1: layers = layers + 1 #Home all axis if (layers%homeLayer) == 0: f.write("M83\n") #Retract f.write("G1 E-%f F6000\n" % (retractAmount)) #Home f.write("G28 X Y; Home X Y so that it stays aligned\n") f.write("G1 E%f F6000\n" % (primeAmount)) f.write("M82\n")