Skip to content

octoprint.slicing#

In this module the slicing support of OctoPrint is encapsulated.

.. autoclass:: SlicingProfile :members:

.. autoclass:: TemporaryProfile :members:

.. autoclass:: SlicingManager :members:

SlicingManager #

The :class:SlicingManager is responsible for managing available slicers and slicing profiles.

Parameters:

Name Type Description Default
profile_path str

Absolute path to the base folder where all slicing profiles are stored.

required
printer_profile_manager ~octoprint.printer.profile.PrinterProfileManager

:class:~octoprint.printer.profile.PrinterProfileManager instance to use for accessing available printer profiles, most importantly the currently selected one.

required

all_profiles(slicer, require_configured=False) #

Retrieves all profiles for slicer slicer.

If require_configured is set to True (default is False), only will return the profiles if the slicer is already configured, otherwise a :class:SlicerNotConfigured exception will be raised.

Parameters:

Name Type Description Default
slicer str

Identifier of the slicer for which to retrieve all slicer profiles

required
require_configured boolean

Whether to require the slicer slicer to be already configured (True) or not (False, default). If False and the slicer is not yet configured, a :class:~octoprint.slicing.exceptions.SlicerNotConfigured exception will be raised.

False

Returns:

Type Description

dict of SlicingProfile: A dict of all :class:SlicingProfile instances available for the slicer slicer, mapped by the identifier.

Raises:

Type Description
~octoprint.slicing.exceptions.UnknownSlicer

The slicer slicer is unknown.

~octoprint.slicing.exceptions.SlicerNotConfigured

The slicer slicer is not configured and require_configured was True.

cancel_slicing(slicer_name, source_path, dest_path) #

Cancels the slicing job on slicer slicer_name from source_path to dest_path.

Parameters:

Name Type Description Default
slicer_name str

Identifier of the slicer on which to cancel the job.

required
source_path str

The absolute path to the source file being sliced.

required
dest_path str

The absolute path to the destination file being sliced to.

required

Raises:

Type Description
~octoprint.slicing.exceptions.UnknownSlicer

The slicer specified via slicer_name is unknown.

configured_slicers() property #

Returns:

Type Description

(list of str) Identifiers of all available configured slicers.

default_slicer() property #

Retrieves the default slicer.

Returns:

Type Description

(str) The identifier of the default slicer or None if the default slicer is not registered in the system.

delete_profile(slicer, name) #

Deletes the profile name for the specified slicer.

If the profile does not exist, nothing will happen.

Parameters:

Name Type Description Default
slicer str

Identifier of the slicer for which to delete the profile.

required
name str

Identifier of the profile to delete.

required

Raises:

Type Description
~octoprint.slicing.exceptions.UnknownSlicer

The slicer slicer is unknown.

~octoprint.slicing.exceptions.CouldNotDeleteProfile

There was an error while deleting the profile.

get_profile_path(slicer, name, must_exist=False) #

Retrieves the path to the profile named name for slicer slicer.

If must_exist is set to True (defaults to False) a :class:UnknownProfile exception will be raised if the profile doesn't exist yet.

Parameters:

Name Type Description Default
slicer str

Identifier of the slicer to which the profile belongs to.

required
name str

Identifier of the profile for which to retrieve the path.

required
must_exist boolean

Whether the path must exist (True) or not (False, default).

False

Returns:

Name Type Description
str

The absolute path to the profile identified by name for slicer slicer.

Raises:

Type Description
~octoprint.slicing.exceptions.UnknownSlicer

The slicer slicer is unknown.

~octoprint.slicing.exceptions.UnknownProfile

The profile named name doesn't exist and must_exist was True.

get_slicer(slicer, require_configured=True) #

Retrieves the slicer named slicer. If require_configured is set to True (the default) an exception will be raised if the slicer is not yet configured.

Parameters:

Name Type Description Default
slicer str

Identifier of the slicer to return

required
require_configured boolean

Whether to raise an exception if the slicer has not been configured yet (True, the default), or also return an unconfigured slicer (False).

True

Raises:

Type Description
~octoprint.slicing.exceptions.UnknownSlicer

The slicer is unknown.

~octoprint.slicing.exceptions.SlicerNotConfigured

The slicer is not yet configured and require_configured was set to True.

get_slicer_profile_path(slicer) #

Retrieves the path where the profiles for slicer slicer are stored.

Parameters:

Name Type Description Default
slicer str

