Show HN: 3D print Z reinforcement via injected loops
Posted by mgunlogson 7 days ago
Commodity FDM print strength is limited by poor Z-axis layer bonding. Parts crack along Z under stress. MAGMA tries to fix this in software that works on any FDM 3D printer.
It's a fork of OrcaSlicer with a new infill type that creates paired U-shaped vertical channels inside the print, plus G-code that injects molten plastic into those channels to bridge Z layer interfaces with continuous plastic.
Big caveat: I have a junky Ender 3 and haven't gotten a clean physical print yet. Don't expect this to work out of the box! After months of tinkering, I'm releasing the software so the 3DP community can experiment with nozzles, multi-material, weird hardware, and other print parameters I can't. There's around 40 MAGMA-specific settings to fiddle with, plus some general quality-of-life features (e.g. printing thin infill sections as solid, and a "dual infill shell" feature that applies MAGMA only to the outer shell to save print time).
THIS CODE IS ALPHA. Around 50 prints old. The injection G-code is novel. Some printer firmware won't like extruding without movement. In extreme cases it could damage your printer or start a fire. DON'T WALK AWAY WHILE PRINTING.
Why MAGMA? "Lava tubes" is a misnomer. Molten rock is magma underground, lava only after it surfaces. The injected tubes are buried inside the print, so "magma tubes" is the correct term.
Comments
Comment by Aurornis 2 days ago
You can't use the nozzle to inject that much filament into a large cavity because it will cool and solidify right out of the nozzle. Anyone who has ever cleaned blobs of filament off of a nozzle after a print failure can tell you what happens when you try to pump hot filament into empty space. Filament cools below the melt temperature quickly, especially when it comes into contact with your print.
At least the README admits that it doesn't work:
> What’s NOT yet working: the physical print. On my Ender, same-material plastic injected into freshly-printed cells melts the cell walls before they can seal. The math says this should work; the materials science is the open question.
I like seeing experimentation, but this is a lot of software work dedicated to something that couldn't possibly work. I'm curious about "the math says this should work" combined with the large number of em-dashes and other LLM tells. Was this experiment largely driven by an LLM?
There is some interesting work on the topic of staggered interlocking layers: https://github.com/OrcaSlicer/OrcaSlicer/pull/8181
Reading any of the research on that should make it obvious that you can't "inject" molten plastic into larger cavities, though.
Comment by slabity 2 days ago
> Anyone who has ever cleaned blobs of filament off of a nozzle after a print failure can tell you what happens when you try to pump hot filament into empty space. Filament cools below the melt temperature quickly, especially when it comes into contact with your print.
That's completely irrelevant because this isn't printing into empty space at all. This is injecting molten plastic into confined channels, with no active cooling, made from material that doesn't conduct heat well. You're saying that the plastic will cool too quickly, but I believe the opposite will be true.
The problem that the author is describing is that the plastic is actually far too hot when injected and causes wall collapse. This is because the author isn't taking into account that FDM walls don't handle the required pressure near/above glass-transition points.
The failure mode you're describing is the complete opposite. If you were correct, it would result in cold plugs or extruder jams. It wouldn't result in wall collapse or layer delamination.
Comment by Aurornis 1 day ago
The filament will cool on contact with the part. Think about it: How are you expecting this filament to stay as hot as the inside of your nozzle while it’s flowing through the part and touching all of those walls? How are you expecting the walls to not melt, but the melted filament to flow through them?
Even filament extruded into free space cools enough to become a solid string barely inches out of the extruder. It will cool even faster if it’s touching something.
The only way this works is by heating the entire part up to a temperature where the filament stays hot enough to flow. So you’d need to heat the chamber and the part to 210C to get PLA to flow through it.
Comment by mgunlogson 1 day ago
> How are you expecting this filament to stay as hot as the inside of your nozzle while it’s flowing through the part and touching all of those walls? How are you expecting the walls to not melt, but the melted filament to flow through them?
Specially formulated injection materials with viscosity near water at injection temps. Dual nozzle setups where PLA is injected near its breakdown temperature into a heat resistant shell like CF-Nylon or Ultem. I need people with more time and hardware to test this. This was a side project for me, out of a dozen I'm working on. And I already spent a bunch of time on it.
For a years there's been talk about doing some kind of 3D injection on the GCODE level, like Z-pinning https://github.com/OrcaSlicer/OrcaSlicer/discussions/4815 . But it was hard to experiment because slicers don't support it. Now there's a codebase with dozens of different knobs to play with.
I added support for dual nozzle printers and using a different material for the injection stage. I just don't have the hardware to test it
Comment by mgunlogson 1 day ago
Yes exactly. And it may be a solved problem.
I need someone with a dual nozzle printer to try injecting something like PLA in a CF-Nylon part. I anticipated this and added support for dual nozzle and multi-material with a different material selectible for the injected channels. But be warned, it hasn't been tested it at all.
Comment by mgunlogson 1 day ago
I actually had the opposite problem in testing. Plastic has bad thermal conductivity and the large volume of plastic in the channel was melting the top of the cell. That's why I asked for testers with dual nozzle printers. So they could try injecting a low melting point material into the channel while printing the rest of the part with something like Polycarbonate or CF-Nylon.
Some of the docs were written by LLM because writing docs is boring. Did you look at the code or try the binaries?
> Reading any of the research on that should make it obvious that you can't "inject" molten plastic into larger cavities, though.
There is quite a bit of research on injection molding. The pressure at the tip of a regular 3DP nozzle is around 200psi. That's actually high enough to inject a reasonably large cavity.
Comment by smrq 1 day ago
Comment by mgunlogson 1 day ago
Have you looked at the code or tried the binaries? I can assure you it very much exists as described.
Maybe I should have spent more time on the docs. I had LLM write some of the settings pages and other boring stuff.
Comment by Toutouxc 1 day ago
Comment by mgunlogson 1 day ago
I added a SAT solver to refine the tube endpoints so that nearby tubes don't start or end on the same layers. Even the default greedy solver (CP-SAT is SLOW) does a pretty good job at "staggering" the tube ends.
The part is "knitted" together in 3D at different Z layers.
Try the binaries. They've only been tested in Linux but they build fine for all platforms.
Slice something with MAGMA infill turned on and flip off the visibility of everything but injection lines. You'll see how the U shaped tubes knit the part together
Comment by Aurornis 1 day ago
You can’t inject filament into a hole without it cooling and solidifying at the top. That’s the problem with this whole idea.
Comment by mgunlogson 1 day ago
You can set tube height to something tiny like 5mm. It takes a fraction of a second to fill that.
As someone who's printed a lot, on fast printers you have to set a minimum layer time because it takes up to 20 seconds for the layer below to solidify, cool to below the glass transition. Plastic is a bad conductor so heat loss through the walls probably isn't as bad as you'd think
Comment by Toutouxc 1 day ago
Comment by stirfish 2 days ago
Comment by stirfish 2 days ago
Comment by warumdarum 2 days ago
Comment by mgunlogson 1 day ago
You could technically inject anything liquid enough into the tubes. Grout, resin, glue, silicone.
Comment by xnyan 2 days ago
Comment by slabity 2 days ago
I am a little skeptical on the technique though. FDM printed walls are known to not handle pressure well, especially during printing when its past its glass-transition temperature. This process essentially uses the pressure from the extruder to inject a channel with molten plastic. Will this pressure could cause the walls to delaminate from each other or deform?
And how does this affect plastic that tends to warp significantly during printing? The molten plastic is injected into insulated channels that will not receive any active cooling. You're also parking the nozzle at the injection points, which will cause a lot of uneven cooling at the surface as well. For high-warping plastics like ABS, that could cause a lot of issues.
So I guess the underlying question should be, does this actually work? What is the measured difference in tension strength between parts printed normally vs with MAGMA infills? Specifically when using the same amount of plastic. There's no data or even pictures that indicate this is working.
Comment by mgunlogson 1 day ago
Nobody knows :) . Give it a try!
> You're also parking the nozzle at the injection points, which will cause a lot of uneven cooling at the surface as well.
There's an "injection fan speed" setting that should probably be kept at 100%.
I'm not sure the "not have any cooling" will be a problem in practice. Because unlike normal printing you're not concentrating all the heat on one layer. It's going down Z dozens-hundreds of layers to already cooled areas of the part printed minutes ago. And the design tries to avoid having nearby tubes end on the same Z. So the area directly adjacent to the tube has probably been cooling for a while.
> So I guess the underlying question should be, does this actually work? What is the measured difference in tension strength between parts printed normally vs with MAGMA infills? Specifically when using the same amount of plastic. There's no data or even pictures that indicate this is working.
No one knows. And I can't test it anymore. The code is done and I have other projects to work on. I've done probably a hundred test prints on my POS Ender 3. I need testers with better hardware. No matter what I try the top of the cell gets melty. This could be the low flow rate of my hotend (limits injection speed), the fairly bad cooling, or maybe something fancier like dual material is needed. Or maybe I just haven't landed on a good combination of settings since there's dozens of them.
I particularly want someone with dual nozzle to test so they can try injecting a low melting plastic like PLA into a heat resistant shell like CF-Nylon or more exotic materials. There's printer plastics that aren't even at glass transition temp when PLA is at printing temperature.
I added dual nozzle and multi material support. Obviously hasn't been tested though
Comment by joshvm 2 days ago
But you can definitely get printers to dump a blob of filament out without worrying about cooling problems, if the extruder speed is high enough. I was debugging some issues in P2PP (a post processor for the Mosaic Palette. One problem was that the printer would extrude all the filament at the start of some travels instead of along the path.
Comment by slabity 2 days ago
Yes, but we're not talking about dumping a blob of filament. We're talking about injecting filament into a well-insulated channel where it's physically impossible for it to receive any active cooling whatsoever.
That's not a situation where you can just ignore cooling.
Comment by Aurornis 1 day ago
Look up the thermal conductivity of air.
Then look up the thermal conductivity of 3D printing filaments which form those channels that are being injected into.
The filament will be cooling faster in the channel than in free air.
This cannot work unless the part is heated to a temperature where the filament flows.
Comment by slabity 1 day ago
On top of that, the lattice structure of the infill will mean that heat will not conduct away from the channels well regardless of the material used.
Comment by amluto 1 day ago
Comment by rao-v 2 days ago
Would print slow but might be genuinely strong vs normal infill + many walls (weight for weight).
Multi head printers like the U1 or H2D could do even better with high heat deflection temp plastics like carbon ASA or nylon for the inner structure and outer walls and strong low temp PLA for the injection.
Comment by protocolture 2 days ago
That said, maybe an acetone drip or something in a strength channel to try and bond it.
Actually what I do (and I think is pretty common) is just stopping the print from time to time and filling the outer infill channels with wood glue and sand. Sometimes wooden sticks.
Comment by dwallin 2 days ago
Comment by mgunlogson 1 day ago
The tubes only need to be tall enough for a "window" at the bottom and a splitter in the middle so that plastic will flow up one side and down the other.
The window height calculations are automatic right now. To make sure the window area is as large as the tubes so it doesn't create a bottleneck that stops flow.
But if you print tiny tubes with a tiny nozzle you could probably get the tube height down to ~3mm.
There's binaries if you want to play with the settings and see it for yourself
Comment by boothby 2 days ago
Comment by zargon 2 days ago
https://www.printables.com/model/438863-supper-strong-layers...
https://www.printables.com/model/437584-qualitative-layer-ad...
https://web.archive.org/web/20251008223152/https://bcarvercr...
Comment by LordHeini 2 days ago
In general infills does not provide much strength to a part, it is way better to have stronger walls.
And z-direction does not need to be more stable than the other directions so there is no need for long continuous strands anyway.
Maybe it would work better with smaller, less tall, slots at the inside of the walls.
Lets say 2-3 layer heights tall, continuously filled slots, which are then interleaved with each other. More like bricks less like columns. The outer wall layers would provide stability to prevent collapse. And over spill or bulging would occur towards the inside of the part.
Comment by Toutouxc 1 day ago
I’m not sure I understand. In FDM printing, Z is the only direction where you currently CANNOT have long continuous strands, even if you need them. You always need to sacrifice one direction in which the part is going to suck.
For example, you can easily print an airplane wing with a beautiful, perfectly smooth and continuous airfoil, but you have to include a channel for something like a carbon fiber rod. Without it, the slightest bending force would instantly split the layers apart. Any other orientation will give you a rough surface with steps and a disgusting amount of supports. Being able to add a few strategically placed “columns” (i.e. members in the spanwise direction) could really help this particular usecase.
Comment by LordHeini 1 day ago
What i meant that the z-direction does not need to be MORE stable than the other directions.
Adding a long strand of filament in the z-direction in the infill (close to the geometric center of the print) might make the print more resistant to stretching but not necessarily bending.
Carbon rods don't bend but filament does. The wing would break apart at the seams event if it had channels of filament along side its z-axis. It would still be more stable, but not as much as one might think.
Walls give a print most of its strength by a huge margin. And interlocking the walls in z-direction would have a proprietorially larger impact.
Comment by kamranjon 1 day ago
Comment by mgunlogson 1 day ago
This is meant to knit together the part in the Z axis
Comment by notduncansmith 2 days ago
Oh Claude~
Comment by coryrc 2 days ago
Comment by mgunlogson 1 day ago
This method seals the nozzle against the tube and injects under pressure (theoretically). And leaves a path for air to escape. Pretty much a micro version of injection molding
Comment by ricardobeat 2 days ago
Comment by stirfish 2 days ago
Comment by blacksmith_tb 2 days ago
Comment by gus_massa 7 days ago
Comment by mgunlogson 2 days ago
The top of cells always melt as I'm using the same material for injection and the rest of the print. Someone with a dual nozzle printer could try something like PLA injection in a polycarbonate part. I added support but don't have a printer capable of that.
It's also possible that different print settings would work. I'm releasing the features to the community as I've run out of patience with doing a hundred hours of test prints.
We need to crowd test the best settings and nozzles, materials, etc to make this work well
Comment by smallpipe 2 days ago
Comment by mgunlogson 1 day ago
IMO the reason other efforts to achieve similar Z reinforcement have gone nowhere is because it was one guy fiddling with G-Code. All the big innovations in 3DP have been community projects. Now anyone can download my binaries and try it.
I'm personally very convinced this will work. That's why I did it. We just need to figure out the right settings. Maybe use a different material for injection or coat the nozzle in something.
We'll see. There's a long history of crazy ideas and cold receptions. We even have famous examples from this site https://news.ycombinator.com/item?id=9224
Either I'll end up wrong, and this will fade into obscurity. Or it will turn out I was right and a lot of people will read this comment someday.
Comment by q3k 2 days ago
Comment by deckar01 2 days ago
Comment by mgunlogson 1 day ago
A solver pairs the triangle with one of its neighbors. Then cuts a window at the bottom during the slice. So plastic gets injected into the top of a triangle tube and flows through the window at the bottom of the U to its neighbor cell.
Download the binaries and try slicing with magma infill type. Turn off visibility of all the other line types and you'll see how it works
Comment by mgunlogson 7 days ago
Comment by alterom 2 days ago
So, nothing to show.
Next.
Comment by bartvk 2 days ago
Personally, I think it's an interesting experiment. If my prints break, it's at the layer lines. This work may be a stepping stone, an easy way to reinforce prints.
Comment by alterom 9 hours ago
That's the thing about this idea. It doesn't work.
The title is misleading too. No actual 3D prints have been reinforced.
If the title said "an idea", making it clear that is not anything that has ever worked for anyone yet, it'd be a different matter.
>If my prints break, it's at the layer lines
Then print with 100% infill.
>This work may be a stepping stone, an easy way to reinforce prints
Printing with more infill is an easy way to reinforce prints.
Orienting your piece well on the build plate to take advantage of the anisotropy goes a long way too.
This problem already has an easy solution, and that's before you get into the more complicated ones (like nonplanar extrusion).
This is idea isn't solving the problem of prints being weak in general. It's an idea about (potentially, maybe, if someone else makes it work, if it's even possible ) saving material and printing time.
It wouldn't give you prints that are stronger than those printed with 100% infill even if worked.
Comment by stirfish 2 days ago
It was done with manually-written gcode though.
Comment by ricardobeat 2 days ago
Comment by lambdaone 2 days ago
Comment by mgunlogson 1 day ago
A lot of people here took issue with the crappy docs. My mistake, I barely spent any time on them.
The reason this "came out of nowhere" is because I was working on it in secret for a long time. So that patent trolls couldn't screw the 3DP community yet again.