diff --git a/shelf_with_drawers.scad b/shelf_with_drawers.scad index 08986ec..fb8ddd6 100644 --- a/shelf_with_drawers.scad +++ b/shelf_with_drawers.scad @@ -13,15 +13,17 @@ * along with this program. If not, see . */ -/* A shelf with cubical drawers. Units are supposed to be cm. The drawers begin - * 80cm above the ground. You will need 1 kind of lath, 1 kind of board, - * handles, a saw and a few screws for this build. +/* A shelf with cubical drawers. Units are supposed to be cm. You will need 1 + * kind of lath, 1 kind of board, handles, a saw, a drill and a few screws for + * this build. */ $fa = 1; $fs = 0.2; -drawer_size = 20; /* Cube */ +drawer_size = 20; /* Cube */ +drawers_number = 4; /* Number of drawers */ +drawers_begin = 80; /* Begin rendering drawers at this height */ lath_width = 2.4; /* x */ lath_depth = 4.8; /* y */ @@ -90,6 +92,8 @@ module lath(length) module shelf() { + function post_height() = drawers_begin + (drawer_size * drawers_number) + + (board_height * drawers_number + 1); /* Posts */ color("olive") { @@ -99,7 +103,7 @@ module shelf() { translate([x, y, 0]) { - lath(80 + (drawer_size * 4) + (board_height * 5)); + lath(post_height()); } } } @@ -110,7 +114,8 @@ module shelf() { for (x = [0, drawer_size + lath_width]) { - for (z = [drawer_size, 60, 150]) + /* Bottom */ + for (z = [drawer_size:40:drawers_begin - lath_depth]) { translate([x, drawer_size - lath_depth, z]) { @@ -120,15 +125,25 @@ module shelf() } } } + + /* Top */ + translate( + [x, drawer_size - lath_depth, post_height() - lath_depth - 10]) + { + rotate([90, 0, 0]) + { + lath(drawer_size - lath_depth * 2); + } + } } } /* Bottoms */ function bottom_pos(number) = - 80 + (drawer_size * number) + (board_height * number); + drawers_begin + (drawer_size * number) + (board_height * number); color([0.2, 0.4, 0.2]) { - for (number = [0:4]) + for (number = [0:drawers_number]) translate([lath_width, 0, bottom_pos(number)]) { cube([drawer_size, drawer_size, board_height]); @@ -136,21 +151,18 @@ module shelf() } } -shelf(); - -translate([lath_width, -10, 80 + board_height]) +translate([5, 0, 0]) { - drawer(); - translate([0, 0, drawer_size + board_height]) + shelf(); + + translate([lath_width, -10, drawers_begin + board_height]) { - drawer(); - } - translate([0, 0, (drawer_size * 2) + (board_height * 2)]) - { - drawer(); - } - translate([0, 0, (drawer_size * 3) + (board_height * 3)]) - { - drawer(); + for (number = [0:drawers_number - 1]) + { + translate([0, 0, (drawer_size * number) + (board_height * number)]) + { + drawer(); + } + } } }