Dateianhang 'ChangeFilamentAtZ_HP_mod.py'
Herunterladen 1 #Name: Change Filament At Z
2 #Info: Pause the print at a certain height, move to a specified parking location, disable extruder stepper
3 #Help: ChangeFilamentAtZ
4 #Depend: GCode
5 #Type: postprocess
6 #Param: targetZ(float:5.0) Z height to pause at (mm)
7 #Param: parkX(float:190) Head park X (mm)
8 #Param: parkY(float:190) Head park Y (mm)
9 #Param: parkZ(float:150) Head park Z (mm)
10 #Param: retractAmount(float:5) Retraction amount (mm)
11
12 ## Written by Steven Morlock, smorloc@gmail.com
13 ## This script is licensed under the Creative Commons - Attribution - Share Alike (CC BY-SA) terms
14
15 import re
16
17 def getValue(line, key, default = None):
18 if not key in line or (';' in line and line.find(key) > line.find(';')):
19 return default
20 subPart = line[line.find(key) + 1:]
21 m = re.search('^[0-9]+\.?[0-9]*', subPart)
22 if m == None:
23 return default
24 try:
25 return float(m.group(0))
26 except:
27 return default
28
29 with open(filename, "r") as f:
30 lines = f.readlines()
31
32 z = 0
33 x = 0
34 y = 0
35 pauseState = 0
36 with open(filename, "w") as f:
37 for line in lines:
38 if getValue(line, 'G', None) == 1 or getValue(line, 'G', None) == 0:
39 newZ = getValue(line, 'Z', z)
40 x = getValue(line, 'X', x)
41 y = getValue(line, 'Y', y)
42 if newZ != z:
43 z = newZ
44 if z < targetZ and pauseState == 0:
45 pauseState = 1
46 if z >= targetZ and pauseState == 1:
47 pauseState = 2
48 f.write("; Plugin: start ChangeFilamentAtZ\n")
49 # Retract
50 f.write("M83\n") # Set E codes relative while in Absolute Coordinates (G90)
51 f.write("G1 E-%f F6000\n" % (retractAmount))
52 # Move the head to specified location
53 f.write("G1 X%f Y%f Z%f F9000\n" % (parkX, parkY, parkZ))
54 # Disable extruder stepper
55 f.write("M84 E\n")
56 # Wait until the user continues printing
57 f.write("M0\n")
58 # Move the head back to printing location
59 f.write("G28 X0 Y0")
60 f.write("G1 X0 Y0 F1500")
61 f.write("G1 E10 F500")
62 f.write("G1 X%f Y%f F9000\n" % (x, y))
63 f.write("G1 E0 F6000\n")
64 f.write("G1 F9000\n")
65 f.write("M82\n") # Set E codes absolute (default)
66 f.write("; Plugin: end ChangeFilamentAtZ\n")
67 f.write(line)
Gespeicherte Dateianhänge
Um Dateianhänge in eine Seite einzufügen sollte unbedingt eine Angabe wie attachment:dateiname benutzt werden, wie sie auch in der folgenden Liste der Dateien erscheint. Es sollte niemals die URL des Verweises ("laden") kopiert werden, da sich diese jederzeit ändern kann und damit der Verweis auf die Datei brechen würde.Sie dürfen keine Anhänge an diese Seite anhängen!