-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathidex.cfg
265 lines (217 loc) · 9.81 KB
/
idex.cfg
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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
[gcode_macro IDEX_SINGLE]
gcode:
# parameters
{% set init = params.INIT|default(0)|int %}
{% set new_x = params.X|default(-1)|int %}
# config
{% set idex_mode = printer["dual_carriage"].carriage_1|lower %}
{% set speed = printer["gcode_macro RatOS"].toolchange_travel_speed * 60 %}
{% set default_toolhead = printer["gcode_macro RatOS"].default_toolhead|default(0)|int %}
{% set acceleration = printer["gcode_macro RatOS"].toolchange_travel_accel %}
{% set printable_x = printer["gcode_macro RatOS"].printable_x %}
{% set printable_center = (printable_x[1] - printable_x[0]) / 2 %}
{% set home = printer["gcode_macro RatOS"].parking_position %}
{% if idex_mode == "copy" or idex_mode == "mirror" or init == 1 %}
# reset gcode offset
{% if 'x' in printer.toolhead.homed_axes %}
{% if idex_mode == "copy" or idex_mode == "mirror" %}
G1 X{printable_center} F{(speed)}
SET_GCODE_OFFSET X_ADJUST={printable_center / 2} MOVE=0
{% endif %}
{% endif %}
# activate default carriage
SET_DUAL_CARRIAGE CARRIAGE={default_toolhead} MODE=PRIMARY
# set toolheads
{% if 'x' in printer.toolhead.homed_axes %}
G90 # absolute positioning
# move secondary toolhead to parking position
SET_VELOCITY_LIMIT ACCEL={acceleration} ACCEL_TO_DECEL={(acceleration/2)}
SET_DUAL_CARRIAGE CARRIAGE={0 if default_toolhead==1 else 1}
G1 X{home[0 if default_toolhead==1 else 1]} F{(speed)}
# move default toolhead to its new position
SET_DUAL_CARRIAGE CARRIAGE={default_toolhead}
{% if new_x == -1 %}
{% set new_x = printable_center %}
{% endif %}
G1 X{new_x} F{(speed)}
SET_VELOCITY_LIMIT ACCEL={printer.toolhead.max_accel} ACCEL_TO_DECEL={(printer.toolhead.max_accel/2)}
M400 # wait for movements
{% endif %}
# set extruder motion queue
ACTIVATE_EXTRUDER EXTRUDER=extruder{'' if default_toolhead==0 else default_toolhead}
SYNC_EXTRUDER_MOTION EXTRUDER=extruder MOTION_QUEUE=extruder
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder1
# set toolhead offset
_SET_OFFSET T={default_toolhead}
# update mainsail UI
SET_GCODE_VARIABLE MACRO=T0 VARIABLE=active VALUE={True if default_toolhead==0 else False}
SET_GCODE_VARIABLE MACRO=T1 VARIABLE=active VALUE={True if default_toolhead==1 else False}
{% endif %}
[gcode_macro IDEX_COPY]
gcode:
# parameters
{% set dance = params.DANCE|default(1)|int %}
# config
{% set idex_mode = printer["dual_carriage"].carriage_1|lower %}
{% set speed = printer["gcode_macro RatOS"].toolchange_travel_speed * 60 %}
{% set acceleration = printer["gcode_macro RatOS"].toolchange_travel_accel %}
{% set printable_x = printer["gcode_macro RatOS"].printable_x %}
{% set printable_center = (printable_x[1] - printable_x[0]) / 2 %}
{% set default_toolhead = printer["gcode_macro RatOS"].default_toolhead|default(0)|int %}
# set idex mode
{% if "xyz" in printer.toolhead.homed_axes %}
{% if idex_mode != "copy" %}
{% if idex_mode == "primary" or idex_mode == "inactive" %}
_IDEX_CENTER_TOOLHEADS
{% endif %}
# set extruder motion queue
ACTIVATE_EXTRUDER EXTRUDER='extruder'
SYNC_EXTRUDER_MOTION EXTRUDER=extruder MOTION_QUEUE=extruder
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder
# activate copy mode
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=COPY
# set toolhead offset
{% if idex_mode != "mirror" %}
SET_GCODE_OFFSET X_ADJUST=-{printable_center / 2} MOVE=0
{% else %}
_SET_OFFSET T={default_toolhead}
{% endif %}
# dance
{% if dance == 1 %}
SET_VELOCITY_LIMIT ACCEL={acceleration} ACCEL_TO_DECEL={(acceleration/2)}
G1 X{printable_center} F{(speed)}
G1 X{printable_center - 30} F{(speed)}
G1 X{printable_center + 30} F{(speed)}
G1 X{printable_center} F{(speed)}
SET_VELOCITY_LIMIT ACCEL={printer.toolhead.max_accel} ACCEL_TO_DECEL={(printer.toolhead.max_accel/2)}
{% endif %}
# update mainsail UI
SET_GCODE_VARIABLE MACRO=T0 VARIABLE=active VALUE=True
SET_GCODE_VARIABLE MACRO=T1 VARIABLE=active VALUE=True
{% endif %}
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
[gcode_macro IDEX_MIRROR]
gcode:
# parameters
{% set dance = params.DANCE|default(1)|int %}
# config
{% set idex_mode = printer["dual_carriage"].carriage_1|lower %}
{% set speed = printer["gcode_macro RatOS"].toolchange_travel_speed * 60 %}
{% set acceleration = printer["gcode_macro RatOS"].toolchange_travel_accel %}
{% set printable_x = printer["gcode_macro RatOS"].printable_x %}
{% set printable_center = (printable_x[1] - printable_x[0]) / 2 %}
{% set default_toolhead = printer["gcode_macro RatOS"].default_toolhead|default(0)|int %}
{% set home = printer["gcode_macro RatOS"].parking_position %}
# set idex mode
{% if "xyz" in printer.toolhead.homed_axes %}
{% if idex_mode != "mirror" %}
{% if idex_mode == "primary" or idex_mode == "inactive" %}
_IDEX_CENTER_TOOLHEADS
{% endif %}
# set extruder motion queue
ACTIVATE_EXTRUDER EXTRUDER='extruder'
SYNC_EXTRUDER_MOTION EXTRUDER=extruder MOTION_QUEUE=extruder
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder
# activate mirror mode
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=MIRROR
# set toolhead offset
{% if idex_mode != "copy" %}
SET_GCODE_OFFSET X_ADJUST=-{printable_center / 2} MOVE=0
{% else %}
_SET_OFFSET T={default_toolhead}
{% endif %}
# dance
{% if dance == 1 %}
SET_VELOCITY_LIMIT ACCEL={acceleration} ACCEL_TO_DECEL={(acceleration/2)}
G1 X{printable_center} F{(speed)}
G1 X{printable_center - 30} F{(speed)}
G1 X{printable_center + 30} F{(speed)}
G1 X{printable_center} F{(speed)}
SET_VELOCITY_LIMIT ACCEL={printer.toolhead.max_accel} ACCEL_TO_DECEL={(printer.toolhead.max_accel/2)}
{% endif %}
# update mainsail UI
SET_GCODE_VARIABLE MACRO=T0 VARIABLE=active VALUE=True
SET_GCODE_VARIABLE MACRO=T1 VARIABLE=active VALUE=True
{% endif %}
{% else %}
{action_respond_info("Printer not homed")}
{% endif %}
[gcode_macro _IDEX_CENTER_TOOLHEADS]
gcode:
# idex mode
{% set idex_mode = printer["dual_carriage"].carriage_1|lower %}
{% set act_t = 1 if idex_mode == 'primary' else 0 %}
# config
{% set speed = printer["gcode_macro RatOS"].toolchange_travel_speed * 60 %}
{% set acceleration = printer["gcode_macro RatOS"].toolchange_travel_accel %}
{% set printable_x = printer["gcode_macro RatOS"].printable_x %}
{% set printable_center = (printable_x[1] - printable_x[0]) / 2 %}
{% set default_toolhead = printer["gcode_macro RatOS"].default_toolhead|default(0)|int %}
{% set home = printer["gcode_macro RatOS"].parking_position %}
# reset toolhead offset
{% if act_t != default_toolhead %}
_SET_OFFSET T={default_toolhead} MOVE=1
{% endif %}
# set acceleration
SET_VELOCITY_LIMIT ACCEL={acceleration} ACCEL_TO_DECEL={(acceleration/2)}
# make sure inactive toolhead is in its parking position
SET_DUAL_CARRIAGE CARRIAGE={0 if act_t==1 else 1} MODE=PRIMARY
G1 X{home[0 if act_t==1 else 1]} F{(speed)}
# move dc toolhead to its new position in case its already active
{% if act_t == 1 %}
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=PRIMARY
G1 X{printable_center / 2 + printable_center} F{(speed)}
{% endif %}
# move x toolhead to its new position
SET_DUAL_CARRIAGE CARRIAGE=0 MODE=PRIMARY
G1 X{printable_center / 2} F{(speed)}
# move dc toolhead to its new position
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=PRIMARY
G1 X{printable_center / 2 + printable_center} F{(speed)}
[gcode_macro IDEX_PARK]
gcode:
# get IDEX mode
{% set idex_mode = 'none' %}
{% if printer["dual_carriage"] is defined %}
{% set idex_mode = printer["dual_carriage"].carriage_1|lower %}
{% endif %}
# park active toolhead
{% if "xyz" in printer.toolhead.homed_axes %}
{% if idex_mode != 'copy' or idex_mode != 'mirror' %}
PARK_TOOLHEAD
{% endif %}
{% endif %}
[gcode_macro IDEX_CONFIG]
gcode:
{% if params.ZHOP is defined %}
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE=toolchange_zhop VALUE={params.ZHOP|default(1.0)|float}
{% endif %}
{% if params.COMBINED_ZHOP is defined %}
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE=toolchange_combined_zhop VALUE={params.COMBINED_ZHOP|default(0)|int}
{% endif %}
{% if params.M400 is defined %}
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE=toolchange_m400 VALUE={params.M400|default(1)|int}
{% endif %}
{% if params.EXTRUDE is defined %}
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE=toolchange_extrusion VALUE={params.EXTRUDE|default('[0.8,0.8]')}
{% endif %}
{% if params.RETRACT is defined %}
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE=toolchange_retraction VALUE={params.RETRACT|default('[0.8,0.8]')}
{% endif %}
{% if params.FEEDRATE is defined %}
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE=toolchange_feedrate VALUE={params.FEEDRATE|default('[7200,7200]')}
{% endif %}
{% if params.SPEED is defined %}
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE=toolchange_travel_speed VALUE={params.SPEED|default(300)}
{% endif %}
{% if params.ACCEL is defined %}
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE=toolchange_travel_accel VALUE={params.ACCEL|default(5000)}
{% endif %}
{% if params.SYNC_FANS is defined %}
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE=toolchange_sync_fans VALUE={params.SYNC_FANS|default(0)}
{% endif %}
{% if params.RETRACT is defined %}
SET_GCODE_VARIABLE MACRO=RatOS VARIABLE=toolchange_retraction VALUE={params.RETRACT|default('[0.8,0.8]')}
{% endif %}