# Duct Fittings

Printed fittings for 3 in flexible heater duct: couplers, elbows, Y adapters, end caps, an inline damper, a panel register, wall outlets on an M6 rivnut or magnets, a boot dryer, a hose saddle and a thread test set. The thread copies the Velit directional vent and every setting is adjustable.

[Open the configurator](index.html) · status: **draft**, version 0.19

## How the thread works

Foil heater hose has a helical corrugation. A fitting screws in by riding that spiral, so the fitting's thread has to match the hose. The defaults copy the Velit directional vent, which screws into the same hose:

| Setting | Velit vent | How it was measured |
|---|---|---|
| Crest diameter | 77 mm | Calipers across the ridge tops |
| Pitch | 2.09 mm | Tested 2026-10-25: the vent ran the full 20 mm into a 2.09 mm ring. Caliper span 25.6 mm over 12 gaps gave 2.13 as a starting point |
| Hand | Right | Ridges climb to the right, thread pointing down |
| Profile | V with rounded tops | By eye; the model uses a 0.4 mm flat on tops and groove bottoms |
| Depth | 1.2 mm | Estimate; the test set confirms it |
| Thread length | 30 mm | From a photo, scaled off the crest |
| Bore | 68.4 mm | Inside of the vent |

The thread is a twisted extrusion: the thread profile is laid around the circle at the base, and the extrusion twists 360 degrees per lead. That sweeps an exact helix with no stair steps.

## Tested

| Date | Test | Result |
|---|---|---|
| 2026-10-25 | Pitch check, fine: female rings at 0.7 mm clearance, 2.09, 2.13, 2.17 mm | **Pass at 2.09 mm.** The Velit vent ran the full 20 mm by hand, snug at the end. 2.13 bound just before full depth. |

Printed in PLA on Ryan's Bambu printer, 0.4 mm nozzle assumed; printer model and layer height not recorded. Tested values in the model: **pitch 2.09 mm, female clearance 0.7 mm per side, 0.4 mm ridge flats, right hand.** Male threads against the hose are not tested yet.

### How we got there

1. **First set (2026-10-23):** female rings at 2.23, 2.33, 2.43 mm, 0.3 mm clearance, sharp tips. All bound about 1/2 in deep, 2.23 deepest.
2. **Vent fit test (2026-10-24):** 2.23 mm at 0.4, 0.55, 0.7 mm clearance with 0.4 mm flats. 0.7 went furthest, still 1/4 in short. More clearance bought only about a turn, so pitch was the limit.
3. **Pitch check, loose fit (2026-10-25):** 0.7 mm clearance at 2.18 to 2.33 mm. 2.18 ran nearly full depth; coarser rings bound sooner in order.
4. **Pitch check, fine (2026-10-25):** 2.09 passed.

Lesson: a pitch error shows as every ring binding at a similar depth, and extra clearance only adds a turn. Step the pitch first, then tune clearance. The caliper span (25.6 mm) was first read as 11 gaps (2.33 mm); it covered 12 or more.

### Next: Hose fit test

A fresh page opens on this preset: three male rings at 2.09 mm pitch with 76.5, 77 and 77.5 mm crest. Screw the foil hose onto each. Keep the one that starts by hand, runs smooth and holds when you pull. Then print a full part.

Notches on each rim count the rings: one notch for ring 1.

## Parts

- **Thread test set**: male rings, female rings or both, stepping the pitch, the crest or the female clearance.
- **Coupler**: two ends back to back on a hose stop collar.
- **Elbow**: any angle from 10 to 120 degrees, swept on a set radius.
- **Y adapter**: one inlet, two swept legs. Straight leg sections are added so the outlets clear each other.
- **End cap**: closes a hose end, or caps an unused Y outlet with a female end.

### Wall outlets

The hose runs along the bottom of the wall and turns up, so each outlet takes it on a port pointing down. **Hose port** on every outlet and the panel register, slip and clamp by default: male thread (the tested Velit thread, screws into the hose), female thread (a male part screws in), or a smooth slip spigot with a bead for a hose clamp. The outlet stands off the wall far enough for the port you pick. A fin along the wall carries the mount. The fin stands on the bed beside the port, so it prints with no overhang and steadies the part.

**Mount** on every wall outlet: an M6 into a rivnut, disc magnets glued into pockets on the back (sticks to bare steel, movable), or both. Magnet size is a setting; keep the magnet 1.5 mm thinner than the tab. Outlets that widen right above the shoulder (defrost fan, split, boot dryer) put the bolt low, beside the hose port, so a socket reaches it.

