Ontwerp voor efficiente opslag electro koffertjes

This commit is contained in:
Ward Wouts 2014-11-23 21:05:59 +01:00
parent 0e51b2ba6e
commit fb89d5364d
11 changed files with 252 additions and 0 deletions

View file

@ -0,0 +1,92 @@
include <dimensions.scad>
use <case.scad>
use <bottom.scad>
use <slider.scad>
use <side.scad>
use <middle.scad>
use <back.scad>
use <divider.scad>
use <bottom_strengthening.scad>
module case_slider(){
angle = asin(slidelift/slidelength);
//echo("#### ANGLE ", angle);
translate([0, 0, caseheight-lidheight-slideheight]) {
rotate([-angle, 0, 0]) {
slider();
}
}
translate([slidethick + play/2, 0, 0]) {
rotate([-angle, 0, 0]) {
case();
}
}
translate([casewidth+slidethick+play, 0, caseheight-lidheight-slideheight]) {
rotate([-angle, 0, 0]) {
slider();
}
}
}
// bottom
translate([0, 0, -plythick]) {
bottom();
}
// left side
side();
// right side
translate([casespace+plythick, 0, 0]) {
side();
}
// front case drawers
for (i=[0:4]) {
translate([plythick, casedepth, 10+110*i]) {
case_slider();
}
}
// top
translate([0, 0, sideheight]) {
bottom();
}
// back for front cases / middle divider
translate([plythick, casedepth, 0]) {
middle();
}
// back for assembly
translate([0, casedepth + plythick + casespace, 0]) {
back();
}
// back for side cases / divider
translate([bottomwidth-fullcasedepth-plythick, casedepth+plythick, 0]) {
divider();
}
// side case drawers
translate([bottomwidth-handledepth, casedepth+plythick, 0]) {
rotate([0, 0, 90]) {
for (i=[0:4]) {
translate([0, casedepth, 10+110*i]) {
case_slider();
}
}
}
}
// bottom strengthening for wheels
translate([0, 0, - plythick*2]) {
bottom_strengthening();
}
//echo("#### shelf usefulness? ", bottomwidth - fullcasedepth - plythick);
// wielen zijn 73
echo("#### Total height: ", sideheight + plythick*3 + 73);

View file

@ -0,0 +1,8 @@
include <dimensions.scad>
module back(){
cube(size=[casespace+plythick*2, plythick, sideheight], center=false);
echo("#### Back: width = ", casespace+plythick*2, " height = ", sideheight);
}
back();

View file

@ -0,0 +1,10 @@
include <dimensions.scad>
module bottom(){
// hier nog eens goed over nadenken, weet niet of dit klopt
color("brown")
cube(size=[bottomwidth, bottomlength, plythick], center=false);
echo("#### Bottom length = ", bottomlength, " width = ", bottomwidth);
}
bottom();

View file

@ -0,0 +1,29 @@
include <dimensions.scad>
module bottom_strengthening(){
// front
cube(size=[bottomwidth, strengthwidth, plythick], center=false);
echo("#### Strengthening piece width = ", strengthwidth, " length = ", bottomwidth);
// back
translate([0, bottomlength-strengthwidth, 0]) {
cube(size=[bottomwidth, strengthwidth, plythick], center=false);
echo("#### Strengthening piece width = ", strengthwidth, " length = ", bottomwidth);
}
// left side
translate([0, strengthwidth, 0]) {
color("green")
cube(size=[strengthwidth, bottomlength-strengthwidth*2, plythick], center=false);
echo("#### Strengthening piece width = ", strengthwidth, " length = ", bottomwidth-strengthwidth*2);
}
// right side
translate([bottomwidth-strengthwidth, strengthwidth, 0]) {
color("green")
cube(size=[strengthwidth, bottomlength-strengthwidth*2, plythick], center=false);
echo("#### Strengthening piece width = ", strengthwidth, " length = ", bottomwidth-strengthwidth*2);
}
}
bottom_strengthening();

View file

@ -0,0 +1,24 @@
include <dimensions.scad>
module case(){
color("lightblue")
translate([ -( lidwidth- casewidth)/2 , -casedepth, caseheight-lidheight]) {
// draw the handle first, because of bad rendering in the difference function
translate([(lidwidth-handlewidth)/2, -handledepth, -((102-15)/2)-handleheight/2]) {
difference(){
cube(size=[handlewidth, handledepth, handleheight], center=false);
translate([gapoffset, handledepth-gapdepth, -10]) {
cube(size=[handlewidth-(gapoffset*2), gapdepth+10, handleheight+20], center=false);
}
}
}
// now draw the lid
cube(size=[lidwidth, casedepth, lidheight], center=false);
// and draw the body
translate([(lidwidth-casewidth)/2, 0, -caseheight+lidheight]) {
cube(size=[casewidth, casedepth, caseheight-lidheight], center=false);
}
}
}
case();

View file

@ -0,0 +1,40 @@
// details in arcs
FN=40;
// case dimensions
lidwidth = 420;
lidheight = 15;
casedepth = 330;
caseheight = 102;
casewidth = 400;
handlewidth=175;
handledepth=40;
handleheight=40;
gapoffset=30;
gapdepth=20;
fullcasedepth = casedepth + handledepth;
// play between sliders and case
play = 5;
// plywood thickness
plythick = 18;
// slider dimensions
slidethick = 18;
slideheight = 18;
slidelength = casedepth - 30;
slidelift = 10;
// +20 , 10 for play, 10 for the angling of the slides
sideheight = (caseheight + 8) * 5 + 20;
// show much space does the case including sliders and play need
casespace = casewidth + slidethick*2 + play;
//echo("#### Casespace width = ", casespace);
bottomwidth = plythick*2+casespace;
bottomlength = casedepth + plythick + casespace + plythick;
// baseplate wheels is 60, plywidth for bevel, 10 against splintering
strengthwidth = 60 + plythick + 10;

View file

@ -0,0 +1,9 @@
include <dimensions.scad>
module divider(){
color("green")
cube(size=[plythick, casespace, sideheight], center=false);
echo("#### Divider: width = ", casespace, " height = ", sideheight);
}
divider();

View file

@ -0,0 +1,8 @@
include <dimensions.scad>
module middle(){
cube(size=[casespace, plythick, sideheight], center=false);
echo("#### Middle: width = ", casespace, " height = ", sideheight);
}
middle();

3
Koffertjes_opslag/partlist.sh Executable file
View file

@ -0,0 +1,3 @@
#!/bin/sh
openscad -o blup.dxf assembly.scad 2>&1|grep '####'|sort|awk 'BEGIN{count=0;prevline=""}{if(prevline == $0){count += 1} else {print(count, "x ", prevline);count=1;prevline=$0; }}END{print(count, "x ", prevline)}'

View file

@ -0,0 +1,10 @@
include <dimensions.scad>
module side() {
ytmp = casedepth + plythick;
color("beige")
cube(size=[plythick, ytmp, sideheight], center=false);
echo("#### Side panel height = ", sideheight, " length = ", ytmp);
}
side();

View file

@ -0,0 +1,19 @@
include <dimensions.scad>
module slider () {
translate([0, - slidelength, 0]) {
translate([0, slideheight/2, 0]) {
cube(size=[slidethick, slidelength-slideheight/2, slideheight], center=false);
translate([0, 0, slideheight/2]) {
rotate([0, 90, 0]) {
cylinder(h=slidethick, r=slideheight/2, $fn=FN, center=false);
}
}
}
}
echo("#### Slider: thickness = ", slidethick, " height = ", slideheight, " length = ", slidelength);
}
slider();