Ultimaker / CuraEngine

Powerful, fast and robust engine for converting 3D models into g-code instructions for 3D printers. It is part of the larger open source project Cura.
https://ultimaker.com/en/products/cura-software
GNU Affero General Public License v3.0
1.67k stars 880 forks source link

Prime/purge tower optimisation #1875

Closed wawanbreton closed 6 months ago

wawanbreton commented 1 year ago

Description

When using a printer with multiple filaments, a prime/purge tower is usually required when switching from one to another. Depending on the configuration of the printer, we have multiple scenarios :

And there are more technical variations to take care of :

The current implementation of the prime tower is good enough for multiple nozzles, and also works for mixed nozzles, but it uses a lot of filament/time when this is not always required. The purpose of this improvement is to save time and filament, while still having a stable and robust tower in all situations.

Original discussion about the optimisation : https://github.com/Ultimaker/Cura/issues/6909 Recent improvement of the prime tower, which fixes some defects but uses even more filament : https://github.com/Ultimaker/Cura/issues/15078 I also found some issues about priming in mid-air, and some others complaining about the amount of used filament.

Associated Cura branch is here : https://github.com/wawanbreton/Cura/tree/optimized-prime-tower and PR: https://github.com/Ultimaker/Cura/pull/17971

Proposed implementation

After some discussions, the proposed modifications are the following :

The proposed sparse pattern is the following :

It is kind of a "circular zigzag" which ensures that every circle printed on top of it will have minimum bridging and will then be printed properly. It is very fast to print and keeps a continuous dispensing flow. The maximum bridging distance has been made a parameter because it depends on the nozzle size and filament.

pikachu_slice Peek 07-04-2023 17-59

Type of change

How Has This Been Tested?

Test Configuration:

Discussions

The base of the implementation looks goods, but there is still a lot of work before it can be integrated :

wawanbreton commented 10 months ago

Implementation is now fully working and clean. I will start some prints with this on UM printers to see if the tower shape is fine and strong enough. Now we just need to refine the settings names and descriptions.

wawanbreton commented 9 months ago

According to my most recent tests, the default mode could be replaced by the "optimized-consistent" mode, which still saves some filament+time in usual conditions. I'll try to find a more user-friendly terminology.

AstridLinka commented 7 months ago

Merci du travail que tu fais sur cette Tour qui a vraiment besoin d'être optimisée surtout que la double extrusion devient de plus en plus populaire, je pense que ton modèle est très bien, avec en prime une optimisation pour les formats Y cyclops , et bien sur la fin de l'impression dans le vide de l'ext 2 grâce a ton système de Zigzag en cercle. J'ai pas ton talent et tes compétences, mais j’espère vraiment que ta Tour soit un jour inclus dans une mise à jour de Cura , comme une avancée majeure, parceque si on prend mon exemple j'ai du changer de slicer et quitter Cura à cause de cette Tour d'origine qui faisait n'importe quoi ! Merci

wawanbreton commented 7 months ago

@AstridLinka Merci pour cet encouragement :blush: effectivement les systèmes à multi-extrusion sont de plus en plus courants, et la tour d'origine est vraiment inefficace pour cette situation. J'ai mis un certain temps à comprendre qu'en fait elle n'avait pas du tout été conçue pour cela. J'espère que ce nouveau système sera plus efficace, et qu'il amènera à d'autres idées encore meilleures :smiley: Entre-temps, j'ai rejoint UltiMaker et je peux donc faire un peu de lobbying en interne :laughing: mais je n'ai pas grand-chose à faire pour convaincre les gens que c'est une modification utile. Avec un peu de chance :crossed_fingers: ça sera intégré dans la prochaine version de Cura !

wawanbreton commented 7 months ago

@casperlamboo I have seen some minor issues when using a raft. I suggest we can use the actual version and solve them later, if needed.

jellespijker commented 6 months ago

Hi @wawanbreton,

Thank you for taking the time to contribute. We're in the progress of updating our Way-Of-Working with regards to PR's so I'm adding some label(s). That way we can prioritize our work-load and give your PR the love it deserves.

It's on the backlog and our top-developers are working on this PR as we speak

