Ultimaker / Cura

3D printer / slicing GUI built on top of the Uranium framework
GNU Lesser General Public License v3.0
6.22k stars 2.08k forks source link

2-1 Nozzle needs some changes to cura #7150

Open Antebur opened 4 years ago

Antebur commented 4 years ago

Is your feature request related to a problem? Please describe. (A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]) i noticed some issues with cura related to a 2-1 Nozzle printer like Creality CRX. it is very challenging to do good prints. Is there a possibility to have a configuration set for this type of printer ?

Describe the solution you'd like (A clear and concise description of what you want to happen. If possible, describe why you think this is a good solution.) the Solution should be similar to octoprint were you can distinguish a 2-1 nozzle againt a 2-2 nozzle which will be considered while slicing 2 color objects.

Issues found so far which could be solved if there is a better setup for 2-1 nozzles printers.

Describe alternatives you've considered (A clear and concise description of any alternative solutions or features you've considered. Again, if possible, think about why these alternatives are not working out.)

Change the gcode manually to be usable.

Affected users and/or printers (Who do you think will benefit from this? Is everyone going to benefit from these changes? Or specific kinds of users?)

All printers with 2-1 nozzle

Additional context (Add any other context or screenshots about the feature request here.)

fieldOfView commented 4 years ago

Cura 4.5 (now in beta) has an option for a shared heater in the Machine Settings. Have you tried that?

Antebur commented 4 years ago

Not yet but i will try out thanks

Antebur commented 4 years ago

Loaded Cura 4.5 Beta and noticed first that still the issue were the Filament is loaded after start line ....... T0 M82 ;absolute extrusion mode G21 ;metric values G28 ;home all G90 ;absolute positioning M107 ;start with the fan off G1 F2400 Z15.0 ;raise the nozzle 15mm M109 S220.0 ;Set Extruder Temperature and Wait M190 S50.0; Wait for bed temperature to reach target temp T0 ;Switch to Extruder 1 G1 F3000 X5 Y10 Z0.2 ;move to prime start position G92 E0 ;reset extrusion distance G1 F600 X160 E15 ;prime nozzle in a line G1 F5000 X180 ;quick wipe G92 E0 ;reset extrusion distance G92 E0

T0 ;switch to extruder 1 G92 E0 ;reset extruder distance G1 F2000 E93 ;load filament ------>>>>>Filament is loaded to late after first prime G92 E0 ;reset extruder distance M104 S220.0 G92 E0 G1 F2700 E-6.5 ;LAYER_COUNT:417 ;LAYER:0 .......

fieldOfView commented 4 years ago

Did you enable the Shared Heater option in Machine Settings?

Antebur commented 4 years ago

yes i did. the issue is that the "Start G-Code" is running before the "Extruder Gcode-Start" and the filament is loaded on the "Extruder Gcode-Start". I did not found a solution yet which is working as the "Extruder Gcode-Start" is running on every Tool change. So if we load the filament on "Start G-Code" it will load twice the amount of filament. The only thing would be if the "Extruder Gcode-Start" could be run before "Start G-code".

Ghostkeeper commented 4 years ago

I suggest that you add this line of g-code in your starting g-code just before the prime line then:

G1 F2000 E93 ;load filament

The extruder start g-code should not be run at all before the first layer, but it is. This is considered a bug currently: https://github.com/Ultimaker/Cura/issues/6160

Antebur commented 4 years ago

Make sense to me, ist there a version were #6160 already solved ? otherwise if i insert the line now with the bug it would extrud twice the amount of E93 Thanks

Ghostkeeper commented 4 years ago

No, we haven't solved that yet :disappointed: Sorry.

Antebur commented 4 years ago

no problem i have a workaround for now, Thanks

Antebur commented 4 years ago

There is another small issue with the retract amount. I noticed when retracting the filament there is always less material as expected. The reason is because a certain amount of filament is fluid in the hot end which will be not retracted. Therfore there is always a gap between the Amount of filament which needs to be refill after e retract. How can this be setup ?