- **Turret outlet** (2 parts): a base and a nozzle that presses over the base's spigot until a bead snaps into a groove. The nozzle turns by hand and clicks into 8 positions; the exit angle is a setting (30° above level by default).
- **Eyeball outlet** (4 parts): body, housing, ball and ring. The ball swivels ±30° between two seat edges and carries two straightening vanes. Three M3 x 8 socket heads hold the housing to the body; three M3 x 12 flat heads hold the ring and set how stiff the swivel is.
- **Vane diffuser** (2 parts): a box and a vane cassette. The box rises from the port on 45° slopes. **Roof**: *Curved* (default) is a quarter ellipse, vertical at the wall and level at the front, so the rising air turns forward along it like the outside of a duct elbow; the box stands about 50 mm lower. Its level front part hangs, so the 3MF paints tree supports there for Bambu Studio, and you pull them out through the cassette opening. The M6 tab stands above the roof with two 45° buttresses on its front, one each side of the bolt, so it doesn't bend across the layer lines at its root; a 10 mm socket fits between them. *45°* prints with no supports but stands taller and turns the air harder. The cassette slides into a pocket at the front, and comes in seven styles:
  - **Angled**: every vane at one angle; turn it over to aim the other way.
  - **Curved vanes**: each vane leaves the box straight and curves to the set angle. Same aim as Angled; the air turns gradually, so it loses less pressure. Turn it over to aim the other way.
  - **Curved spread**: curved vanes that splay left and right. A wide throw like Fan spread, with less pressure lost.
  - **Fan spread**: vanes splay from left to right to throw the air wide.
  - **Split**: half aim left, half aim right, for two jets.
  - **Grid**: straight vanes and two cross slats for an even, straight jet.
  - **Louvers**: horizontal slats that throw the air up, or down when turned over. Prints face down, so the slats lean only their own angle on the bed. The slats are 2 mm thick with two upright ribs, so each spans about 45 mm: the first version's 1.6 mm slats spanned the full width and sagged in ASA near the heater.

  Tick **Cassettes only** to leave the box off the plate and reprint a cassette for a box you already have.

  Tick **Print every cassette style** to put all seven on the plate with the box and swap them as you like. Every style keeps at least 105% of the hose area open at the default size.

  **Holding the cassette in.** Air pushes on the cassette the whole time the heater runs, and a van shakes, so the cassette locks in two ways:
  - **Latch** (on by default): a bezel around the face stops the cassette flush. A finger in the bottom rail clicks over a bump on the pocket floor; the bump's square back holds it in. To swap, push the tab at the bottom of the bezel up and pull. The top rail carries a matching finger, so the cassette still latches turned over. The fingers run along the layers as printed, so they bend without cracking.
  - **Screw lock** (on by default): a boss on each side of the box takes an M4 heat set insert (5.6 mm hole, 8.1 mm long), and an ear on each side of the bezel takes a knurled M4 x 10 thumb screw. Use one screw or both for long drives. A small O ring on the screw behind the ear keeps it from falling out.

  Cassettes print face down on the bezel. Each finger spans a 1 mm gap above the bezel as a short bridge between its root and its tab.
- **Hose saddle**: a clip that snaps over the hose, on one M6 above the hose or two #8 screws. It prints on its side so the clip bends along the layers. Hose OD is a placeholder (80 mm) until measured.
- **Defrost fan**: the port flares at 45° into a wide flat slot (160 x 24 mm) that blows up the wall. With the slot tight to the wall, the air hugs the surface and sweeps up a window or cold panel. Three spreader vanes even the flow.
- **Long slot diffuser**: a 300 mm duct along the wall with a row of slots, to spread air along the bed or behind the mattress. The duct has 45° tops and bottoms, so the arms print standing on the port with no supports. A spine with a 45° underside carries the tab.
- **Split outlet**: two half size nozzles bend out left and right; together they match the hose bore. A short taper joins the round bore to the pair so nothing leaks between them.
- **Shutter outlet** (4 parts): body, face plate, rotor and cap. Turn the rotor 45° (four windows) to close; a stop peg in an arc slot stops it at open and closed. The face is 124 mm so the open windows match the hose bore.
- **Boot dryer**: two 46 mm prongs, 180 mm tall, rising from the port on 45° branches, perforated over the top third. Boots and gloves hang upside down on them.
- **Quiet outlet** (4 parts): body, can, inner screen and outer screen. Two staggered perforated screens break the jet into many small ones and soften the rush of air. Fan noise from the heater carries through the hose regardless.

### In line and through a panel

