52 lines
1.5 KiB
INI
52 lines
1.5 KiB
INI
# Cancel object (aka Marlin/RRF M486 commands) support
|
||
#
|
||
# Enable object exclusion
|
||
[exclude_object]
|
||
|
||
[gcode_macro M486]
|
||
gcode:
|
||
# Parameters known to M486 are as follows:
|
||
# [C<flag>] Cancel the current object
|
||
# [P<index>] Cancel the object with the given index
|
||
# [S<index>] Set the index of the current object.
|
||
# If the object with the given index has been canceled, this will cause
|
||
# the firmware to skip to the next object. The value -1 is used to
|
||
# indicate something that isn’t an object and shouldn’t be skipped.
|
||
# [T<count>] Reset the state and set the number of objects
|
||
# [U<index>] Un-cancel the object with the given index. This command will be
|
||
# ignored if the object has already been skipped
|
||
|
||
{% if 'exclude_object' not in printer %}
|
||
{action_raise_error("[exclude_object] is not enabled")}
|
||
{% endif %}
|
||
|
||
{% if 'T' in params %}
|
||
EXCLUDE_OBJECT RESET=1
|
||
|
||
{% for i in range(params.T | int) %}
|
||
EXCLUDE_OBJECT_DEFINE NAME={i}
|
||
{% endfor %}
|
||
{% endif %}
|
||
|
||
{% if 'C' in params %}
|
||
EXCLUDE_OBJECT CURRENT=1
|
||
{% endif %}
|
||
|
||
{% if 'P' in params %}
|
||
EXCLUDE_OBJECT NAME={params.P}
|
||
{% endif %}
|
||
|
||
{% if 'S' in params %}
|
||
{% if params.S == '-1' %}
|
||
{% if printer.exclude_object.current_object %}
|
||
EXCLUDE_OBJECT_END NAME={printer.exclude_object.current_object}
|
||
{% endif %}
|
||
{% else %}
|
||
EXCLUDE_OBJECT_START NAME={params.S}
|
||
{% endif %}
|
||
{% endif %}
|
||
|
||
{% if 'U' in params %}
|
||
EXCLUDE_OBJECT RESET=1 NAME={params.U}
|
||
{% endif %}
|