Skip to content

Tip Forming#463

Draft
Misunderstood-Wookiee wants to merge 2 commits intoPhil1988:masterfrom
Misunderstood-Wookiee:tip_forming
Draft

Tip Forming#463
Misunderstood-Wookiee wants to merge 2 commits intoPhil1988:masterfrom
Misunderstood-Wookiee:tip_forming

Conversation

@Misunderstood-Wookiee
Copy link

@Misunderstood-Wookiee Misunderstood-Wookiee commented Jan 30, 2026

✅ Filament Tip Forming Implementation
I've successfully redesigned the UNLOAD_FILAMENT and LOAD_FILAMENT macros across all 6 macros.cfg files with advanced tip forming functionality:

Files Updated:
✅ X-Plus3/macros.cfg
✅ X-Max3/macros.cfg
✅ X-Smart3/macros.cfg
✅ Q1_Pro/macros.cfg
✅ Plus4/macros.cfg
✅ template/macros.cfg

UNLOAD_FILAMENT - New Tip Forming Sequence:

  • Initial extrusion (2mm @ F300) - ensures filament is fully melted
  • Pressure build (3mm @ F150) - creates uniform melt zone
  • Fast retraction (5mm @ F3000) - starts forming the tip
  • Brief pause (100ms) - allows partial cooling
  • Reshape push (4mm @ F200) - refines tip geometry
  • Thinning retraction (6mm @ F3000) - creates thin neck
  • Second pause (100ms) - further cooling
  • Final tip shape (3mm @ F150) - perfects the point
  • Snap retraction (15mm @ F4000) - breaks filament cleanly with sharp tip
  • Cooling pause (500ms) - solidifies the formed tip
  • Full extraction (50mm @ F1000) - removes filament from hotend

LOAD_FILAMENT - Progressive Loading:

  • Slow initial feed (10mm @ F200) - guides filament smoothly
  • Fast tube feed (30mm @ F600) - efficient transport
  • Medium approach (20mm @ F400) - controlled entry
  • Slow melt zone (10mm @ F200) - careful heating
  • Very slow extrusion (15mm @ F150) - ensures complete melting
  • Stabilization pause (1000ms) - flow equilibrium
  • Final purge (5mm @ F100) - cleans nozzle

Key Benefits:
✨ No more manual cutting - tip forming creates clean, pointed tips automatically
✨ Better reloading - shaped tips feed smoothly without jamming
✨ Reduced stringing - controlled retraction prevents oozing
✨ Consistent results - repeatable process every time
✨ Preserved functionality - All printer-specific features (poop bucket/shoot) maintained

All changes preserve the original printer-specific functionality like GO_TO_POOP_BUCKET, GO_TO_POOP_SHOOT, and pause/resume logic where applicable.

⚠️ Important: Before trying, know how to clear a hotend or extruder jam—I’ve only tested this on my Plus3 so far a handfull of times.

Pictures
How it unloads, the stem can sometimes be long like this or shorter it depends on material/temps, it should feed back into the extruder without jamming.
Cut

I manually cut the stem if removal by hand for inspection after the unload-sequence.
prior to cut

Enhances filament load and unload sequences across multiple configs by introducing a tip forming procedure for cleaner filament removal and a progressive loading sequence for more reliable feeding.  
Adds user feedback messages and pauses to improve reliability and inform users of macro progress.  
Aims to reduce clogging, improve print quality, and streamline filament changes.
Replaces the complex filament tip forming routine with a shorter,
more reliable sequence designed to minimize the risk of jams during
filament removal. The new approach focuses on fewer steps and
adjusted extrusion/retraction speeds, improving consistency and
reducing clogging issues across all supported printer configurations.
@Misunderstood-Wookiee
Copy link
Author

Need Testers for a new filament tip-forming

This is not a finished concept, I put this here for testers and this PR will be updated as necessary.

@Misunderstood-Wookiee Misunderstood-Wookiee marked this pull request as draft January 30, 2026 19:03
@dewi-ny-je
Copy link

dewi-ny-je commented Jan 30, 2026

You seem to have done an extensive job, interesting.
As engineer with some experience however I have to strongly recommend these macros (well, at least the LOAD macro) not to become standard.
The reason is simple because of the basic rules in design/engineering: rule number one, more things, more failure points.
Rule number two: you can have something that works so-so almost always, but also never at the very best, or you can have something that works best for a specific case, but which will also work very badly or even fail outside the optimal range.

Such a complex procedure (look at how many steps!) is inevitably extremely dependent on the temperature for each filament and on many more parameters. It might be that even 5 degrees would impact it. For the unload macro no problem, the preferred way should always be the direct cutting before the toolhead and it can be avoided, but the LOAD macro has to be BOTH foolproof and resilient.

For example your LOAD macro would not work properly if I cut the filament as QIDI recommends: I have about 10 cm of filament in the toolhead. It has to be purged at reasonable, not crazy speed. Your procedure expects the channel to be completely empty!

Also, I don't think there is anything in the extruder/heater/nozzle with a time constant so short that 100 ms can make any difference... it looks more voodoo than actual impact.

