-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature: Add Spoolman Compatability #4771
base: main
Are you sure you want to change the base?
Conversation
-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
Also minor fix regarding hiding scrollbars
This is great! Big kudos for the work. |
If Spoolman could be integrated like this, it would be great. Many thanks for the work . I hope it will be implemented |
can't wait to see this integrated =) |
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
@Ocraftyone this integration you did was awesome!!! |
Can't wait to see this released :) |
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! |
-check if the base_preset is valid. If it isn't, the current edited preset is used -if there is an existing preset, check if it is a system preset. If it is, do not allow overwriting -update the generation of the preset name to include the printer name -only check for presets with the same spool ID within the list of compatible filament presets. users should be allowed to have different presets with the spool ID for different printers -check if the materials are the same between the spool and base_preset -when setting the "inherits" config value, get the first preset that is a system preset or base user preset in the inheritance hierarchy -add translation to messages -update get_preset_name() to prevent extra spaces
-general cleanup -remove the check to see if the spool's preset name is the same as the current preset's name. this is handled in the Spoolman create function -update how the error message is generated -properly handle wide unicode chars in the preset names -check for errors when retrying spools -add translation to messages
This feels so right! What an amazing job, I hope to see it on OrcaSlicer soon! |
This allows these options to be saved across printer presets. This commit removes the options from PhysicalPrinterDialog.cpp and does not include a way to set the values in the program. This will be implemented in a future commit.
…options Adds fake options that save to the app config. These options are available regardless of what host type is selected
…eset_from_spool When starting with an empty spoolman instance or after clearing the spoolman instance, spools should be pulled from the server the next time you try to do a spoolman action. This would not happen when calling Spoolman::update_filament_preset_from_spool because it was directly accessing the vector of spools rather than accessing them through the helper function
Hello all! Features since my last update:
Features TODO:
Here is a link to the latest build: https://github.com/SoftFever/OrcaSlicer/actions/runs/13477830428?pr=4771 Happy testing and thank you again! Edit 2/6: Update link to go directly to download |
Wow great work thanks you very much can’t wait to try this |
Looking forward to this as was able to import profiles, but really want that one central place for all my filaments, and them work together with HappyHare. Happy to be a tester and provide some feedback When you are ready for third party testing. |
This looks great! Thanks for doing this. I have one question. Previously, on the filament dialog's Advanced tab, I had to add the command "SET_ACTIVE_SPOOL ID=xx" in the start G-Code and "CLEAR_ACTIVE_SPOOL" in the end G-Code. When using this integration and having the spool number set on the Spoolman tab, are these commands still needed? Or, does the integration automatically add the g-code? If it is not automatically added, what is the suggested approach? -- Thanks! |
I had noticed this too while developing. I intentionally left it alone since there were other buttons that also had this issue. I figured that this could be resolved in a different PR that standardizes the buttons.
If you have an existing profile that you want to specify the spool ID for, you would just update the spool ID. If you then want to set the filament settings from Spoolman into the filament profile, you can press "Update Filament". @CooperGerman
This is something I will add as an option to the Spoolman config dialog As for Happy Hare: with the amount of people who are interested, I will be at the very least be including some basic compatibility features. I am not at all familiar with MMUs (I don't personally own one), so I will be relying on the community for testing and suggestions. I have read the basic documentation provided by @igiannakas (Thank you BTW) and basic implementation seems easy enough with the ability to expand later to a dedicated MMU dialog. Continuing with Happy Hare
I have been using the spool id rather than filament ID because that is what is needed to 'use' the specified filament. I guess in theory as long as there is only 1 spool per filament, it could work, but adding any more spools would get hairy. I figured it would be easy enough to change the spool ID to a new one when it ran out. The filament ID is still available behind the scenes, so it would be possible to add that data somewhere in the gcode for Happy Hare to read. The only current caveat to that solution is that Orca would have to connect to spoolman before the filament ID would become available. The only thing I store locally in the config is the spool_id. If you, @igiannakas, or anyone else would like to discuss it more, you can absolutely reach out on discord. There is currently a spoolman discussion open under orca-dev-forum on the OrcaSlicer server, or we can open a different Happy Hare specific one. |
I'm very excited to try this great feature, how can I test it? |
I will update this comment with a link to the latest files. Just click the link and get the correct file for your OS. |
I would like to be able to synchronize Orca with Spoolman server across all Orca's filaments and use synchronization data even if there is no connection with the server. Now, when changing the filament and trying to slice, you constantly get a warning from Orca that there is not enough filament and you have to go into the properties of the filament and update its data from Spoolman server. |
This will be great when it's working as expected along with Happy-Hare and Mainsail integration. I do have a problem though with the spoolman filament dialog. There is no way to increase the size of the window that's created by Orca to display Spoolman filament. leaving me with a very thin window with some scroll bars along side and bottom. |
I have noticed this while testing in WSL. I was hoping it was just some weirdness surrounding how WSL renders apps, but apparently not. I'll add this to my list of stuff to dig into 😄 |
I am not entirely sure what you are asking for, but I think you are asking to have the filament consumption details persist between instances of Orca. If the spoolman server is unreachable/not available, you should not get any notifications unless you are attempting to open the import dialog. This may break apart if you start with access to the spoolman server, then it becomes unavailable, but at that point you would already have the spool data cached in the orca instance and should only get an error if you are trying to import a spool or consume a spool. I have no intention of caching the data beyond the life of an instance of OrcaSlicer because I believe that negates the point. I think no data is better than stale data. If that is not what you were asking or you still have questions, please let me know 😄 |
Is there already a way to select the filaments inserted in spoolman directly in orca? |
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:

Filament config values that are set
Spoolman Specific:
Filament Options:
Other ideas to expand functionality:
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 spoolThis 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