- **Inline damper** (3 parts): a straight piece with a hose thread each end, a flap on a square axle, and a lever that shows the flap angle. The flap, axle and lever all print flat; the axle hole is a teardrop so the body prints standing up.
- **Panel register**: a bezel, a sleeve through a 1/4 to 3/4 in panel, and the hose port behind, with louvers that throw the air up (turn it over to throw it down). Fixed with four #6 screws. It prints face down, so the thread still stands vertical.

### Airflow

A diesel heater needs free flow; a restricted outlet makes it run hot and shut down. The page works out each outlet's open area and warns below 90% of the hose bore. Defaults all clear 90%. Never close every outlet at once with the shutter or damper.

The page lays each outlet part on the bed its own way up (ball and ring flat, housing on its flange) using the kit's per part print rotation.

## Ends

- **Male thread**: screws into the hose, like the vent.
- **Female thread**: the vent or another male port screws in. Clearance is set per side.
- **Slip and clamp**: smooth spigot with a bead, held with a hose clamp. Use it at the heater outlet.

## Printing

Outlets: the bodies print standing on the hose port like every fitting here. The turret nozzle and eyeball body overhang on the outside of their bend, the same as the elbow; use tree supports on the bend only, and keep them off the threads.


Print with the port axis standing up. The orientation picker is locked to this. On its side a thread prints oval, fills with support, and its ridges peel along the layer lines. At the default depth and flat each thread flank overhangs about 59 degrees from vertical. The overhang check marks the ridges red, but ridges this small print clean, and support material inside a thread will not come out. Keep supports off the threads. The outside of an elbow or Y bend is a real overhang; a bigger sweep radius shrinks it. A 0.12 to 0.16 mm layer height keeps the 2.09 mm pitch crisp. The first stretch of hose from the heater runs hot: print fittings there in ASA, ABS or PAHT-CF. PLA is fine for test fits only.

## Presets

- **Hose fit test**: male rings at 2.09 mm pitch, 76.5, 77 and 77.5 mm crest. The default.
- **Pitch check, fine**: female rings at 0.7 mm clearance, 2.09, 2.13 and 2.17 mm pitch.
- **Vent fit test**: female rings at 2.09 mm pitch, 0.55, 0.7 and 0.85 mm clearance.
- **Pitch check, loose fit**: female rings at 0.7 mm clearance, 2.18, 2.23, 2.28 and 2.33 mm pitch.
- **Velit thread test**: male and female rings at 2.04, 2.09 and 2.14 mm pitch.
- **Hose coupler**: joins two runs of hose.
- **Vent extension**: male into the hose, female takes the vent.
- **90° elbow**: male both ends, 70 mm sweep.
- **Y split to the bed**: 45 degree legs, male all round.
- **Leg cap**: female cap for an unused Y outlet.
- **Turret outlet**: nozzle 30° above level, 8 clicks, tab on the right.
- **Eyeball outlet**: 90 mm ball, ±30° swivel.
- **Vane diffuser**: 150 mm wide, angled cassette.
- **Vane diffuser, curved**: curved vanes to 30°.
- **Vane diffuser, curved spread**: curved vanes splay 35° each way.
- **Vane diffuser, fan spread / split / grid / louvers**: one per cassette style.
- **Louver cassette only**: the stiffened louvers alone, no box.
- **Vane diffuser, all cassettes**: curved roof, clamp port, curved vanes in the box and the other six cassettes beside it.
- **Wide vane diffuser**: 220 mm, fan spread, 8 vanes.
- **Vane diffuser, threaded port**: the Velit thread in place of the slip spigot.
- **Hose saddle**: one M6 above the hose.
- **Defrost fan**: 160 mm slot tight to the wall, 3 vanes.
- **Long slot diffuser**: 300 mm, 13 slots.
- **Split outlet**: two nozzles 30° above level.
- **Shutter outlet**: 124 mm face, 4 windows.
- **Inline damper**: male both ends.
- **Panel register**: 120 x 70 opening, 1/2 in panel.
- **Boot dryer**: two 46 mm prongs, 180 mm tall.
- **Quiet outlet**: 115 mm can, two screens.
- **Turret on magnets**: no rivnut needed.

## Still to come

Reducer, tee, intake grille, bayonet quick connect and a panel bulkhead with lock nut.

## Files

    index.html    page shell; loads the shared kit from ../../kit/
    model.js      settings, presets and build(), the geometry engine of record (JS, manifold-3d)
    outlets.js    the outlets, damper, register, boot dryer and hose saddle, imported by model.js
    model.json    title, summary, visibility, version and changelog
    thumb.png     catalog card art

Needs a network connection: three.js loads from a CDN, as on every kit page.

## License

© Ryan Mitchell — CC BY 4.0. See [LICENSE.txt](../../LICENSE.txt).
