-
-
Notifications
You must be signed in to change notification settings - Fork 2.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
Cura 4.1, does not execute extruder end gcode at end of print #5861
Comments
Hi @wookie666 ,
You can do things like |
Can I use if statements?
How would I write a statement if t0 then run this code and if T1 then run
this code.
…On Thu., 6 Jun. 2019, 5:22 pm Remco Burema, ***@***.***> wrote:
Hi @wookie666 <https://github.com/wookie666> ,
In s3d, i could use placeholders like, if currenttool=0 or currenttool=1.
but cura cant do this.
You can do things like T{extruder_nr} (or more specific things like
T{top_bottom_extruder_nr}) though, which will evaluate to T0, T1, etc.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#5861?email_source=notifications&email_token=AEDNT7DM6Z6PVIGP6L3UVQDPZC3MVA5CNFSM4HUZUNW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXB66FA#issuecomment-499379988>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AEDNT7AUQGITCI6AI3I6P73PZC3MVANCNFSM4HUZUNWQ>
.
|
Ah, I see the problem now, you'd need different paths for different tools. I'll discuss this with the others. |
Yes. Maybe even just a tickbox to be able to run the active tools end
script at the end of a print. That way it can be turned on or off. It will
solve the problem
…On Thu., 6 Jun. 2019, 7:33 pm Remco Burema, ***@***.***> wrote:
Ah, I see the problem now, you'd need different paths for different tools.
I'll discuss this with the others.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#5861?email_source=notifications&email_token=AEDNT7ETBUOVVMDZQVF3FP3PZDKYJA5CNFSM4HUZUNW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXCJKFQ#issuecomment-499422486>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AEDNT7AD4GXYCYEK54ZU3WDPZDKYJANCNFSM4HUZUNWQ>
.
|
I'm also looking forward to this |
One step further, you could also use |
We've discussed this in the team but decided that it's too much work for too little gain. The printers where this is necessary are rare, and we can't develop GUI elements for all minutiae without overloading users. Maybe we'll think of a solution some day, but we'll defer this for later work. |
Wait a minute. You can't put a simple toggle to include the tool end gcode
at the end of a print or not because it will overload users?
Seems like a pretty necessary function if you ask me. The tool is finished
being used so the end code should run.
At least give us a way to add it into the end gcode and be able to tell
which tool is active using IF statements so that we can put the tools away.
…On Fri., 7 Jun. 2019, 8:46 pm Ghostkeeper, ***@***.***> wrote:
We've discussed this in the team but decided that it's too much work for
too little gain. The printers where this is necessary are rare, and we
can't develop GUI elements for all minutiae without overloading users.
Maybe we'll think of a solution some day, but we'll defer this for later
work.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#5861?email_source=notifications&email_token=AEDNT7FUFDYZCAEKAU7AVHTPZI4BHA5CNFSM4HUZUNW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXFPP5A#issuecomment-499841012>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AEDNT7EZDK2BBRKQ2FCTMADPZI4BHANCNFSM4HUZUNWQ>
.
|
No, I said it's too much work for too little gain and that the printers where this is necessary are rare. I said that developing GUI elements for all minutiae [of printer configuration] would overload users. I understand that you think that your minutia is important, so if you'd like to do some of the work towards a solution, we'd love to see it. Otherwise you'll have to resort to modifying the configuration files manually in order to perform your if statements. Note that the front-end doesn't currently know which extruder the print ends with. If you're going to implement this, it'll need a change in CuraEngine as well to send that over. |
Is there a reason why "Extruder End G-code" is not executed at the end? I see no harm executing it at the end of every print, even on single extruder machines (they can be left blank). IMO No need to make any GUI or user options, just always execute it. |
This is what I've been saying.
…On Tue., 11 Jun. 2019, 4:18 am Block137, ***@***.***> wrote:
Is there a reason why "Extruder End G-code" is not executed at the end?
I see no harm executing it at the end of every print, even on single
extruder machines (they can be left blank).
IMO No need to make any GUI or user options, just always execute it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#5861?email_source=notifications&email_token=AEDNT7EVZ3A4IXLYZW4MBRDPZ2LF5A5CNFSM4HUZUNW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXKXMDQ#issuecomment-500528654>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AEDNT7FB3IO55FFOPLQJDJDPZ2LF5ANCNFSM4HUZUNWQ>
.
|
Some printers need to do something with the extruder just before switching away from it that doesn't necessarily need to happen at the end of a print. Stuff like parking a print head, moving to a switching bay, wiping off the nozzle on a brush, etc. If we were to force the extruder end g-code to happen always at the end of a print, it breaks the behaviour for those printers. We figured that if it's really necessary you could always put some g-code at the end g-code field or even just |
No but it wouldn't hurt to happen at the end
…On Tue., 11 Jun. 2019, 5:45 am Ghostkeeper, ***@***.***> wrote:
Some printers need to do something with the extruder just before switching
away from it that doesn't necessarily need to happen at the end of a print.
Stuff like parking a print head, moving to a switching bay, wiping off the
nozzle on a brush, etc.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#5861?email_source=notifications&email_token=AEDNT7FIX4BT5GFSQI3UTP3PZ2VN3A5CNFSM4HUZUNW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXLAVQQ#issuecomment-500566722>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AEDNT7GV6QB3WMOTVJN7CJTPZ2VN3ANCNFSM4HUZUNWQ>
.
|
If it doesn't hurt to happen at the end, you might as well paste the end g-code for all extruders in your printer's global end g-code (through the bracket syntax as above, or just copy-pasting the actual g-code). For some printers it does hurt. |
You don't seem to get it. Each extruder has different park positions. How
hard is it to add the damn code. Fuck just tell me what I need to change in
the printer config at least.
…On Tue., 11 Jun. 2019, 5:38 pm Ghostkeeper, ***@***.***> wrote:
If it doesn't hurt to happen at the end, you might as well paste the end
g-code for all extruders in your printer's global end g-code (through the
bracket syntax as above, or just copy-pasting the actual g-code). For some
printers it does hurt.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#5861?email_source=notifications&email_token=AEDNT7FYRNLBB5WNHANGBGDPZ5JBFA5CNFSM4HUZUNW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXMHI6Q#issuecomment-500724858>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AEDNT7FK4SH44MD6VD7NRCDPZ5JBFANCNFSM4HUZUNWQ>
.
|
What @Ghostkeeper meant is then just park each extruder at the end, so even when you only use the first extruder, also park the seconde one (in addition to the first), even if you don't use it. You can do that by adding in the overall end code If adding (an) extra extruder move(s) at the end doesn't hurt other people (as you say), then why would it suddenly hurt in your case? Sorry, I know it must be very frustrating on your end, but please consider this: |
I do think I've understood what you're asking. You're just asking a whole slew of different things. Here are some requests that I can gather from this thread and their answers:
No, it should not be put the extruder end g-code at the end of the print. That is the current expected behaviour.
Yes, but only when writing the .def.json file. Not from the interface.
You currently can't, because the front-end doesn't know what extruder the print is going to end with. So even if you are writing the .def.json files with if statements, there is nothing your if statement can check on.
That is a valid feature request, but we've deferred this because the use case is rare. We may implement it some day if we find that the priority increases. Or we may accept changes by someone else if that reduces the workload on the developers.
Yes. Some printers break when an extruder end g-code is executed at the end of the print, for the same reason as when your printer breaks when all extruder end g-codes are executed. |
I cant Park both heads because what happens, is
Head 1 is in use mounted.
Head 2 is parked already.
Head one then gets parked.
IF head two then tries to get parked, the main holder will crash into the
parked head 2.
Hence why i need to know {activeextruder} or something like that.
There has to be a way i can add if statements to the end gcode to check
which head is active and then run that code only.
something like if activetool = t0 {G1 Xxxx Yxxx Zxxx}
Is this at all possible
…On Tue, Jun 11, 2019 at 10:36 PM Remco Burema ***@***.***> wrote:
What @Ghostkeeper <https://github.com/Ghostkeeper> meant is *then just
park each extruder* at the end, so even when you only use the first
extruder, also park the seconde one (in addition to the first), even if you
don't use it. You can do that by adding *in the overall end code*
{machine_extruder_end_code,0}\n{machine_extruder_end_code,1} (or more if
you have more extruders). This is also something you could add to the
configuration.
If adding (an) extra extruder move(s) at the end doesn't hurt other people
(as you say), then why would it suddenly hurt in your case?
Sorry, I know it must be very frustrating on your end, but please consider
this:
Yes it's small, but you're not the only one asking for a change to that
menu. And it *would* eventually look like a parody of itself. Yes it's
small, but we *literally* have at least 1000 small(er) things that we
could do that people are at least as passionate about. And *every* one
(or nearly so) of those changes has to go through review, component test,
QA and sometimes system testing. Because it *will* break something else
(and maybe that something is someone elses printer...)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#5861?email_source=notifications&email_token=AEDNT7AAQVWRITZB6JX4P5TPZ6L5DA5CNFSM4HUZUNW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXM66CI#issuecomment-500821769>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AEDNT7EFRJUWPA2H4EB3FK3PZ6L5DANCNFSM4HUZUNWQ>
.
|
You keep telling me to put the extruder end code at the end print code. You
dont seem to understand, that they park at difference locations, If i try
to park a tool that is already parked, or try to pickup a tool that is
already picked up, there will be a crash
I have already implemented new gcode commands into marlin, where i place a
endstop in the toolholder that is triggered if the tool is loaded in the
tool bay. This way when i implement G6 T0, or G7 T0. it docks or undocks
T0.
Marlin then handles the if statement to either run the code or skip it
depending on the state of the endstop.
The issue is, i did this for a friend, and i use Smoothie, and have since
not be able to figure out how to add the same functionality to smoothie.
Basically, you'r saying that its too difficult to add a damn tick box,
which would solve every issue, because use case is rare, which is the exact
reason why a tickbox would be perfect. Seems legit.
Thanks for nothing then.
…On Tue, Jun 11, 2019 at 10:44 PM Ghostkeeper ***@***.***> wrote:
I do think I've understood what you're asking. You're just asking a whole
slew of different things. Here are some requests that I can gather from
this thread and their answers:
end of print should be classified as end of extrder, and gcode should be
implemented
No, it should not be put the extruder end g-code at the end of the print.
That is the current expected behaviour.
Can I use if statements?
Yes, but only when writing the .def.json file. Not from the interface.
How would I write a statement if t0 then run this code and if T1 then run
this code.
You currently can't, because the front-end doesn't know what extruder the
print is going to end with. So even if you are writing the .def.json files
with if statements, there is nothing your if statement can check on.
Maybe even just a tickbox to be able to run the active tools end script at
the end of a print. That way it can be turned on or off. It will solve the
problem
That is a valid feature request, but we've deferred this because the use
case is rare. We may implement it some day if we find that the priority
increases. Or we may accept changes by someone else if that reduces the
workload on the developers.
Is there a reason why "Extruder End G-code" is not executed at the end?
Yes. Some printers break when an extruder end g-code is executed at the
end of the print, for the same reason as when your printer breaks when all
extruder end g-codes are executed.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#5861?email_source=notifications&email_token=AEDNT7ABMZVMXPCWU27FN6LPZ6M4HA5CNFSM4HUZUNW2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXM7T5I#issuecomment-500824565>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AEDNT7HFMJPH672EC7ZF7UDPZ6M4HANCNFSM4HUZUNWQ>
.
|
Adding a checkbox is not a problem. Adding a checkbox that has a certain functionality is, because it's work that we don't have time for and don't give high priority because of the limited use case. If you think it is simple, be my guest and show us what simple solution you can come up with. We're normally not against merging that sort of feature into the mainline Cura. |
I'm also using Smoothie, I made an executable python program which scan every .gcode files in the folder and add docking sequence accordingly. To devs: E3D tool changer will start shipping within 2 months (according to E3D website). This printer has 4 tools. Expect a wave of requests similar to this one in the near future. https://e3d-online.com/blog/2019/04/18/toolchanger-the-update-youve-all-been-waiting-for/
|
it is not because some do crap things that you should keep doing the same mistake again and again. |
putting the following line in "END G-code" seems to work fine. where can (I/we) document this? where is the place to put this useful code please? if I filter the final part of the gcode to show the load/unload of tools, the last tool is unloaded as expected Line 48811: ;BEGIN LOAD FILAMENT T0 |
Sad to see this is still a thing. Devs defending broken code is even more unfortunate. golfromeo-fr is correct. To execute the begin code and not the end code leaves the gcode in an inconsistent state. Did Ultimaker manufacture a printer that expects this broken behavior, that they are so unwilling to fix the code to work properly? I appreciate there is a workaround, but it frankly should be the default. |
Anyone find a better way of doing this yet? I have an infinite color changer that of course works much differently than your tool changer does but it has the same issue where the end of extruder Gcode is not executed after the end of the print. This ends up with the last color of the print being still fed into the extruder which when a new print in a different color is started it feeds the filament into the already full tube. Everything Wookie said is right about it should be just a "Apply End of Currently Operated Extruder Gcode to end of print Gcode", as it is in the long run the easiest solution that can apply to the most printers. You cannot apply the end Gcode of all extruders as it will end up in the feeding system of filament pulling the different colors except the one you were just using way too far back which will mess up the next print. I don't understand what Ghostkeeper was saying to Golfromeo-fr in their thread Golf mentioned above because he comes an inch away from stating the solution to his own problem. All you need is for the Gcode that Applies to the extruder to be in the end of extruder Gcode and the Gcode that applies to chamber, bed, cooling, etc to be in the global end of Gcode. This would make having a checkbox for it almost unnecessary as there would be no reason to disable it as long as it is only the current extruder that applies to the end of the print. This also aligns completely with what golf said that you should not have a beginning code for your extruder ever without an end for the same extruder, most people get away with it because single material is all they have but the point of this message is to illustrate that now is the time to adapt to printers with potentially infinite colors. Edit: Just discovered and enabled G60 and G61 to remember position so global end Gcode works just fine. Good thing Gcode has that, otherwise cura would've just brought my hope for automated color printing to a halt. |
Application Version
4.1
Platform
windows
Printer
custom fdm
Actual Results
extruder end gcode not placed at end of print
Expected results
end of print should be classified as end of extrder, and gcode should be implemented
Additional Information
This is my start and end gcode for head 1
This is my start and end gcode for head 2
I use a custom corexy printer with toolchange.
When i start a print, it needs to pickup whichever tool it is using, which works correctly.
When i end a print, it needs to put the tool away, but the extruder end gcode is not being implemented at the end of a print. I cannot use gcode end script, as i cant tell which tool is currently in the head, to know which tool can be put away.
In s3d, i could use placeholders like, if currenttool=0 or currenttool=1. but cura cant do this.
Basically. the extruder end gcode needs to be implemented at the end of a print as well as tool change to another tool
If i do a dual head print, the toolchange codes work fine, it will undock tool 0, print, dock tool 0, undock tool 1, print, dock tool 1, back to tool 0 etc. but just at the end, it will not dock whichever tool is in the head.
When i start a new print, i need it to pickup the new tool, which works fine, but the problem is, if it didn't dock tool 0 at the end of a print, if i start a new print with tool 1, it will try to pickup tool 1 with tool 0 still in the head.
The text was updated successfully, but these errors were encountered: