octoprint.slicing#
In this module the slicing support of OctoPrint is encapsulated.
.. autoclass:: SlicingProfile :members:
.. autoclass:: TemporaryProfile :members:
.. autoclass:: SlicingManager :members:
SlicingManager(profile_path, printer_profile_manager)
#
The :class:SlicingManager is responsible for managing available slicers and slicing profiles.
Parameters:
-
profile_path
(
str) –Absolute path to the base folder where all slicing profiles are stored.
-
printer_profile_manager
(
~octoprint.printer.profile.PrinterProfileManager) –:class:
~octoprint.printer.profile.PrinterProfileManagerinstance to use for accessing available printer profiles, most importantly the currently selected one.
configured_slicers
property
#
Returns:
-
–
(list of str) Identifiers of all available configured slicers.
default_slicer
property
#
Retrieves the default slicer.
Returns:
-
–
(str) The identifier of the default slicer or
Noneif the default slicer is not registered in the system.
registered_slicers
property
#
Returns:
-
–
(list of str) Identifiers of all available slicers.
slicing_enabled
property
#
Returns:
-
–
(boolean) True if there is at least one configured slicer available, False otherwise.
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:
-
slicer
(
str) –Identifier of the slicer for which to retrieve all slicer profiles
-
require_configured
(
boolean) –Whether to require the slicer
slicerto be already configured (True) or not (False, default). If False and the slicer is not yet configured, a :class:~octoprint.slicing.exceptions.SlicerNotConfiguredexception will be raised.
Returns:
-
–
dict of SlicingProfile: A dict of all :class:
SlicingProfileinstances available for the slicerslicer, mapped by the identifier.
Raises:
-
~octoprint.slicing.exceptions.UnknownSlicer–The slicer
sliceris unknown. -
~octoprint.slicing.exceptions.SlicerNotConfigured–The slicer
sliceris not configured andrequire_configuredwas True.
cancel_slicing(slicer_name, source_path, dest_path)
#
Cancels the slicing job on slicer slicer_name from source_path to dest_path.
Parameters:
-
slicer_name
(
str) –Identifier of the slicer on which to cancel the job.
-
source_path
(
str) –The absolute path to the source file being sliced.
-
dest_path
(
str) –The absolute path to the destination file being sliced to.
Raises:
-
~octoprint.slicing.exceptions.UnknownSlicer–The slicer specified via
slicer_nameis unknown.
delete_profile(slicer, name)
#
Deletes the profile name for the specified slicer.
If the profile does not exist, nothing will happen.
Parameters:
-
slicer
(
str) –Identifier of the slicer for which to delete the profile.
-
name
(
str) –Identifier of the profile to delete.
Raises:
-
~octoprint.slicing.exceptions.UnknownSlicer–The slicer
sliceris 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:
-
slicer
(
str) –Identifier of the slicer to which the profile belongs to.
-
name
(
str) –Identifier of the profile for which to retrieve the path.
-
must_exist
(
boolean) –Whether the path must exist (True) or not (False, default).
Returns:
-
str –
The absolute path to the profile identified by
namefor slicerslicer.
Raises:
-
~octoprint.slicing.exceptions.UnknownSlicer–The slicer
sliceris unknown. -
~octoprint.slicing.exceptions.UnknownProfile–The profile named
namedoesn't exist andmust_existwas 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:
-
slicer
(
str) –Identifier of the slicer to return
-
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).
Raises:
-
~octoprint.slicing.exceptions.UnknownSlicer–The
sliceris unknown. -
~octoprint.slicing.exceptions.SlicerNotConfigured–The
sliceris not yet configured andrequire_configuredwas set to True.
get_slicer_profile_path(slicer)
#
Retrieves the path where the profiles for slicer slicer are stored.
Parameters:
-
slicer
(
str) –Identifier of the slicer for which to retrieve the path.
Returns:
-
str –
The absolute path to the folder where the slicer's profiles are stored.
Raises:
-
~octoprint.slicing.exceptions.UnknownSlicer–The slicer
sliceris 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:
-
SlicingProfile –
The requested slicing profile or None if it could not be loaded.
Raises:
-
~octoprint.slicing.exceptions.UnknownSlicer–The slicer specified via
sliceris unknown. -
~octoprint.slicing.exceptions.SlicerNotConfigured–The slicer specified via
slicerhas not yet been configured andrequire_configuredwas True. -
~octoprint.slicing.exceptions.UnknownProfile–The profile for slicer
slicernamednamedoes not exist.
profiles_last_modified(slicer)
#
Retrieves the last modification date of slicer's profiles.
Parameters:
-
slicer
(
str) –the slicer for which to retrieve the last modification date
Returns:
-
–
(float) the time stamp of the last modification of the slicer's profiles
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:
-
slicer
(
str) –Identifier of the slicer for which to save the
profile. -
name
(
str) –Identifier under which to save the
profile. -
profile
(
SlicingProfile or dict) –The :class:
SlicingProfileor a :class:dictcontaining the profile data of the profile the save. -
overrides
(
dict) –Overrides to apply to the
profilebefore saving it. -
allow_overwrite
(
boolean) –If True (default) if a profile for the same
slicerof the samenamealready exists, it will be overwritten. Otherwise an exception will be thrown. -
display_name
(
str) –The name to display to the user for the profile.
-
description
(
str) –A description of the profile.
Returns:
-
SlicingProfile –
The saved profile (including the applied overrides).
Raises:
-
ValueError–The supplied
profileis neither a :class:SlicingProfilenor a :class:dict. -
~octoprint.slicing.exceptions.UnknownSlicer–The slicer
sliceris unknown. -
~octoprint.slicing.exceptions.ProfileAlreadyExists–A profile with name
namealready exists forslicerandallow_overwriteis False.
set_default_profile(slicer, name, require_configured = False, require_exists = True)
#
Sets the given profile as default profile for the slicer.
Parameters:
-
slicer
(
str) –Identifier of the slicer for which to set the default profile.
-
name
(
str) –Identifier of the profile to set as default.
-
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.
-
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.
Raises:
-
~octoprint.slicing.exceptions.UnknownSlicer–The slicer
sliceris unknown -
~octoprint.slicing.exceptions.SlicerNotConfigured–The slicer
slicerhas not yet been configured andrequire_configuredwas true. -
~octoprint.slicing.exceptions.UnknownProfile–The profile
namewas unknown for slicerslicerandrequire_existswas 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:
-
slicer_name
(
str) –The identifier of the slicer to use for slicing.
-
source_path
(
str) –The absolute path to the source file to slice.
-
dest_path
(
str) –The absolute path to the destination file to slice to.
-
profile_name
(
str) –The name of the slicing profile to use.
-
callback
(
callable) –A callback to call after slicing has finished.
-
callback_args
(
list or tuple) –Arguments of the callback to call after slicing has finished. Defaults to an empty list.
-
callback_kwargs
(
dict) –Keyword arguments for the callback to call after slicing has finished, will be extended by
_analysis,_erroror_cancelledas described above! Defaults to an empty dictionary. -
overrides
(
dict) –Overrides for the printer profile to apply.
-
on_progress
(
callable) –Callback to call upon slicing progress.
-
on_progress_args
(
list or tuple) –Arguments of the progress callback. Defaults to an empty list.
-
on_progress_kwargs
(
dict) –Keyword arguments of the progress callback, will be extended by
_progressas described above! Defaults to an empty dictionary. -
printer_profile_id
(
str) –Identifier of the printer profile for which to slice, if another than the one currently selected is to be used.
-
position
(
dict) –Dictionary containing the
xandycoordinate 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).
Raises:
-
~octoprint.slicing.exceptions.UnknownSlicer–The slicer specified via
slicer_nameis unknown. -
~octoprint.slicing.exceptions.SlicerNotConfigured–The slice specified via
slicer_nameis not configured yet.
SlicingProfile(slicer, name, data, display_name = None, description = None, default = False)
#
A wrapper for slicing profiles, both meta data and actual profile data.
Parameters:
-
slicer
(
str) –Identifier of the slicer this profile belongs to.
-
name
(
str) –Identifier of this slicing profile.
-
data
(
object) –Profile data, actual structure depends on individual slicer implementation.
-
display_name
(
str) –Displayable name for this slicing profile.
-
description
(
str) –Description of this slicing profile.
-
default
(
bool) –Whether this is the default slicing profile for the slicer.
TemporaryProfile(save_profile, profile, overrides = None)
#
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:
-
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. -
profile
(
SlicingProfile) –The profile from which to derive the temporary profile.
-
overrides
(
dict) –Optional overrides to apply to the
profilefor creation of the temporary profile.