Ghostkeeper commented 4 years ago

You can try increasing the Retraction Extra Prime Amount setting.

The material that stays inside the nozzle is not a problem. It's going to be pushed out when the filament is unretracted again. The material that oozes out during the travel move is a problem that can be compensated for with Retraction Extra Prime Amount.

Antebur commented 4 years ago

i agree but is there not a gap when the filament is unretracted ? I tested this and the filaments retraction amount is E-90 and on its next retraction it will push back E90 which is a gap of more or less the high of the hot end 10mm. Should it not retract E-90 and unretract E100 ?

smartavionics commented 4 years ago

Hi @Pomaroli , can you please provide a complete example gcode that shows what you are describing. Thanks.

Antebur commented 4 years ago

Below a Code example made with Cura 4.5 for a 2 Color Print

;FLAVOR:Marlin ;TIME:31725 ;Filament used: 16.0718m, 3.87348m ;Layer height: 0.15 ;MINX:85.625 ;MINY:115.625 ;MINZ:0.3 ;MAXX:170.858 ;MAXY:188.818 ;MAXZ:63.7 ;Generated with Cura_SteamEngine 4.5.0-beta T0 M82 ;absolute extrusion mode G21 ;metric values G28 ;home all G90 ;absolute positioning M107 ;start with the fan off G1 F2400 Z15.0 ;raise the nozzle 15mm M109 S220.0 ;Set Extruder Temperature and Wait M190 S50.0; Wait for bed temperature to reach target temp T0 ;Switch to Extruder 1 G1 F2000 E90 ;load filament G92 E0 ;reset extrusion distance G1 F3000 X5 Y10 Z0.2 ;move to prime start position G1 F600 Y150 E15 ;prime nozzle in a line G1 F5000 Y180 ;quick wipe G92 E0 ;reset extrusion distance G1 F2000 E-90; G92 E0; G1 F2400 Z15.0 ;raise the nozzle 15mm

;Dual Extrusion T1 ;Switch to Extruder 1 G1 F2000 E90 ;load filament G92 E0 ;reset extrusion distance G1 F3000 X10 Y10 Z0.2 ;move to prime start position G1 F600 Y150 E15 ;prime nozzle in a line G1 F5000 Y180 ;quick wipe G92 E0 ;reset extrusion distance G1 F2000 E-90; G92 E0; G1 F2400 Z15.0 ;raise the nozzle 15mm G92 E0 --------------------------->>>>> Start procedure End

T0 ;switch to extruder 1 G92 E0 ;reset extruder distance G1 F2000 E90 ;load filament -------->>>>> Load filament of T0 E90 G92 E0 ;reset extruder distance ----->>>>> Set Zero for E Start printing first layer M104 S220.0 G92 E0 G1 F2700 E-6.5 ;LAYER_COUNT:417 ;LAYER:0 M107 G0 F3600 X94.427 Y119.721 Z0.3 ;TYPE:SKIRT G1 F2700 E0 G1 F1800 X94.926 Y119.386 E0.02999 G1 X95.472 Y119.083 E0.06114 G1 X96.957 Y118.289 E0.14515 G1 X97.607 Y117.953 E0.18166 G1 X98.16 Y117.724 E0.21152 .....Start printing Layer for T0

.....End Printing Layer fot T0 G1 F1800 X135.485 Y157.547 E207.53171 G0 F3600 X135.878 Y157.374 M104 S220 G1 F1800 X136.231 Y157.727 E207.55661 G1 F1200 E191.55661 G1 F600 Z1.3 G92 E0

G92 E0 ;reset extruder distance G1 F800 E-5 ;short retract ;G1 F2400 X295 Y265 ;move near prime tower G1 F2000 E-90 ;long retract for filament removal ---->>>> Retract fot T0 E-90 G92 E0 ;reset extruder distance --->>>> Set Zero for T0 G90 T1 G92 E0

