# Wood Edge Trim

A printed trim for the 90 degree edge of a piece of wood. One model, three styles: a corner angle, an edge cap, or a step (S) profile. Straight runs and outside corner pieces, an outer corner you can shape, and an optional LED channel that sits in the space behind the face, as a tray with a top, a back and a bottom.

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

## Styles

- **Corner angle (L)**: sits on the corner of a block, a shelf end or a counter edge. The top leg reaches across the top face and the side leg drops down the vertical face. Each leg has its own length and its own thickness; the two never have to match.
- **Edge cap (channel)**: slides over the edge of a board. A spine covers the edge face, with a flange over the top and a flange under the bottom. Top flange length and thickness, bottom flange length and thickness, spine thickness and the wood thickness are all separate settings. The cavity is the wood thickness plus the fit clearance.
- **Step (S)**: runs across the upper surface, curves around the edge and down the drop, then curves back to the original direction across the lower surface. Upper run, drop, spine and lower run are sized apart. For two surfaces that meet at different levels, like a floor edge meeting a step.

## Pieces

- **Straight run**: one length of trim along one edge.
- **Outside corner** (angle and cap): a corner piece that turns the run around the end of the board, a settable run each way, profile matched to the straight pieces so they butt together. Its vertical outside edge is always round. Screw holes are cut on straight runs only; glue or pin the corner piece.

## The outer corner

Shape pick: **Round** at the size set, a **45 degree chamfer** as wide as the size set, or **Full round** (the largest round the leg thickness allows; the size slider is ignored). The size runs 0 to 16 mm and is clamped to what the leg thickness allows, so the corner never eats into the seat on the wood. The inside corner stays square in every shape, so the trim seats flat.

## LED strip channel

An optional channel for a 10 mm strip, sized for a 12 V IP67 FCOB strip (10 mm wide, 5 mm thick) mounted on tape. The channel does not live in the trim leg. It sits in the space **behind the face** of the wood: the leg keeps only a mouth opening at the band, and behind the trim's inner face a tray with a **top wall, a back wall and a bottom wall** holds the strip. The strip slides into the tray from the end and tapes to the back wall; the light comes out through the mouth, and the optional diffuser presses into the mouth, flush with the face.

- **Slot starts below the top**: distance from the top surface to the top of the slot. The wood is only as tall as this space: set it to the wood thickness (3/4 in, 19.05 mm) and the slot starts where the wood ends, with foam or open space below it for the tray.
- **Foam below the wood** and **extra room below the foam**: the rest of the stack the trim covers. On the angle, the viewer draws the stack (wood over pale blue foam) and the page warns when the side leg does not reach past wood + foam + extra. The tray sits in that foam zone; in solid wood it needs a shallow groove routed behind the face.
- **Channel depth behind the face**: how far the tray cavity reaches back from the trim inner face. 8 mm default (the 5 mm strip on tape, plus working room); 6 mm for a bare strip; 10 mm with the diffuser.
- **Channel wall thickness**: the tray's top, back and bottom walls, 2.4 mm default. The tray reaches depth + wall thickness behind the face in total.
- **Diffuser**: an optional second printed part, a strip in PETG Translucent that presses into the mouth of the channel.
- **Print core**: an optional sacrificial part that fills the channel while it prints, so the channel walls form on it and come out smooth in any orientation, even standing the face vertical where a channel wall would otherwise span the full length as an overhang. It prints loose (0.25 mm clearance), with a hole in each end to hook it out along the channel after the print. Set the core part to a low infill in the slicer; it is scrap. With the diffuser, the core fills the cavity only. Face down (the recommended orientation) the channel needs no core and no supports: its roof bridges the 8 mm depth.
- The strip cuts every 25 mm at its scissor marks; pick a trim length that lands the strip end on a cut mark. Tape on a silicone sleeve holds poorly on its own, so the diffuser (or a dab of silicone adhesive at each end) is the real retention. On corner pieces the channel stops 12 mm short of the corner; bridge it with a corner connector or a short soldered jumper.
- Heat: plastic insulates where an aluminum channel sinks heat. Keep the strip at about 10 W/m or less in this channel, and do not run a hotter strip behind the diffuser for hours.

## Settings

Grouped as Style, Size, Top leg / flange / run, Side leg / bottom flange / run, LED strip, Fastening, Shape. Every length takes mm or inches; the model works in mm.

