diff --git a/Koffertjes_opslag/assembly.scad b/Koffertjes_opslag/assembly.scad new file mode 100644 index 0000000..3d9b314 --- /dev/null +++ b/Koffertjes_opslag/assembly.scad @@ -0,0 +1,92 @@ +include +use +use +use +use +use +use +use +use + +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); diff --git a/Koffertjes_opslag/back.scad b/Koffertjes_opslag/back.scad new file mode 100644 index 0000000..53b185f --- /dev/null +++ b/Koffertjes_opslag/back.scad @@ -0,0 +1,8 @@ +include + +module back(){ + cube(size=[casespace+plythick*2, plythick, sideheight], center=false); + echo("#### Back: width = ", casespace+plythick*2, " height = ", sideheight); +} + +back(); diff --git a/Koffertjes_opslag/bottom.scad b/Koffertjes_opslag/bottom.scad new file mode 100644 index 0000000..c9753ee --- /dev/null +++ b/Koffertjes_opslag/bottom.scad @@ -0,0 +1,10 @@ +include + +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(); diff --git a/Koffertjes_opslag/bottom_strengthening.scad b/Koffertjes_opslag/bottom_strengthening.scad new file mode 100644 index 0000000..13473f4 --- /dev/null +++ b/Koffertjes_opslag/bottom_strengthening.scad @@ -0,0 +1,29 @@ +include + +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(); diff --git a/Koffertjes_opslag/case.scad b/Koffertjes_opslag/case.scad new file mode 100644 index 0000000..ccb14fe --- /dev/null +++ b/Koffertjes_opslag/case.scad @@ -0,0 +1,24 @@ +include + +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(); diff --git a/Koffertjes_opslag/dimensions.scad b/Koffertjes_opslag/dimensions.scad new file mode 100644 index 0000000..fa975a3 --- /dev/null +++ b/Koffertjes_opslag/dimensions.scad @@ -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; diff --git a/Koffertjes_opslag/divider.scad b/Koffertjes_opslag/divider.scad new file mode 100644 index 0000000..fe32d62 --- /dev/null +++ b/Koffertjes_opslag/divider.scad @@ -0,0 +1,9 @@ +include + +module divider(){ + color("green") + cube(size=[plythick, casespace, sideheight], center=false); + echo("#### Divider: width = ", casespace, " height = ", sideheight); +} + +divider(); diff --git a/Koffertjes_opslag/middle.scad b/Koffertjes_opslag/middle.scad new file mode 100644 index 0000000..c075ac4 --- /dev/null +++ b/Koffertjes_opslag/middle.scad @@ -0,0 +1,8 @@ +include + +module middle(){ + cube(size=[casespace, plythick, sideheight], center=false); + echo("#### Middle: width = ", casespace, " height = ", sideheight); +} + +middle(); diff --git a/Koffertjes_opslag/partlist.sh b/Koffertjes_opslag/partlist.sh new file mode 100755 index 0000000..f0a619e --- /dev/null +++ b/Koffertjes_opslag/partlist.sh @@ -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)}' diff --git a/Koffertjes_opslag/side.scad b/Koffertjes_opslag/side.scad new file mode 100644 index 0000000..48d7f02 --- /dev/null +++ b/Koffertjes_opslag/side.scad @@ -0,0 +1,10 @@ +include + +module side() { + ytmp = casedepth + plythick; + color("beige") + cube(size=[plythick, ytmp, sideheight], center=false); + echo("#### Side panel height = ", sideheight, " length = ", ytmp); +} + +side(); diff --git a/Koffertjes_opslag/slider.scad b/Koffertjes_opslag/slider.scad new file mode 100644 index 0000000..6a7d9fd --- /dev/null +++ b/Koffertjes_opslag/slider.scad @@ -0,0 +1,19 @@ +include + +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();