-
Notifications
You must be signed in to change notification settings - Fork 0
/
P1S_Change_Filament_1.24
159 lines (148 loc) · 4.55 KB
/
P1S_Change_Filament_1.24
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
M620 S[next_extruder]A
M204 S9000
{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}
G17
G2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift
{endif}
G1 Z{max_layer_z + 3.0} F1200
G1 X70 F21000
G1 Y245
G1 Y265 F3000
M400
M106 P1 S0
M106 P2 S0
{if old_filament_temp > 142 && next_extruder < 255}
M104 S[old_filament_temp]
{endif}
G1 X90 F3000
G1 Y255 F4000
G1 X100 F5000
G1 X120 F15000
G1 X20 Y50 F21000
G1 Y-3
G1 E-20 F1800 ; retract filament by 20mm to save on purge amount
M400
{if toolchange_count == 2}
; get travel path for change filament
M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0
M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1
M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2
{endif}
M620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}
T[next_extruder]
M620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}
{if next_extruder < 255}
M400
; extrude 20mm after cutting
G1 E18 F{old_filament_e_feedrate *1.5} ; push down filament by 18mm since we previously retracted by 20mm
G1 E2 F20
M400
G92 E0
{if flush_length_1 > 1}
; FLUSH_START
; always use highest temperature to flush
M400
M109 S[nozzle_temperature_range_high]
{if flush_length_1 > 23.7}
G1 E23.7 F{old_filament_e_feedrate * 1.5} ; do not need pulsatile flushing for start part
G1 E{(flush_length_1 - 23.7) * 0.02} F100
G1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate * 1.5}
G1 E{(flush_length_1 - 23.7) * 0.02} F100
G1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate * 1.5}
G1 E{(flush_length_1 - 23.7) * 0.02} F100
G1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate * 1.5}
G1 E{(flush_length_1 - 23.7) * 0.02} F100
G1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate * 1.5}
{else}
G1 E{flush_length_1} F{old_filament_e_feedrate * 1.5}
{endif}
; FLUSH_END
G1 E-[old_retract_length_toolchange] F1800
G1 E[old_retract_length_toolchange] F300
{endif}
{if flush_length_2 > 1}
; FLUSH_START
G1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_2 * 0.02} F100
G1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_2 * 0.02} F100
G1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_2 * 0.02} F100
G1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_2 * 0.02} F100
G1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_2 * 0.02} F100
; FLUSH_END
G1 E-[new_retract_length_toolchange] F1800
G1 E[new_retract_length_toolchange] F300
{endif}
{if flush_length_3 > 1}
; FLUSH_START
G1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_3 * 0.02} F100
G1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_3 * 0.02} F100
G1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_3 * 0.02} F100
G1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_3 * 0.02} F100
G1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_3 * 0.02} F100
; FLUSH_END
G1 E-[new_retract_length_toolchange] F1800
G1 E[new_retract_length_toolchange] F300
{endif}
{if flush_length_4 > 1}
; FLUSH_START
G1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_4 * 0.02} F100
G1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_4 * 0.02} F100
G1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_4 * 0.02} F100
G1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_4 * 0.02} F100
G1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate * 1.5}
G1 E{flush_length_4 * 0.02} F100
; FLUSH_END
{endif}
; FLUSH_START
M400
M109 S[new_filament_temp]
G1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature
; FLUSH_END
M400
G92 E0
G1 E-[new_retract_length_toolchange] F1800
M106 P1 S255
M400 S3
G1 X80 F15000
G1 X60 F15000
G1 X80 F15000
G1 X60 F15000
G1 X80 F15000
G1 X60 F15000
G1 X80 F15000
G1 X60 F15000; shake to put down garbage
G1 X70 F5000
G1 X90 F3000
G1 Y255 F4000
G1 X100 F5000
G1 Y265 F5000
G1 X70 F10000
G1 X100 F5000
G1 X70 F10000
G1 X100 F5000
G1 X165 F15000; wipe and shake
G1 Y256 ; move Y to aside, prevent collision
M400
G1 Z{max_layer_z + 3.0} F3000
{if layer_z <= (initial_layer_print_height + 0.001)}
M204 S[initial_layer_acceleration]
{else}
M204 S[default_acceleration]
{endif}
{else}
G1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000
{endif}
M621 S[next_extruder]A