Skip to content

Conversation

@Ocraftyone
Copy link
Contributor

@Ocraftyone Ocraftyone commented Mar 29, 2024

Add Spoolman support to OrcaSlicer!

Spoolman is a self-hosted database of your spools of filament and how much has been used. This update now allows OrcaSlicer to directly access your Spoolman database to create and update filament profiles. One central database of all of your spool settings means less time inputting filament parameters.

Currently, this implementation is designed to only work with Klipper printers that have moonraker also set up with Spoolman. A macro can then be called at the beginning of each spool's custom gcode to load the spool via moonraker. Moonraker will then track how much filament was used and report that back to Spoolman.

Demo:
spoolman demo

Filament config values that are set

Spoolman Specific:

  • spoolman_spool_id
  • spoolman_remaining_weight
  • spoolman_used_weight
  • spoolman_remaining_length
  • spoolman_used_length
  • spoolman_archived

Filament Options:

  • filament_type
  • filament_vendor
  • filament_cost
  • filament_density
  • filament_diameter
  • nozzle_temperature_initial_layer (set by adding 5 degrees to normal temp)
  • nozzle_temperature
  • hot_plate_temp_initial_layer (set by adding 5 degrees to normal temp)
  • hot_plate_temp
  • default_filament_colour

Other ideas to expand functionality:

  • Check if spool has enough material to finish print upon slicing
  • Add option to "consume" filament upon upload
  • Store the entire filament configuration in Spoolman (via the Spoolman API's "extras" section)

Possible Changes:
Statistics are currently a config value that is updated upon request, but I am considering making it so they are just pulled when you select a Spoolman spool This has been implemented.

Moonraker Docs on how to setup Spoolman integration: https://moonraker.readthedocs.io/en/latest/configuration/#spoolman
Spoolman Project: https://github.com/Donkie/Spoolman

fixes #2955

-Spoolman utility class that fetches the spools, creates filament presets, and updates filament presets
-Add config entries for all needed values
make the config argument const. Allows more flexibility when calling it and in its current implementation, non-const access is not needed.
add force and detach options to create function

move call to get_filament_id past failure checks in the create function. It takes a few seconds to run and it is better to not run it if you don't have to

create get_name_from_spool function
Wouldn't load the filament if the "inherits" preset is not a base preset. The check is now done and it gets the base preset's parent if it needs to.
Added dialog itself

Added as it an item on the PlaterPresetCombobox

New extra renderer that renders a color in a dataview cell
# Conflicts:
#	src/libslic3r/Preset.cpp
#	src/slic3r/CMakeLists.txt
Merge in previous commit had a conflict that caused compile error.

Refactor code from merge to make it more readable

Add Refresh statement in the update to fix weird artifacting after selecting certain host types
Add Spoolman::is_server_valid()

Check validity of server in SpoolmanImportDialog and in Tab when clicking the update buttons

Hide the update buttons if Spoolman ID is 0

Check results from spool update when updating spools
@Ocraftyone
Copy link
Contributor Author

Ocraftyone commented Mar 29, 2024

@Noisyfox I did a refactor of a few lines of PhysicalPrinterDialog in 4ec7c12 that makes it a bit more readable with my changes. I don't believe I broke any of the functionality of your SimplyPrint integration, but if you could take a look at it and confirm, it would be much appreciated.

Also minor fix regarding hiding scrollbars
@YanceyA
Copy link

YanceyA commented Mar 29, 2024

This is great! Big kudos for the work.

@Zimbo111
Copy link

If Spoolman could be integrated like this, it would be great. Many thanks for the work . I hope it will be implemented

@CooperGerman
Copy link

can't wait to see this integrated =)

@Ocraftyone
Copy link
Contributor Author

I was taking a bit of a break from this to work on the CMake system overhaul PR. Moving back to this to hopefully get it finished up 😊

…poolman-support

# Conflicts:
#	src/libslic3r/Preset.cpp
@besser
Copy link

besser commented Apr 20, 2024

@Ocraftyone this integration you did was awesome!!!
Can't wait to see this integrated too :)

@Jesibu
Copy link

Jesibu commented May 12, 2024

Can't wait to see this released :)

@StuSerious
Copy link

Spoolman is now able to pull from a global database of filaments, materials and manufacturers (see https://github.com/Donkie/SpoolmanDB), should you be interested in implementing it as a feature (say to search for your new spool directly in the slicer) I'd be willing to help test/develop!

@lindnjoe
Copy link

This is pretty amazing work, thanks for this!

@Ken6432
Copy link

Ken6432 commented Oct 27, 2025

@Ocraftyone - Sorry to sound like a broken record, but after installing v2.3.1, I see that Spoolman is not implemented in it. Isn't it possible to get Spoolman incorporated in such a way that it is automatically incorporated in new versions? Either way, could you please update your build so that we can run v2.3.1 with Spoolman? -- Thanks

@Ocraftyone
Copy link
Contributor Author

@Ken6432 No worries, I understand. Every time I push new changes to this PR, new build files are made, I just forget to update the link. This link will list all of the successful builds for this PR. The top one should always be the latest.

@Ken6432
Copy link

Ken6432 commented Oct 28, 2025

@Ocraftyone - Thanks for the reply. I'm still not up to speed on how all of these builds work. Does this mean it will now be in tomorrow's build?

@Ocraftyone
Copy link
Contributor Author

@Ken6432 The official code for the slicer is in SoftFever's OrcaSlicer repo. I have made a copy of that repo that I write my code changes to. This PR (Pull Request) is a proposal to take the code changes on my repo and add them to the official OrcaSlicer repo. The changes in this proposal have not been added to the official code yet as it is still in development. While it is in development, you will have to use the link above if you want the spoolman functionality. I will continue to update my repo from SoftFever's to keep the versions up to date. Only when this PR is marked as "Merged" will it be in the official OrcaSlicer repo.

@Ken6432
Copy link

Ken6432 commented Oct 28, 2025

@Ocraftyone - OK, thanks, that helps me understand it better. I love the functionality, thanks for make it available

@Zimbo111
Copy link

So far, I only know about integrating the web interface with spoolman. But is there any way I can import the filaments into the Orca slucer, as shown in the PR video where you can select them?

@StellaLupus
Copy link

@Ocraftyone
First of all thanks for your work.
I tested your build and I think there is bug:
When importing filament from Spoolman, there are no default settings for bed and hotend temperatures. The created profile sets the temperature to 5, but the profile the import is based on has a different temperature.
I think if the temperature isn't configured in Spoolman, it needs to be cloned from the source profile.

@Zimbo111
Copy link

Why can install it and test?

# Conflicts:
#	src/libslic3r/Preset.cpp
#	src/libslic3r/PresetBundle.cpp
#	src/libslic3r/Print.cpp
#	src/libslic3r/Print.hpp
#	src/slic3r/GUI/NotificationManager.cpp
#	src/slic3r/GUI/NotificationManager.hpp
#	src/slic3r/GUI/Plater.cpp
#	src/slic3r/GUI/Plater.hpp
#	src/slic3r/GUI/PresetComboBoxes.cpp
#	src/slic3r/GUI/Tab.cpp
@StellaLupus
Copy link

Why can install it and test?

#4771 (comment)

@Zimbo111
Copy link

@StellaLupus can you show me, how i can install a version with spoolman integration.?

@locki-cz
Copy link

locki-cz commented Nov 6, 2025

@Ocraftyone First of all thanks for your work. I tested your build and I think there is bug: When importing filament from Spoolman, there are no default settings for bed and hotend temperatures. The created profile sets the temperature to 5, but the profile the import is based on has a different temperature. I think if the temperature isn't configured in Spoolman, it needs to be cloned from the source profile.

same problem there

@StellaLupus
Copy link

how i can install a version with spoolman integration.?

Open the link. There all builds with this PR. Click on latest build (first). Below you can see the download links.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Community testers wanted Looking for community testers and feedback

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Spoolman intergration - Request Filaments IDs