-
-
Notifications
You must be signed in to change notification settings - Fork 968
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
Add "Manual filament change" option and logic #2379
Add "Manual filament change" option and logic #2379
Conversation
The only thing that may cause a bit of trouble on this is changing the configs to update for this. The config value is defaulted to true (as i figure a majority of printers don't have an AMS/multi extruder system) which may cause issues for edge cases. There are a few paths that I see, but I don't know which is best
|
fd7dfb4
to
120d00a
Compare
Awesome. I suggest we disable it by default. |
…ment-swap' into patch-add-manual-filament-swap
@SoftFever just made that change |
@Ocraftyone Thank you for your patience. |
I have a bit of concern about when the tag is inserted in to the code. I'll look into it a bit more later tonight. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@SoftFever I just made a review with my concerns
@@ -261,7 +261,7 @@ namespace Slic3r { | |||
Last_Line_M73_Placeholder, | |||
Estimated_Printing_Time_Placeholder, | |||
Total_Layer_Number_Placeholder, | |||
Tool_Change, | |||
MANUAL_TOOL_CHANGE, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wouldn't it be better to keep the tag variable name in camel case to match the format of the other tags? For example, Manual_Tool_Change. (To be clear, I am perfectly fine with how the tag presents in gcode)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are right.
It is better to make it consistent 👍
src/libslic3r/GCodeWriter.cpp
Outdated
@@ -309,7 +309,7 @@ std::string GCodeWriter::update_progress(unsigned int num, unsigned int tot, boo | |||
|
|||
std::string GCodeWriter::toolchange_prefix() const | |||
{ | |||
return config.manual_filament_change ? ";" + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Tool_Change) + "T" : | |||
return config.manual_filament_change ? ";" + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::MANUAL_TOOL_CHANGE): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a reason for dropping the "T" here? The T is currently used when processing the tag as it removes the tag then passes the rest to the original process_T method (See GCodeProcessor::process_tags Line 2122). This could be modified, but I think the T also makes it a bit clearer what the number means.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I didn't mean to delete the T, must be deleted by accident.
if (! ((m_config.manual_filament_change.value && m_toolchange_count > 0) //Orca: Ignore change_filament_gcode if is the first call for a tool change and manual_filament_change is enabled | ||
|| change_filament_gcode.empty())) { | ||
//Orca: Ignore change_filament_gcode if is the first call for a tool change and manual_filament_change is enabled | ||
if (!change_filament_gcode.empty() && !(m_config.manual_filament_change.value && m_toolchange_count == 1)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The previous code didn't work
@@ -3478,6 +3478,8 @@ void TabPrinter::build_unregular_pages(bool from_initial_build/* = false*/) | |||
} | |||
}); | |||
}; | |||
optgroup->append_single_option_line("manual_filament_change"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Move the option into SEMM group
@Ocraftyone |
@Ocraftyone |
Sorry. Only concern I have is that I originally tried using the SEMM optgroup, but I believe the on change function has been changed and doesn't update the plate correctly. Is that working for you? (Like mark the option and it prompts you to reslice) |
Changing to other optGroup won't affect it. |
Thank you for this work... I tested it and it works well... GREAAAATTTT!!!! |
I did try it, and the printer indeed stopped at the correct layer but there was no way of 'resuming' the printing after my manual filament change. Selecting the 'Resume' command didn't work as klipper/mainsail said it wasn't in a 'pauzed' state. What did I miss? |
You need to configure your "Change filament G-code" on the machine G-code tab and the corresponding macro on your klipper configuration. For example, I use the M600 G-code command and I have a M600 macro where I first save the position, then move the nozzle forward and unload the filament. Then I load the new filament and click resume and that's it. |
thanks
thanks, that'll do the job. I've found a nice example M600 macro on reddit and I adjusted the pause position to the place of my purge bucket |
How can I test this before the stable release? |
Visit Actions > Build OrcaSlicer > Select the topmost option for the latest nightly release > download the file that matches your OS |
Thank you, |
Orca 1.8.1 still pauses after purge, before Layer 1 starts |
Please share the macro you are using... even with 1.8.1 this is still pausing for me after purge line completes. thx! |
Have you enabled the manual change option on the printer settings?? |
Thank you for the help! Yes but not a single search across all settings. Would love to see a single global search. Settings are divided between Printer/Machine, Filament, and 'Project' (left part of the menu that is not actually labelled). Not always obvious where to go hunting. |
Hello, But when printing it didn't pause to change the filament... |
This option does a few things that make a SEMM setup where you are manually swapping the filament on pauses a bit easier
disables calling the "on filament change" gcode during setup. This may be useful on a machine that can change the filament itself, but for manually changing the filament, it is an unnecessary pause. It should be assumed the first inserted filament is the first one to be used.
tool change command is changed to a gcode tag. This prevents errors on machines that do not understand the command possibly resulting in a failed print (or at least error messages).
fixes #1377 and fixes #2230 and fixes #2356