T1 ;switch to extruder 2 ---->>>> Load T1 G92 E0 ;reset extruder distance G1 F2000 E90 ;load filament --->>> Load Filament for T1 G92 E0 ;reset extruder distance --->>>> Set Zero for T1 M104 S220.0 M105 M109 S220 G1 F2700 E-6.5 ;LAYER_COUNT:417 ;LAYER:0 M107 G0 F3600 X94.427 Y119.721 Z0.3 ;TYPE:SKIRT G1 F2700 E0 G1 F1800 X94.926 Y119.386 E0.02999 G1 X95.472 Y119.083 E0.06114 .....Start printing Layer for T1

.....End Printing Layer fot T1 G0 F5400 X138.735 Y157.683 G1 F1800 X140.039 Y156.379 E83.85648 G0 F5400 X139.401 Y156.451 G1 F1800 X138.51 Y157.342 E83.88792 G0 F5400 X138.305 Y156.981 G1 F1800 X138.738 Y156.549 E83.90317 G1 F1200 E67.90317 G1 F600 Z1.45 G92 E0

G92 E0 ;reset extruder distance G1 F800 E-5 ;short retract ;G1 F2400 X295 Y265 ;move near prime tower G1 F2000 E-90 ;long retract for filament removal ---->>>> Retract fot T1 E-90 G92 E0 ;reset extruder distance --->>>> Set Zero for T1 G90 T0 G92 E0

T0 ;switch to extruder 1 ----->>>>>> Load T0 for 2 Layer G92 E0 ;reset extruder distance G1 F2000 E90 ;load filament ---->>>>> Load Filament E90 <<<<<-------- This should be more then 90 because of the melted Filament in the nozzle (lost printing the Tower) from the last retraction G92 E0 ;reset extruder distance ---->>>>> Set Zero for T0 M104 S220.0 M105 M109 S220

smartavionics commented 4 years ago

Don't you just need to set a value for Nozzle Switch Extra Prime Amount ? i.e. 5 to match the last retract before the switch?

Antebur commented 4 years ago

No Luck, i tried to set "nozzle switch extra prime amount" but did not take any effect on the gcode. maybe it is bugy or i did something wrong.

smartavionics commented 4 years ago

Is it possible for you to supply a project file? Without something to slice and look at the results it's hard to understand the problem. If you can, please do File -> Save and then zip or rename the .3mf file and attach to this issue. Thanks.

Antebur commented 4 years ago

Untitled.zip

here it is

smartavionics commented 4 years ago

Thanks for the file. I have looked at some gcode produced by that profile and have noticed the following:

1 - you have a nozzle switch retraction distance set to 16 which is probably not wanted because you are doing the 90 mm retract/prime explicitly in the extruder start/stop scripts.

2 - the un-retract that occurs before the prime tower does include an amount due to nozzle switch extra prime amount so I think that is working.

3 - arguably, the nozzle switch should occur over the prime tower and not over the model but I guess that would need a modification to the engine to achieve.

Antebur commented 4 years ago

Thanks for you Time to investigate.

  1. I did some testing with retraction distance but it does not take any effect to the Gcode. Maybe if this behavior can be corrected there is no need to do it in the start/stop scripts.
  2. This setting was made by me for testing, but it does not take any effect to the gcode.
  3. i Agree
Ghostkeeper commented 4 years ago

I do get differences if I take your 3MF file, load two cubes in with different extruders, and then change the Nozzle Switch Retraction Distance from 16 to 90:

image

But yes, your extruder switching g-code already does a 90mm retraction so this will now retract way too much. But as far as I can see, Cura is behaving as it should here.

Antebur commented 4 years ago

Maybe its working for 2-2 Nozzle but not for 2-1. Do you have a Machine with 2-1 nozzle ? What i can say is that there was no retraction on the gcode based on the settings for. Did you try also to merge a model like it is usually for 2 color print ? See this post

https://ultimaker.com/learn/get-started-with-cura-printing-with-two-colors

