---
tag: m0486
title: Cancel Objects
brief: Identify and cancel objects
author: thinkyhead

group: sdcard
requires: CANCEL_OBJECTS

codes: [ M486 ]

notes: |
  This G-code may not be widely supported by slicers for a while, but they do include helpful comments in the G-code output that includes the current object. So for now you can use a post-processing script to convert these comments into `M486` commands.
  #### Slicer post-processing scripts:
    - [`M486` for Průša Slicer](//github.com/paukstelis/PrusaSlicer-M486) by [Paul Paukstelis](//github.com/paukstelis).
    - [`M486` for Cura](//github.com/shinmai/cura-M486) by [Aapo Saaristo](//x.com/shinmai).

parameters:

- tag: C
  optional: true
  type: flag
  description: Cancel the current object.

- tag: P
  optional: true
  description: Cancel the object with the given index.
  values:
  - tag: index
    type: int

- tag: S
  optional: true
  description: 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.
  values:
  - tag: index
    type: int

- tag: T
  optional: true
  description: Reset the state and set the number of objects.
  values:
  - tag: count
    type: int

- tag: U
  optional: true
  description: Un-cancel the object with the given index. This command will be ignored if the object has already been skipped.
  values:
  - tag: index
    type: int

examples:
- pre: Typical usage in a G-code file
  code:
    - M486 T12 ; Total of 12 objects (otherwise the firmware must count)
    - M486 S3  ; Indicate that the 4th object is starting now
    - M486 S-1 ; Indicate a non-object, purge tower, or other global feature
    - M486 P10 ; Cancel object with index 10 (the 11th object)
    - M486 U2  ; Un-cancel object with index 2 (the 3rd object)
    - M486 C   ; Cancel the current object (use with care!)

---

Use `M486` to identify and cancel objects during a multi-object print job.

This command was originally developed for SD card printing but it works fine when host printing too. Of course, since hosts can skip objects more efficiently, host plugins are the better choice in that scenario.