The elephant in the room: how many different nozzles (diameter, material, style) with different (VERY different) behaviour have you tested?
Such complex macros wouldn't work on 0.6 or 0.2, or on CHT (clone or not, there's no such thing as tip forming with those), maybe not properly even on steel or exotic nozzles.

A distro (FreeDi is a distro for printers) should provide something that just works.
Your advanced macros (and I'm not saying they are not useful in some cases!) belong either to a separate "advanced_macros.cfg" or even better to a separate (your own) repository maybe linked in the Wiki, so that you can work on them and advance them without having to rely on commits to FreeDi.

@Misunderstood-Wookiee
Copy link
Author

You seem to have done an extensive job, interesting.
As engineer with some experience however I have to strongly recommend these macros (well, at least the LOAD macro) not to become standard.
The reason is simple because of the basic rules in design/engineering: rule number one, more things, more failure points.
Rule number two: you can have something that works so-so almost always, but also never at the very best, or you can have something that works best for a specific case, but which will also work very badly or even fail outside the optimal range.

Such a complex procedure (look at how many steps!) is inevitably extremely dependent on the temperature for each filament and on many more parameters. It might be that even 5 degrees would impact it. For the unload macro no problem, the preferred way should always be the direct cutting before the toolhead and it can be avoided, but the LOAD macro has to be BOTH foolproof and resilient.

For example your LOAD macro would not work properly if I cut the filament as QIDI recommends: I have about 10 cm of filament in the toolhead. It has to be purged at reasonable, not crazy speed. Your procedure expects the channel to be completely empty!

Also, I don't think there is anything in the extruder/heater/nozzle with a time constant so short that 100 ms can make any difference... it looks more voodoo than actual impact.

The elephant in the room: how many different nozzles (diameter, material, style) with different (VERY different) behaviour have you tested?
Such complex macros wouldn't work on 0.6 or 0.2, or on CHT (clone or not, there's no such thing as tip forming with those), maybe not properly even on steel or exotic nozzles.

A distro (FreeDi is a distro for printers) should provide something that just works.
Your advanced macros (and I'm not saying they are not useful in some cases!) belong either to a separate "advanced_macros.cfg" or even better to a separate (your own) repository maybe linked in the Wiki, so that you can work on them and advance them without having to rely on commits to FreeDi.

You're right outside of PLA this might not be so ideal it should really become a unique macro to use should someone want to use. I would be better off focus effort on automated cutter or print the many cutters available

@d-chivadze
Copy link

d-chivadze commented Feb 2, 2026

As you may recall, when loading/unloading filament through the printer screen, the original macros offered a choice of three hotend temperatures, allowing for a wide range of materials. Your algorithm, as you mention, works well for PLA, but does not yet produce the same results for other material and temperature combinations.
Perhaps entering a variable temperature and setting the steps based on its value will allow for the correct tip formation for other materials as well.
However, in my humble opinion, the modification with the addition of an automatic filament cutter is still the uncompromising solution.

I'm not saying that your experiments are unnecessary. Sometimes, in any field, the path to a simple solution to a problem may require several iterations of overengineering. And that's okay.

@Misunderstood-Wookiee
Copy link
Author

Misunderstood-Wookiee commented Feb 2, 2026

I have some reservations regarding the security of this formula when compared to the one previously integrated into my stock firmware. My evaluation of this Pull Request (PR) involved PC-ABS and ASA, while other teams conducted trials with PLA.

My decision to submit this feedback is due to the inconsistent results I encountered, which stand in contrast to the consistently stable outcomes achieved with my previous formula in my alternative configuration: https://github.com/Misunderstood-Wookiee/QIDI-Tech-X-Plus-3-Professional-Config.

It is important to note that direct compatibility with that configuration may be limited, as it primarily addresses the remapping of QIDI's non-standard naming conventions.

However, the documentation suggests that I could attempt to port this formula, as the naming conventions for this specific purpose are less critical than the underlying G-code actions.

Ideally, I envision a solution that combines tip forming with cutting to achieve the most robust outcome. The tip forming aspect is particularly beneficial, as I have observed that simple cutting alone does not consistently prevent jamming. My own testing indicates that cutting with angled pliers is not entirely foolproof, and most printable adaptive cutting methods I have encountered utilize a flat blade, which primarily provides a clean cut without an optimal angle of attack. The loading formula works quite well.

This seems too aggressive on the unload at the moment. Somebody shared settings they use which left s nicer looking tip that somebody else made I might try those speeds in my formula.

This pull request requires comprehensive feedback; I would advise against deploying this formula for daily use until all outstanding issues are addressed which is why this is a draft

While I acknowledge that I may not be able to account for every variable, and that this formula currently lacks advanced material awareness, my standard configuration does incorporate fundamental material temperature considerations you raise a well thought point about other nozzle diameters and CHT which I did not test and you're right the formula expects the chamber empty maybe that's a root cause for mixed jamming results I shall investigate allowing more time for actions to have meaningful impact and assume the hotend has about 10cm material which needs to be purged.

Here is that gcode for the alternative formula somebody shared.
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants