×
Mm
Panel height is capped to fit one slat per sheet length.
Clear space kept around every part from the sheet's own edges. It leaves room for clamps and for the bit to safely plunge in and out. Also caps panel height, same as the sheet size above.
Gap kept between nested parts on the same sheet, so the cutter has clearance and adjacent parts never share a single cut line.
Minimum relief depth is forced to -
Every slat must have at least that much material at its thinnest point to safely bury the rod hole / mounting pocket.
About this model
Each slat is a flat board, full panel height, mounted vertically side by side against a backing panel. One long edge of each board is CNC-cut to a wavy profile; the rest stays flat against the backing. The protrusion at every point is a height field: a sum of three tilted sine waves reshaped by a sharpness exponent, sampled along each slat's centerline.
Two mounting options, above. Tie rods: every slat gets drilled hole(s) and threads onto steel rod(s) for alignment and a permanent mechanical connection, in addition to gluing each slat's flat back to a backing panel. Because each slat's protrusion differs, the hole must sit inside the [0, minDepth] band. This is the one Z-range guaranteed to have material on every slat, which is why minimum relief depth is derived from rod diameter, not set independently.
Cleat rail: no backing panel. At each row, ONE flat comb board screws FLUSH to the wall (no standoff; the comb shape lives entirely in the wall's plane, not protruding outward). Its top and bottom bands are the actual comb. Teeth sit in the gaps BETWEEN slats, with tooth width always equal to "Gap between slats". It is never an independent dial, so a tooth exactly fills the gap it sits in. The teeth act as limiters that set the spacing between adjacent slats, while its valleys (exactly slat-width) are cut away so every slat just drops in. The board's middle band is a continuous solid spine, present at every position including under each slat, since that is the only part of the rail a slat's own position cannot avoid. Every slat gets ONE rectangular window cut into its back at each row, as tall as that spine (minus a little for an interference fit) and deep enough to clear the board's own thickness. Nothing else holds the slat's back off the wall there. Minimum relief depth is derived from that rail thickness for the same reason as the rod case: it is a blind recess, so it just needs the front face to clear it with a safety margin.
This is the exact model used by the "Generate DXF" button (right panel) and by generate-dxf.mjs. Each slat's outline (flat back + wavy front edge) plus its mounting feature(s) is exported as real DXF entities, nested onto sheets of the selected plywood size, including the rail parts themselves when "Cleat rail" is selected (toothed boards with screw-clearance holes). Each slat's number is also engraved directly on the part (layer "ENGRAVE", near the back edge) so it stays identifiable after parts are cut apart and separated from the sheet.
The button downloads TWO files. A -MACHINE.dxf file contains only real operations (CUT/DRILL/ENGRAVE), so load only this one into your CAM software. A separate -reference.dxf file contains the sheet boundary and part-picking labels for a human, kept physically separate so it can never accidentally get machined.