92 lines
2.4 KiB
OpenSCAD
92 lines
2.4 KiB
OpenSCAD
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]);
|
|
}
|