Each of the video sphere’s twelve screens lives in a snap-fit case that I mostly didn’t model. I described it. The case is built on YAPPgenerator_v3, a 6,164-line OpenSCAD file you include and then configure: you declare your PCB’s dimensions, its standoffs, and arrays of cutouts per face, and YAPP generates a base and lid with walls, ridges, and snap joins. My entire enclosure (case, lid, a glue-in stem port, and a printable BOOT-button plunger) is one file just shy of 400 lines that reads more like a config than like CAD.
This post is the YAPP reference I wanted when I started: a real enclosure with real constraints.
The setup
git clone https://github.com/mrWheel/YAPP_Box- Copy
YAPPgenerator_v3.scadnext to your enclosure file (or add the YAPP_Box directory toOPENSCADPATH). include <YAPPgenerator_v3.scad>at the top, set variables, F5 to preview, F6 to render, export.
Describing the board
The screen module is an LCDWIKI ES3C28P, an ESP32-S3 with a 2.8″ ILI9341 display on an 86 × 50 × 1.6 mm PCB. YAPP wants the board described, not drawn:
pcbLength = 86.0; // long axis (X)
pcbWidth = 50.0; // short axis (Y)
pcbThickness = 1.6;
standoffHeight = 13.5;
standoffDiameter = 5.6; // matches the 5.60 mm pad on the spec
standoffPinDiameter = 2.7; // M3 self-tap
pcbStands = [
[ 4.0, 4.0, yappBoth, yappPin],
[82.0, 4.0, yappBoth, yappPin],
[ 4.0, 46.0, yappBoth, yappPin],
[82.0, 46.0, yappBoth, yappPin],
];
Four M3 mount holes, inset 4 mm from each PCB edge. All of these numbers came from the module’s datasheet, except the ones that couldn’t be (like where the BOOT button actually sits).
Centering a screen that isn’t centered
The LCD sits asymmetrically on the PCB: the bezel is wider on the USB-C end. Left alone, the visible screen would sit off-center in the case, which would read as an error twelve times over on the finished sphere. The fix is a matched pair of asymmetries. The lid cutout is trimmed 6 mm on the USB-C side to hide the wide bezel, and the case padding on the opposite side is extended by the same 6 mm (paddingBack = 9.0 vs 3.0 everywhere else). Net effect: the visible screen, the case interior, and the stem-port pocket all share the same center at PCB X = 40. It took two rounds of nudging to land. The case looks symmetric precisely because the numbers aren’t.
YAPP as a tool
YAPP comes down to a declarative DSL with one escape hatch. Learn where each array’s origin sits, keep YAPP’s own inputs literal, put everything custom in the hooks, and an enclosure becomes a table of holes with a PCB in the middle.