include <./constants.scad> // all measurements in mm boardThickness = 4.7; // 1/8" plywood feltThickness = 2.5; clipThickness = boardThickness + 2*feltThickness; // measurements for the wooden panels to cut: // // ───────────── - top board (A) // │ │ │ // │───────────│ // │ │ │ // │───────────│ // // // top board: 320.0 x 370.0 // bottom board: 305.6 x 370.0 (320 - 2*4.7 - 2*2.5) x 370 // side boards: 152.8 x 370.0 (160 - 4.7 - 2.5) x 370 // inner boards: 70.45 x 370.0 ((160 - 3*4.7 - 2*2.5)/2) x 370 // module customSupport() { // 45-degree supports difference() { translate([clipThickness/2, -clipThickness/2, 0]) cube([1, clipThickness, clipThickness - 2]); rotate([45, 0, 0]) translate([0, -0.1, -0.1]) cube([clipThickness, clipThickness, clipThickness]); } } module cornerClip() { difference() { cube([clipThickness, clipThickness, clipThickness]); translate([feltThickness, feltThickness, feltThickness]) cube([boardThickness, clipThickness, clipThickness]); translate([feltThickness, feltThickness, feltThickness]) cube([clipThickness, boardThickness, clipThickness]); } } module sideClip() { difference() { cube([clipThickness, 2 * clipThickness, clipThickness]); translate([-0.1, feltThickness, feltThickness]) cube([clipThickness + 0.2, boardThickness, clipThickness]); translate([feltThickness, feltThickness, feltThickness]) cube([boardThickness, 2 * clipThickness, clipThickness]); } } module crossClip() { difference() { cube([2 * clipThickness, clipThickness, clipThickness]); translate([-0.1, feltThickness, feltThickness]) cube([2 * clipThickness + 0.2, boardThickness, clipThickness]); translate([clipThickness - boardThickness/2, -0.1, feltThickness]) cube([boardThickness, clipThickness + 0.2, clipThickness]); } } difference() { translate([0, 0, -1.4]) union() { for (i = [0:7]) translate([i * (clipThickness + 2), clipThickness, 0]) rotate([45, 0, 0]) cornerClip(); for (i = [0:7]) translate([i * (clipThickness + 2), 3 * clipThickness, 0]) rotate([0, 0, 0]) sideClip(); for (i = [0:1]) translate([i * (2 * clipThickness + 2), 5 * clipThickness, 0]) rotate([45, 0, 0]) crossClip(); } translate([-1, -1, -1.4]) cube([100, 100, 1.4]); }