Files
3d-models/kallax-organization/quarter-drawer-structural-clips.scad
T
2025-11-02 21:49:31 -06:00

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]);
}