smartavionics commented 4 years ago

I tested using your profile above and I see it had the shared heater option set. As far as I could tell, the retraction was working OK (see my above comments).

Antebur commented 4 years ago

ok I agree i got it, on my latest test i disabled the Toolchange start/stop gcode, instead i set a retraction of 90 in the Dual Extrud settings. I get the same result as you now. But what is missing is the load of the filament after the first toolchange from t0 to t1 and the according Tower prime cycle. Can you please check this ?

G1 X145.134 Y162.105 E227.27413 G1 X146.11 Y161.667 E227.35599 G1 X146.111 Y161.647 E227.35752 G0 F1620 X146.125 Y161.327 M104 S220 M204 S5000 ;MESH:Moai_Lines.stl G0 F3600 X146.183 Y161.385 G1 F1200 E137.35752 G1 F600 Z1.3 G92 E0 T1 G92 E0 M105 M109 S220 G1 F2100 E-5 G0 F3600 X146.183 Y161.385 Z1.3 G1 F600 Z0.3 G0 F3600 X148.892 Y154.947 G0 X153.408 Y151.22 M204 S500 ;TYPE:SKIRT G1 F2100 E0 G1 F1800 X154.352 Y151.722 E0.10002 G1 X154.917 Y152.034 E0.16039

smartavionics commented 4 years ago

It's no good just posting a fragment of gcode like that. I need to see the whole file (or at least what comes before).

Antebur commented 4 years ago

Here you have the hole file attached, please the the first layer when changing to the second color (tool T1) It does the skirt without loading filament

CCRX_Moai_Body_Cura_beta.zip

Ghostkeeper commented 4 years ago

I can see what you mean, now. It happens with shared heaters or without (as the heater control really has nothing to do with this).

Cura is making the assumption that all extruders' filaments start with the material primed at the nozzle's tip, at E0. So for the first switch to T1, it assumes that this material was at the nozzle tip. It'll retract it 5mm, move to a starting location, unretract 5mm and then start printing. Meanwhile the other material is properly retracted 90mm after it's done its first layer. This will get properly unretracted 90mm when it needs to start again. And for the rest of the print both extruders get retracted/unretracted correctly.

So the real problem is that Cura is not told where the filament is at the beginning of the print. It just assumes it's at position 0, in the nozzle's tip. If you have multiple filaments going into one nozzle this is obviously not a realistic assumption. Cura doesn't have a way to give this initial position currently, so I think the only real solution is to use the start g-code and extruder start/end g-codes at the moment.

From Ultimaker, this will not get any big priority as it's not a concern for our own printers which have the G280 implemented (which primes the nozzle). So I will mark this issue as deferred, to give you more realistic expectations.

Antebur commented 4 years ago

Ok i understand, and what is happening with the Tower Prime at the beginning of T1 which is missing too ? I have to say im not happy with it, as Cura is provîding this type of setup but its clearly a bug which every 3d printer with 2-1 nozzle will have. In my opinion this should be fix as soon as possible,

Ghostkeeper commented 4 years ago

Instead of a prime tower, Cura will print a ring around the bed adhesion with the other extruder to prime it. This improves bed adhesion.

Antebur commented 4 years ago

If i'm right this was my workaround to setup a skirt with the t1 extruder otherwise it will not prime anything.

github-actions[bot] commented 1 year ago

Hi 👋, We are cleaning our list of issues to improve our focus. This feature request seems to be older than a year, which is at least three major Cura releases ago. It also received the label Deferred indicating that we did not have time to work on it back then and haven't found time to work on it since.

If this is still something that you think can improve how you and others use Cura, can you please leave a comment? We will have a fresh set of eyes to look at it.

If it has been resolved or don't need it to be improved anymore, you don't have to do anything, and this issue will be automatically closed in 14 days.

Antebur commented 1 year ago

Hi Thanks for Reminder, there are 3 Years between :) You can close this one. THanks