Identifier of the slicer for which to retrieve the path.

required

Returns:

Name Type Description
str

The absolute path to the folder where the slicer's profiles are stored.

Raises:

Type Description
~octoprint.slicing.exceptions.UnknownSlicer

The slicer slicer is unknown.

initialize() #

Initializes the slicing manager by loading and initializing all available :class:~octoprint.plugin.SlicerPlugin implementations.

load_profile(slicer, name, require_configured=True) #

Loads the slicing profile for slicer with the given profile name and returns it. If it can't be loaded due to an :class:IOError None will be returned instead.

If require_configured is True (the default) a :class:SlicerNotConfigured exception will be raised if the indicated slicer has not yet been configured.

Returns:

Name Type Description
SlicingProfile

The requested slicing profile or None if it could not be loaded.

Raises:

Type Description
~octoprint.slicing.exceptions.UnknownSlicer

The slicer specified via slicer is unknown.

~octoprint.slicing.exceptions.SlicerNotConfigured

The slicer specified via slicer has not yet been configured and require_configured was True.

~octoprint.slicing.exceptions.UnknownProfile

The profile for slicer slicer named name does not exist.

profiles_last_modified(slicer) #

Retrieves the last modification date of slicer's profiles.

Parameters:

Name Type Description Default
slicer str

the slicer for which to retrieve the last modification date

required

Returns:

Type Description

(float) the time stamp of the last modification of the slicer's profiles

registered_slicers() property #

Returns:

Type Description

(list of str) Identifiers of all available slicers.

reload_slicers() #

Retrieves all registered :class:~octoprint.plugin.SlicerPlugin implementations and registers them as available slicers.

save_profile(slicer, name, profile, overrides=None, allow_overwrite=True, display_name=None, description=None) #

Saves the slicer profile profile for slicer slicer under name name.

profile may be either a :class:SlicingProfile or a :class:dict.

If it's a :class:SlicingProfile, its :attr:~SlicingProfile.slicer``, :attr:~SlicingProfile.nameand - if provided - :attr:~SlicingProfile.display_nameand :attr:~SlicingProfile.description` attributes will be overwritten with the supplied values.

If it's a :class:dict, a new :class:SlicingProfile instance will be created with the supplied meta data and the profile data as the :attr:~SlicingProfile.data attribute.

.. note::

If the profile is the first profile to be saved for the slicer, it will automatically be marked as default.

Parameters:

Name Type Description Default
slicer str

Identifier of the slicer for which to save the profile.

required
name str

Identifier under which to save the profile.

required
profile SlicingProfile or dict

The :class:SlicingProfile or a :class:dict containing the profile data of the profile the save.

required
overrides dict

Overrides to apply to the profile before saving it.

None
allow_overwrite boolean

If True (default) if a profile for the same slicer of the same name already exists, it will be overwritten. Otherwise an exception will be thrown.

True
display_name str

The name to display to the user for the profile.

None
description str

A description of the profile.

None

Returns:

Name Type Description
SlicingProfile

The saved profile (including the applied overrides).

Raises:

Type Description
ValueError

The supplied profile is neither a :class:SlicingProfile nor a :class:dict.

~octoprint.slicing.exceptions.UnknownSlicer

The slicer slicer is unknown.

~octoprint.slicing.exceptions.ProfileAlreadyExists

A profile with name name already exists for slicer and allow_overwrite is False.

set_default_profile(slicer, name, require_configured=False, require_exists=True) #

Sets the given profile as default profile for the slicer.

Parameters:

Name Type Description Default
slicer str

Identifier of the slicer for which to set the default profile.

required
name str

Identifier of the profile to set as default.

required
require_configured bool

Whether the slicer needs to be configured for the action to succeed. Defaults to false. Will raise a SlicerNotConfigured error if true and the slicer has not been configured yet.

False
require_exists bool

Whether the profile is required to exist in order to be set as default. Defaults to true. Will raise a UnknownProfile error if true and the profile is unknown.

True

Raises:

Type Description
~octoprint.slicing.exceptions.UnknownSlicer

The slicer slicer is unknown

~octoprint.slicing.exceptions.SlicerNotConfigured

The slicer slicer has not yet been configured and require_configured was true.

~octoprint.slicing.exceptions.UnknownProfile

The profile name was unknown for slicer slicer and require_exists was true.