casperlamboo commented 6 months ago

All looks really nice, love the feature! Thanks 😄

AstridLinka commented 5 months ago

Ha Merci quelle bonne nouvelle, tu vas être dans la version 5.7 , tu me l'avais dit que ça allé possiblement se faire, j'ai vu ta belle tour dans la version bêta! Bien joué Bravo, tout ton travail sur la tour c'est bien mérité , je te félicite , si je vois des quouack je te le dirai .

wawanbreton commented 5 months ago

@AstridLinka Merci beaucoup :wink: effectivement ça a l'air de bien marcher, ces dernières semaines j'ai enchaîné les impressions bicolores et ça fait plaisir. Mais je suis déjà en train de réfléchir à de nouvelles améliorations, j'espère que j'aurai le temps pour les ajouter dans la 5.8 :smile:

AstridLinka commented 1 month ago

Petit retour sur ta tour , j'ai eu aucun problème avec son utilisation elle a marché direct et marche très bien, j'ai vu que tu l'as encore améliorée dans la v5.8beta j'ai pas encore utilisé , j'ai 2 suggestions à faire cependant , si tu pouvais faire la même chose mais en version mur sur les bords, car mine de rien la tour grignote pas mal d'espace sur le plateau et ma 2 eme demande c'est plus sur le principe de simplifier cura pour les gens qui utilisent 2 extrudeurs et une seule buse sur l'histoire du partage de température de la buse , y avoir dans le menu double extrusion les options qui sont dans le plugin "printer setting" , que chaque options regroupent les paramètres qu'il faut pour son utilisation ex une liste déroulante Chimére, cyclops, idex ,etc et ça règle automatiquement les paramètres qu'ils faut , et ça éviterai de devoir télécharger le plugin Printer setting et cocher les 2 cases buses partagée qui faut pour une cyclops , car si tu sais pas qu'il faut qu'il faut télécharger ce plugin tu saura pas faire marcher ta bécane en double ext sur cura et les gens peuvent fuir cura pour un détail, moi j'ai galéré à savoir comment faire , j'ai perdu beaucoup de temps avec ça , ça va j'ai de la patience mais celui qui a pas de patience il va utiliser un autre logiciel et c'est dommage enfin voila, Bravo encore pour tout ton travail et ta fabuleuse tour qui a surement sauvé cura

wawanbreton commented 3 weeks ago

Merci pour le retour :smiley: Effectivement dans Cura 5.8 j'ai encore pas mal amélioré la tour. Elle devrait utiliser moins de filament inutilement, ce qui dans certains cas peut faire une tour beaucoup moins large, et donc gagner de la place sur le plateau. La prochaine étape sera probablement d'utiliser le remplissage de l'objet pour purger, de manière à réduire encore la purge inutile dans la tour. Pour le placement sur le plateau, ça serait bien aussi de pouvoir la mettre dans un creu à l'intérieur de l'objet, ça pourrait sauver quelques autres cas. Pour la gestion des 2 extrudeurs, Cura a été créé comme ça initialement puisque la grosse majorité des imprimantes multi-couleur ont plusieurs buses, même si ça tend à changer ces dernières années. Par contre, changer ce mécanisme va être compliqué, et à vrai dire je vois mal comment on pourrait faire autrement, puisqu'il y aura toujours plusieurs matériaux à gérer, donc avoir plusieurs buses "virtuelles" me paraît assez logique. À vrai dire ça ne m'a jamais posé de souci. C'est peut-être plus perturbant avec les systèmes qui ont genre 8 filaments en entrée, mais encore une fois je ne vois pas bien comment améliorer ça. Je vais le garder en tête et voir si ça revient, mais dans tous les cas ça impliquerait un changement énorme donc j'ai bien peur que le jeu n'en vaille pas la chandelle. En revanche, je suis en train de pousser de plus en plus pour revoir la gestion des paramètres qui sont partagés ou pas. Je fais très souvent des erreurs de configuration parce que je suis sur le mauvais extrudeur, et je ne suis pas le seul. Donc j'espère bien que cela changera un jour prochain, et peut-être que ça sera suffisant.