Fastening is glue grooves (shallow grooves on the faces that touch wood), countersunk screws through the top (#8 wood screw or M5, straight runs), or plain.

## Presets

- **Angle, heavy side leg**: top 1 in at 3 mm; side drops 1 1/2 in at 5 mm. Screws.
- **Angle, low profile**: thin legs both sides, glue grooves.
- **Floor edge with LED**: angle over 3/4 in wood, 1 in foam, 1/4 in extra; the channel tray sits in the foam behind the face; slot starts at the wood line.
- **Cap for 3/4 in plywood**: top flange 1 in at 3 mm; bottom 1/2 in at 4 mm.
- **Cap for 1/2 in plywood, long bottom**: short top, long thick bottom flange. Screws.
- **Corner cap for 3/4 in plywood**: the cap turning the board corner, 50 mm each way.
- **Step between levels**: S profile, 1 in drop, runs sized apart.
- **Fit coupon, cap**: 40 mm of cap for 3/4 in plywood. Print this first to pick the clearance.

## Printing

Print orientation depends on the style. The angle and the cap print outer face on the bed with no supports: no flat ledges hang, the channel mouth opens against the bed with its roof bridging the 8 mm depth, and the tray behind prints as part of the same piece. The step is a Z profile and has no fully support free flat pose: it prints top run on the bed (the largest contact, and only one cantilevered face, the lower run's top, as wide as the lower run minus the spine), or standing on its end for short pieces. Face down is the pose to avoid on the step: measured with the kit's overhang stats at the default size, the top run's underside hangs as a 3,934 mm2 ceiling on 600 mm2 of contact. The page's print panel gives the ranked poses per style with the measured numbers. Layer lines run along the length in the flat poses. The diffuser and the print core print as their own parts on the same plate.

## Tested

Test order from `docs/model-standards.md`, run 2026-11-12 in headless Chromium against the kit engine (manifold-3d), not yet printed:

- **Step 0, file check (partial)**: at 0.2, `build()` ran clean for 18 configurations (all three styles, corner pieces, round / chamfer / full round, LED slot and diffuser, warning cases), with slot volumes matching exactly: the floor preset loses exactly 300 x 8 x 11 mm of material to the slot, the step exactly 200 x 8 x 11. The 0.1 default angle measured 150 x 30.7 x 41.4 mm at 41,825 mm3, unchanged. 3MF exports generated for the step, the corner cap and the two part diffuser build; each opens as a valid package with its materials and the "© Ryan Mitchell — CC BY 4.0" credit inside. The page loads with zero console errors. At 0.3 the channel-in-the-member rework was checked the same way (exact cavity volumes, preset unchanged). At 0.4 the channel moved behind the face as a tray: against a plain leg the tray build adds exactly the hand calculated amount (mouth 5 x 11 x 300 removed, tray walls 22,896 mm3 added, net +6,396), and a probe build whose leg ends at the cavity bottom grows exactly one wall thickness (2.4 mm) taller from the tray's bottom wall; the 0.1 default is still 41,825 mm3 and all styles and corner pieces build clean with zero page errors. At 0.5 the assembly is turned 180 degrees about Z so the kit cameras (which look from -Y) face the front: every volume and size in the test matrix is identical before and after the turn. At 0.6 the optional print core was checked the same way: the trim volumes are unchanged with the core on, each core matches its hand calculated size (floor core 300 x 12.75 x 10.5 mm at 39,964 mm3, holes included; corner pieces get one 38 mm core per leg), the core's intersection with the trim is exactly zero (it floats on its 0.25 mm clearance), and the page loads clean. The slicer half of step 0 is still open: Ryan runs the slicer, so the 3MF has not yet been opened in Bambu Studio or Orca.
- **Step 1, fit**: not run. It needs a printed coupon; the Fit coupon preset (40 mm) is the print for it, at tier T1.
- **Step 2, flex**: does not apply. Nothing flexes; the model declares no `print.flex`.
- **Step 3, supports**: does not apply. The recommended orientation needs no supports.
- **Step 4, second material**: the diffuser is a second part in PETG Translucent on the same plate; its 3MF carries both materials. Not yet printed.
- **Steps 5 and 6, full part and batch**: not run.

Nothing has been printed yet, so no number in this model is marked tested. Clearances and thicknesses are starting points.

## Exports

STL and 3MF from the 3D printing panel, plus a PNG still and settings JSON. The 3MF carries the credit in its metadata; the STL carries it in its header.

## 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)
    model.json    title, summary, visibility, version and changelog
    thumb.png     catalog card art (viewer still of the floor edge LED preset, assembled on the wood and foam stack)

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).