slice(slicer_name, source_path, dest_path, profile_name, callback, callback_args=None, callback_kwargs=None, overrides=None, on_progress=None, on_progress_args=None, on_progress_kwargs=None, printer_profile_id=None, position=None) #

Slices source_path to dest_path using slicer slicer_name and slicing profile profile_name. Since slicing happens asynchronously, callback will be called when slicing has finished (either successfully or not), with callback_args and callback_kwargs supplied.

If callback_args is left out, an empty argument list will be assumed for the callback. If callback_kwargs is left out, likewise an empty keyword argument list will be assumed for the callback. Note that in any case the callback must support being called with the following optional keyword arguments:

_analysis If the slicer returned analysis data of the created machine code as part of its slicing result, this keyword argument will contain that data. _error If there was an error while slicing this keyword argument will contain the error message as returned from the slicer. _cancelled If the slicing job was cancelled this keyword argument will be set to True.

Additionally callees may specify overrides for the specified slicing profile, e.g. a different extrusion temperature than defined in the profile or a different layer height.

With on_progress, on_progress_args and on_progress_kwargs, callees may specify a callback plus arguments and keyword arguments to call upon progress reports from the slicing job. The progress callback will be called with a keyword argument _progress containing the current slicing progress as a value between 0 and 1 plus all additionally specified args and kwargs.

If a different printer profile than the currently selected one is to be used for slicing, its id can be provided via the keyword argument printer_profile_id.

If the source_path is to be a sliced at a different position than the print bed center, this position can be supplied as a dictionary defining the x and y coordinate in print bed coordinates of the model's center.

Parameters:

Name Type Description Default
slicer_name str

The identifier of the slicer to use for slicing.

required
source_path str

The absolute path to the source file to slice.

required
dest_path str

The absolute path to the destination file to slice to.

required
profile_name str

The name of the slicing profile to use.

required
callback callable

A callback to call after slicing has finished.

required
callback_args list or tuple

Arguments of the callback to call after slicing has finished. Defaults to an empty list.

None
callback_kwargs dict

Keyword arguments for the callback to call after slicing has finished, will be extended by _analysis, _error or _cancelled as described above! Defaults to an empty dictionary.

None
overrides dict

Overrides for the printer profile to apply.

None
on_progress callable

Callback to call upon slicing progress.

None
on_progress_args list or tuple

Arguments of the progress callback. Defaults to an empty list.

None
on_progress_kwargs dict

Keyword arguments of the progress callback, will be extended by _progress as described above! Defaults to an empty dictionary.

None
printer_profile_id str

Identifier of the printer profile for which to slice, if another than the one currently selected is to be used.

None
position dict

Dictionary containing the x and y coordinate in the print bed's coordinate system of the sliced model's center. If not provided the model will be positioned at the print bed's center. Example: dict(x=10,y=20).

None

Raises:

Type Description
~octoprint.slicing.exceptions.UnknownSlicer

The slicer specified via slicer_name is unknown.

~octoprint.slicing.exceptions.SlicerNotConfigured

The slice specified via slicer_name is not configured yet.

slicing_enabled() property #

Returns:

Type Description

(boolean) True if there is at least one configured slicer available, False otherwise.

SlicingProfile #

A wrapper for slicing profiles, both meta data and actual profile data.

Parameters:

Name Type Description Default
slicer str

Identifier of the slicer this profile belongs to.

required
name str

Identifier of this slicing profile.

required
data object

Profile data, actual structure depends on individual slicer implementation.

required
display_name str

Displayable name for this slicing profile.

None
description str

Description of this slicing profile.

None
default bool

Whether this is the default slicing profile for the slicer.

False

TemporaryProfile #

A wrapper for a temporary slicing profile to be used for a slicing job, based on a :class:SlicingProfile with optional overrides applied through the supplied save_profile method.

Usage example:

.. code-block:: python

temporary = TemporaryProfile(my_slicer.save_slicer_profile, my_default_profile, overrides=my_overrides) with (temporary) as profile_path: my_slicer.do_slice(..., profile_path=profile_path, ...)

Parameters:

Name Type Description Default
save_profile callable

Method to use for saving the temporary profile, also responsible for applying the supplied overrides. This will be called according to the method signature of :meth:~octoprint.plugin.SlicerPlugin.save_slicer_profile.

required
profile SlicingProfile

The profile from which to derive the temporary profile.

required
overrides dict

Optional overrides to apply to the profile for creation of the temporary profile.

None
Back to top