# Skadis Board ![Preview](preview.png) Generates an **IKEA Skadis-compatible pegboard panel** — a flat board carrying the standard Skadis through-slot pattern, so off-the-shelf Skadis accessories hang on it. Give it the outer width and height and it fills a centered slot lattice; pick `"standard"` for the genuine Skadis layout or `"dense"` for twice as many slots (still compatible). The preview above is generated from [`example.scad`](example.scad) (standard pattern left, dense right). ## Usage ```scad use <../lib/skadis-board/skadis-board.scad> // A 270 x 80 mm standard Skadis panel, 5 mm thick. skadis_board(width = 270, height = 80); // Denser variant — adds the empty checkerboard cells for a full 20 mm grid. skadis_board(width = 270, height = 80, density = "dense"); ``` The board is built in the X (width) / Z (height) plane with the thickness along Y, so it already stands vertically — translate it up onto a base and it's a standing pegboard. ## The hole pattern A real Skadis board is a **40 mm × 40 mm grid plus a second 40 mm grid offset by +20 mm in both X and Z** — equivalently, a vertical oval slot at every point on a 20 mm grid where `(i + j)` is even (a checkerboard). That 40/20 ratio is what makes accessories fit, so it is fixed by construction: - **`"standard"`** reproduces that checkerboard exactly. - **`"dense"`** also fills the `(i + j)` odd points → a full 20 mm grid. Because that is a strict superset of the standard positions, every standard accessory still registers; it just adds slots in between. There is deliberately **no free hole-spacing parameter** — only `pitch` (asserted to 40) and `density` — so the ratio cannot be broken. ## Modules ### `skadis_board(width, height, thickness, density, pitch, min_margin, slot_w, slot_h, edge_chamfer, corner_r, perimeter_fillet, fn)` A rounded-rectangle board of the given outer `width` × `height` with a centered lattice of vertical pill-shaped through-slots, each with a countersunk mouth on both faces. The whole perimeter — both front- and back-face edges — is softened by a small `perimeter_fillet`. | Parameter | Default | Description | |-----------|---------|-------------| | `width` | (required) | Outer board width (X, mm) | | `height` | (required) | Outer board height (Z, mm) | | `thickness` | 5.0 mm | Board thickness (Y) — Skadis standard is 5 mm | | `density` | `"standard"` | `"standard"` (checkerboard) or `"dense"` (full 20 mm grid) | | `pitch` | 40 mm | Skadis grid pitch — keep at 40 for compatibility | | `min_margin` | 14 / 10 mm | Minimum clear distance from the outer slots to the board edge; defaults to 14 for `"standard"` and 10 for `"dense"` | | `slot_w` | 5.0 mm | Slot width (short axis) | | `slot_h` | 15.0 mm | Slot length (long axis, vertical) | | `edge_chamfer` | 1.0 mm | Countersink at each slot mouth; 0 = sharp slot | | `corner_r` | 4 mm | Outer board corner radius; 0 = square corners | | `perimeter_fillet` | 1.0 mm | Rounded fillet on the front- and back-face perimeter edges; 0 = sharp edges | | `fn` | 64 | `$fn` for the slot/corner cylinders | ## Functions | Function | Returns | |----------|---------| | `skadis_cols(width, pitch, min_margin)` | Number of standard 40 mm columns that fit | | `skadis_rows(height, pitch, min_margin)` | Number of standard 40 mm rows that fit | | `skadis_slot_positions(width, height, pitch, density, min_margin)` | List of `[x, z]` slot centers | ## Constants | Name | Value | Description | |------|-------|-------------| | `SKADIS_PITCH` | 40 mm | Standard Skadis grid pitch | ## Coordinate system | Axis | Direction | |------|-----------| | X | Horizontal — board width | | Y | Board thickness — back face at Y=0, front face at Y=`thickness` | | Z | Vertical — board height; slots are vertical ovals (long axis along Z) | ## Relationship to skadis-t-clip [`lib/skadis-t-clip`](../skadis-t-clip/) makes the *accessory's* mounting cutout (a slot plus a T-clip cap recess) for parts that hang **on** a board. This library makes the *board itself* (plain through-slots). They are complementary, not dependent. ## Used by - [RASKOG Magnetic Separator](../../raskog-separator/)