Print coupon · designed and gated, nothing printed yet
Six single-wall towers on one plate, from two beads wide to twelve, every one commanded to 100 mm. The plate is a question written directly in gcode: which diameters reach the top? And it carries its own ruler, so even a wrecked run still reports its answer.
It has now been printed, and the first run did not answer the question. On 2026-08-05 the six tower plate ran on the K2 and was stopped by hand at about 44 mm of the commanded 100. All six were standing at that height. That is not the same as all six standing on their own, and the reason is the first real finding.
The plate came off webbed in fine filament hair. Printing six towers layer by layer means the head crosses between them on every layer, and each crossing drags a molten thread. The web braced the towers to each other, so a thin tower that appeared to stand may have been held up by its neighbours. The run cannot tell those apart. Measured off the emitted files, the six tower plate carries 53.0 m of travel and a single tower plate carries 0.6 m, so the web is a function of travel and nothing else.
Broken by hand after removal, the towers ranked in the order the geometry predicts: 4.92 mm broke easily, 6.56 mm took effort, 9.84 mm did not break. That ranking is a physical result. A height at which any of them fails is not, because none of them was taken to failure.
The 8.2 mm follow up failed twice before it worked, and both causes were ours. A single tower printed as a coiled rope rather than a column. Removing five towers had removed the cooling with them: six towers in rotation gave every layer 4.50 s to freeze, one tower gave it 0.57 s. The machine table also had the wrong spool, so the file commanded 230 C on filament rated 210. Corrected to 210 C with the part fan raised, the same geometry printed as a straight ribbed column.
Every number on this page that is not in this block is still a measurement of the gcode file rather than of a part. The question in the title, which diameters reach 100 mm, has not been answered by any run yet.
The bridges work, and that was the point of the towers. The plate exists so that something can be built between the posts. Spans laid every 10 layers between 8.2 mm towers at 25 mm pitch, 16.8 mm of unsupported air each, came out as taut parallel strands rather than sags, at full flow and 50 mm/s with nothing underneath them.
How the span is laid decides whether it is printable at all. The first attempt treated a bridge as a separate visit: lift clear, fly to the anchor, drop back down, extrude across. The validator refused that file twice over, for descending below the layer floor into finished work and for 96 travel moves inside the object. Both refusals were correct. The fix was not a smaller lift, it was deleting the visit: on a bridge layer the move BETWEEN towers becomes the extrusion. Nothing lifts, nothing descends, nothing travels, and the span leaves the wall it is welded into instead of landing on top of it.
"0.8 nozel would not print it. and in general sub milimeter extrusions - is it even workable?" Oleg, asking about a bucket handle that a 0.8 mm nozzle could not draw. Then: "lets start with a coupons how high can we build thin towers vertically, once we have that primitive we can connect it with bridgest"
The plate encodes the answer the geometry forced: sub-millimetre width is real; sub-millimetre features are not. Every wall on this plate is a single 0.82 mm bead, so a sub-millimetre wall is just what this machine draws. But a free-standing round member cannot be thinner than two beads, because under that the toolpath circle is narrower than the bead itself, and the loop folds through its own centre. On this nozzle the floor is 1.64 mm. Section 3 draws why.
What no file can answer is how TALL each diameter stands before it stops standing. That number has to come from a physical run, which is exactly why this plate exists and why this page, so far, is a design document.
The rungs are whole bead counts: 2, 3, 4, 6, 8 and 12 beads, which on this 0.82 mm bead means 1.64 / 2.46 / 3.28 / 4.92 / 6.56 / 9.84 mm. Counting in beads is what makes the result transfer: "four beads wide survived 100 mm" is a statement about any nozzle, while "3.28 mm survived" is a statement about this one.
The bottom rung sits exactly on the 2-bead floor, not safely above it. A plate that starts above the floor cannot say where the floor is. And every tower is commanded to the same 100 mm, so the thin end runs at a 61:1 height-to-width ratio and the thick end at 10:1. Failure, if it comes, arrives from the thin end.
A single-wall tower of outer diameter D is drawn as a circle of diameter D minus one bead. At two beads wide, that toolpath circle is exactly one bead across, and the wall closes into a solid section: the last real tower. Any thinner and the nozzle would orbit inside its own bead width, covering the same ground on every revolution. That is not a thin tower, it is an over-extruded blob with a seam, so the generator raises an error rather than emit it.
The floor is a feature floor, not a width floor, and the two are different. The generator's own notes record this project driving the 0.8 mm orifice down to a 0.735 mm bead elsewhere, and a narrower bead would lower the floor in proportion. That is a width ladder; this plate is a height ladder, and it does not pretend to answer the other question.
A tall thin tower usually destroys its own record: it falls, and "somewhere between zero and the top" is all that survives. So every 25 layers, which is exactly 6.000 mm here, each tower steps out 0.30 mm for two layers and leaves a raised collar. Every fifth collar is a taller band, marking exact multiples of 30 mm. Count collars on any fragment, in any orientation, multiply by six, and the fragment reports the height it came from.
The pitch is the whole mechanism, so it is gated, not assumed: the generator computes 25 layers times 0.24 mm in exact decimal and refuses to emit anything that is not a whole number of millimetres. A ruler that read 5.9998 mm while its header said 6 would be a wrong number dressed as a measurement.
The collar is a declared perturbation, and it is falsifiable in two ways.
The thinnest tower standing on its own footprint would touch the plate along a ring one bead wide: a fraction of a square millimetre of bond holding a lever a hundred times longer. It would peel, and the plate would have measured adhesion instead of height, a wrong quantity arriving as a confident number.
So each tower starts on a spiral foot, wound from the outside in and ending exactly on the tower's own seam. Foot and tower are one continuous stroke, with no travel move and no joint to peel from. The base becomes a clamp instead of a hinge.
Every tower gets layer n before any tower gets layer n+1, so each loop is revisited at a fixed interval at every height: the measured median is 4.50 seconds, and 414 of the 417 layers sit within a 10 percent spread of it. The exceptions are the two foot layers and the final parking move, each named by the measuring tool.
That constancy is the experimental control. If layer time drifted with height, cooling would degrade in lockstep with the variable under test and the plate could not tell sagging filament from a swaying tower. Here the comparison across diameters is clean by construction rather than by padding.
Nothing on this page quotes the generator's intentions. A separate measuring tool parses the emitted gcode, rediscovers the towers by clustering the moves, and re-derives every quantity by a different route than the one that produced it. It then compares what it measured against what the file's header declares, and prints every disagreement as a bug. On this plate, all checks agree. The tool also corrupts a copy of the file four different ways and requires itself to catch each one, so a silent pass is not trusted either.
| tower | beads | outer mm | collar step mm | top z mm | filament mm |
|---|---|---|---|---|---|
| 1 | 2 | 1.640 | 0.600 | 99.940 | 96 |
| 2 | 3 | 2.452 | 0.596 | 99.940 | 186 |
| 3 | 4 | 3.274 | 0.598 | 99.940 | 276 |
| 4 | 6 | 4.916 | 0.600 | 99.940 | 455 |
| 5 | 8 | 6.560 | 0.600 | 99.940 | 633 |
| 6 | 12 | 9.838 | 0.600 | 99.940 | 990 |
Plate totals: 417 layers at 0.24 mm, top of material at 99.94 mm, 2.66 m of filament, 7.9 g of PLA. One commanded speed for every move in the file, 50 mm/s, delivering 9.84 mm³/s. The motion model prices the print at 31 minutes, with a caveat it states itself: three of the five axis limits it uses are stand-ins carried from another machine, so treat the minutes as an estimate, not a measurement.
The same generator emits a twin plate for a 0.42 mm bead machine: same design, 875 layers of 0.08 mm to 70 mm, a 4.000 mm ruler pitch, a 0.84 mm floor, 2.8 g. Same measuring tool, same all-checks-agree. Two machines, one question, and the bead-count ladder is what lets their answers be compared at all.
This machine's Z zero sat about 0.15 mm higher than it reported, for nine days, and nothing caught it. Three attempts at a 320 mm part were cancelled over the same first layer. Each time the answer looked like more material, so the commanded line width went 2 mm, then 3, then 5, and the failure never changed shape: round strands sitting on the plate rather than pressed into it.
Round is the whole tell, and it is arithmetic rather than judgement. A bead has nowhere to go but sideways, so its landed width is the material rate divided by the gap it lands in. At 0.5 mm2 per mm into a real 0.10 mm gap that has to land 5 mm wide. Round at that rate means the gap was never 0.10, and no width can close a gap.
Drawn from the ladder plate's own gcode. The dashed curve is one fixed material rate: it lands 2 mm wide at a 0.10 gap and only 0.5 mm at 0.40, which is what a nozzle sitting higher than it thinks produces. The five numbered points are ladder cells whose rate scales with their gap, so every one lands the same 2.00 mm. The vertical line marks where this nozzle actually was while the file said 0.10.
Two things were wrong at once and they wore the same symptom, which is why fixing either alone still read as failure:
Measure it with a printed plate, not by feel. A paper feeler gauge said the error was 0.30 mm and it was wrong by a factor of two, because the spring steel sheet flexes under the shim and absorbs the quantity being measured. The ladder prints five cells at five real first layer heights, each labelled with its own printed digit, each metered to land the same width so the height is the only variable. It takes six minutes. Peel a corner of each: welded fights back and leaves colour on the sheet, and not welded lifts in one piece with a glossy underside.
On this machine all five welded, from 0.05 mm to 0.25 mm, so the window is wide rather than a knife edge. That is worth knowing before you go hunting for one magic number. The cell at 0.25 mm runs at zero offset, which is the exact setting that had failed three times, and it welded once its rate matched its gap.
Everything is small dependency-free Python in the public crackle repository. The generator writes gcode directly, no slicer and no STL; run it with python3 and nothing to install. Every figure on this page is drawn from the emitted file by a script in the site repository, never by hand; the one computed panel is declared in its caption.