-
Notifications
You must be signed in to change notification settings - Fork 0
/
gcode_timelapser.py
66 lines (51 loc) · 2.15 KB
/
gcode_timelapser.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
park_pos_x = 0 # mm
park_pos_y = 160.9 # mm
retract_length = 15 # mm
push_length = 1 # mm
push_time = 100 # in ms
shutter_time = 1000 # in ms
gcode_raw = "EBHME_v1.2" # .gcode
gcode_new = gcode_raw + "_timelapse"
gcode_file = gcode_raw + ".gcode"
gcode_file_new = gcode_new + ".gcode"
g = open(gcode_file, "r")
g_new = open(gcode_file_new, "w")
last_g1 = ""
while True:
line = g.readline()
if not line:
break
if ("G1" in line or "G0" in line) and ("X" in line or "Y" in line):
temp_line = line.split(" X")[1]
if " " in temp_line:
last_x_pos = float(temp_line[:temp_line.find(" ")])
else:
last_x_pos = float(temp_line[:temp_line.find("\n")])
temp_line = line.split(" Y")[1]
if " " in temp_line:
last_y_pos = float(temp_line[:temp_line.find(" ")])
else:
last_y_pos = float(temp_line[:temp_line.find("\n")])
if ";" not in line and "E" in line and "G1" in line:
temp_line = line.split(" E")[1]
if " " in temp_line:
last_e_pos = float(temp_line[:temp_line.find(" ")])
else:
last_e_pos = float(temp_line[:temp_line.find("\n")])
#last_e_pos = float(line[(line.find("E") + 1):])
if ";LAYER:" in line and ";LAYER:0" not in line:
g_new.write(";TimeLapse\n")
# RETRACT
retracted_extruder = str(round(last_e_pos - retract_length, 5))
g_new.write("G1 F4200 E" + retracted_extruder + "\n")
# parking
g_new.write("G1 F9000 X" + str(park_pos_x) + " Y" + str(park_pos_y) + " ; Push button\n")
g_new.write("MP400 ;Wait for move\n")
g_new.write("G4 P" + str(push_time) + " ;Wait for push time\n")
g_new.write("G1 F9000 Y" + str(park_pos_y-push_length) + "\n") # pushed back from button a little bit
g_new.write("G4 P" + str(shutter_time) + " ;Wait for shutter\n")
# back to prev pos
g_new.write("G1 F9000 X" + str(last_x_pos) + " Y" + str(last_y_pos) + "\n")
# unretract
g_new.write("G1 F4200 E" + str(last_e_pos) + "\n")
g_new.write(line)