2020-08-01 00:33:34 +02:00
|
|
|
$fa = 1;
|
|
|
|
$fs = 0.2;
|
|
|
|
|
2020-08-01 01:02:20 +02:00
|
|
|
drawer_size = 30; /* Cube */
|
|
|
|
|
|
|
|
lath_width = 2.4; /* x */
|
|
|
|
lath_depth = 4.8; /* y */
|
|
|
|
|
|
|
|
board_height = 1.0; /* z */
|
2020-08-01 00:33:34 +02:00
|
|
|
|
|
|
|
module schublade()
|
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
/* Sides */
|
2020-08-01 00:33:34 +02:00
|
|
|
color("brown")
|
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
cube([board_height, drawer_size, drawer_size]);
|
|
|
|
translate([drawer_size - board_height, 0, 0])
|
|
|
|
cube([board_height, drawer_size, drawer_size]);
|
2020-08-01 00:33:34 +02:00
|
|
|
}
|
|
|
|
|
2020-08-01 01:02:20 +02:00
|
|
|
/* Front & back */
|
2020-08-01 00:33:34 +02:00
|
|
|
color("darkred")
|
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
translate([board_height, 0, 0])
|
|
|
|
cube([drawer_size - board_height * 2, board_height, drawer_size]);
|
|
|
|
translate([board_height, drawer_size - board_height, 0])
|
|
|
|
cube([drawer_size - board_height * 2, board_height, drawer_size]);
|
2020-08-01 00:33:34 +02:00
|
|
|
}
|
|
|
|
|
2020-08-01 01:02:20 +02:00
|
|
|
/* Bottom */
|
|
|
|
color([0.4, 0.2, 0.2]) translate([board_height, board_height, 0]) cube(
|
|
|
|
[drawer_size - board_height * 2, drawer_size - board_height * 2, 1]);
|
2020-08-01 00:33:34 +02:00
|
|
|
|
2020-08-01 01:02:20 +02:00
|
|
|
/* Handle */
|
|
|
|
translate([drawer_size / 2, 0, drawer_size / 2])
|
2020-08-01 00:33:34 +02:00
|
|
|
{
|
|
|
|
color([0.4, 0.2, 0.2])
|
|
|
|
{
|
|
|
|
rotate([90, 0, 0]) cylinder(h = 0.5, d = 1.5);
|
|
|
|
translate([0, -1.5, 0]) sphere(d = 3, false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-08-01 01:02:20 +02:00
|
|
|
module lath(length)
|
2020-08-01 00:33:34 +02:00
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
cube([lath_width, lath_depth, length]);
|
2020-08-01 00:33:34 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
module regal()
|
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
/* Posts */
|
2020-08-01 00:33:34 +02:00
|
|
|
color("olive")
|
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
for (x = [0, drawer_size + lath_width])
|
2020-08-01 00:33:34 +02:00
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
for (y = [0, drawer_size - lath_depth])
|
2020-08-01 00:33:34 +02:00
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
translate([x, y, 0])
|
|
|
|
lath(80 + 4 * drawer_size + 5 * board_height);
|
2020-08-01 00:33:34 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-08-01 01:02:20 +02:00
|
|
|
/* Cross laths */
|
2020-08-01 00:33:34 +02:00
|
|
|
color("darkgreen")
|
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
for (x = [0, drawer_size + lath_width])
|
2020-08-01 00:33:34 +02:00
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
for (z = [drawer_size, 60, 150])
|
2020-08-01 00:33:34 +02:00
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
translate([x, drawer_size - lath_depth, z]) rotate([90, 0, 0])
|
|
|
|
lath(drawer_size - lath_depth * 2);
|
2020-08-01 00:33:34 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-08-01 01:02:20 +02:00
|
|
|
/* Bottoms */
|
2020-08-01 00:33:34 +02:00
|
|
|
color([0.2, 0.4, 0.2])
|
|
|
|
{
|
2020-08-01 01:02:20 +02:00
|
|
|
for (z = [
|
|
|
|
80, 80 + drawer_size + board_height,
|
|
|
|
80 + drawer_size * 2 + board_height * 2,
|
|
|
|
80 + drawer_size * 3 + board_height * 3,
|
|
|
|
80 + drawer_size * 4 + board_height * 4
|
|
|
|
])
|
|
|
|
translate([lath_width, 0, z])
|
|
|
|
cube([drawer_size, drawer_size, board_height]);
|
2020-08-01 00:33:34 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
regal();
|
|
|
|
|
2020-08-01 01:02:20 +02:00
|
|
|
translate([lath_width, -10, 80 + board_height])
|
2020-08-01 00:33:34 +02:00
|
|
|
{
|
|
|
|
schublade();
|
2020-08-01 01:02:20 +02:00
|
|
|
translate([0, 0, drawer_size + board_height]) schublade();
|
|
|
|
translate([0, 0, drawer_size * 2 + board_height * 2]) schublade();
|
|
|
|
translate([0, 0, drawer_size * 3 + board_height * 3]) schublade();
|
2020-08-01 00:33:34 +02:00
|
|
|
}
|