Kallax Organization.
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
include <../lib/chamfered-cube.scad>
|
||||
include <../lib/rounded-cube.scad>
|
||||
include <./constants.scad>
|
||||
|
||||
$fn=128;
|
||||
l=shelfWidth/2;
|
||||
h=shelfHeight/2;
|
||||
|
||||
ep = 0.01;
|
||||
|
||||
horizontalBoardWidth = 141.5;
|
||||
drawerSideHeight = 53;
|
||||
sideOffset = 2*feltThickness + boardThickness;
|
||||
|
||||
module faceBlank() {
|
||||
size = [shelfWidth/2, shelfHeight/2, 8];
|
||||
chamfer = 4;
|
||||
difference() {
|
||||
roundedCube([l, h, 8], [1, 1, 1]);
|
||||
|
||||
// front face chamfers
|
||||
for (i = [1,3]) {
|
||||
// X-axis
|
||||
translate([-ep, size[1] * floor(i/2), size[2] * (i%2) - chamfer])
|
||||
rotate([45, 0, 0]) cube([size[0] + 2*ep, 1.414*chamfer, 1.414*chamfer]);
|
||||
|
||||
// Y-axis
|
||||
translate([size[0] * floor(i/2) - chamfer, -ep, size[2] * (i%2)])
|
||||
rotate([0, 45, 0]) cube([1.414*chamfer, size[1] + 2*ep, 1.414*chamfer]);
|
||||
}
|
||||
|
||||
// nameplate cutouts
|
||||
translate([(shelfWidth/2 - 76.4)/2, 30, 7]) cube([76.4, 36, 1 + ep]);
|
||||
translate([(shelfWidth/2 - 76.4)/2, 30 + 36, 7])
|
||||
rotate([30, 0, 0]) cube([76.4, 4, 4]);
|
||||
|
||||
// screw holes
|
||||
for (i = [-1, 1]) {
|
||||
color("red")
|
||||
translate([shelfWidth/4 + i*20, 16, -ep]) cylinder(d=3.4, h=8 + 2*ep);
|
||||
translate([shelfWidth/4 + i*20, 16, -ep]) cylinder(d=6.2, h=3 + ep);
|
||||
translate([shelfWidth/4 + i*20, 16, 3 - ep]) cylinder(d1=6.2, d2=3.4, h=1 + 2*ep);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
module handle() {
|
||||
handleLen = 64;
|
||||
//difference() {
|
||||
chamferedCube([handleLen, 12, 12], chamfer=3);
|
||||
|
||||
// screw holes
|
||||
for (i = [-1, 1]) {
|
||||
difference() {
|
||||
translate([handleLen/2 + i*20, 6, 12-ep]) cylinder(d=6, h=8 + ep);
|
||||
translate([handleLen/2 + i*20, 6, 12-ep]) cylinder(d=3, h=8 + 2*ep);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module lowerRight() {
|
||||
difference() {
|
||||
faceBlank();
|
||||
|
||||
// label
|
||||
color("blue")
|
||||
translate([shelfWidth/4 + 6, shelfHeight/4 - 6, -0.2]) mirror([1, 0, 0])
|
||||
linear_extrude(0.4) text(font="Iosevka", size=6, "LR");
|
||||
|
||||
// horizontal board recess
|
||||
translate([sideOffset, sideOffset, -ep])
|
||||
cube([horizontalBoardWidth, boardThickness, 4+ep]);
|
||||
|
||||
// vertical board recesses
|
||||
translate([sideOffset, sideOffset + boardThickness, -ep])
|
||||
cube([boardThickness, 62, 4+ep]);
|
||||
translate([sideOffset + horizontalBoardWidth - boardThickness, sideOffset + boardThickness, -ep])
|
||||
cube([boardThickness, 62, 4+ep]);
|
||||
}
|
||||
}
|
||||
|
||||
module lowerLeft() {
|
||||
difference() {
|
||||
faceBlank();
|
||||
|
||||
// label
|
||||
color("blue")
|
||||
translate([shelfWidth/4 + 6, shelfHeight/4 - 6, -0.2]) mirror([1, 0, 0])
|
||||
linear_extrude(0.4) text(font="Iosevka", size=6, "LL");
|
||||
}
|
||||
}
|
||||
|
||||
module upperRight() {
|
||||
difference() {
|
||||
faceBlank();
|
||||
|
||||
// label
|
||||
color("blue")
|
||||
translate([shelfWidth/4 + 6, shelfHeight/4 - 6, -0.2]) mirror([1, 0, 0])
|
||||
linear_extrude(0.4) text(font="Iosevka", size=6, "UR");
|
||||
}
|
||||
}
|
||||
|
||||
module upperLeft() {
|
||||
difference() {
|
||||
faceBlank();
|
||||
|
||||
// label
|
||||
color("blue")
|
||||
translate([shelfWidth/4 + 6, shelfHeight/4 - 6, -0.2]) mirror([1, 0, 0])
|
||||
linear_extrude(0.4) text(font="Iosevka", size=6, "UL");
|
||||
}
|
||||
}
|
||||
|
||||
lowerRight();
|
||||
translate([0, 200, 0]) handle();
|
||||
Reference in New Issue
Block a user