diff options
-rw-r--r-- | suspension_cube.scad | 45 | ||||
-rw-r--r-- | suspension_cube.svg | 57 | ||||
-rw-r--r-- | suspension_cube_stencil.scad | 10 |
3 files changed, 112 insertions, 0 deletions
diff --git a/suspension_cube.scad b/suspension_cube.scad new file mode 100644 index 0000000..e3be454 --- /dev/null +++ b/suspension_cube.scad @@ -0,0 +1,45 @@ +cube_side = 100; +min_cube_height = 116; + +shaft_hole_rad=15; +blind_hole_depth = 5; // arbitrary value, TODO +clamp_hole_rad = 13/2; + +board_width=18; + +cube_height = board_width * ceil(min_cube_height / board_width); + +clamp_hole_excentricity = (shaft_hole_rad + cube_side/2 - clamp_hole_rad) / 2; + +module suspension_cube() { + + difference() { + translate([-cube_side/2, -cube_side/2, 0]) + union() { + cube([cube_side, cube_side, cube_height]); + cube([cube_side + board_width, cube_side + board_width, board_width]); + } + + // bore hole for bike shaft (radius of the smallest available + // tool larger than the shaft radius) + cylinder(r=shaft_hole_rad, h=2*cube_height, center=true); + + // blind holes to capture the bearing + for (h = [-0.001, cube_height - blind_hole_depth + 0.001]) + translate([0, 0, h]) + cylinder(r=20, h=blind_hole_depth); + + // holes for clamping screws + for (i = [-1, 1]) + for (j = [-1, 1]) + rotate([0, 0, 45+j*45]) + translate([i * clamp_hole_excentricity, + 0, + board_width + (0.5 - i/4)*(cube_height - board_width) + j*clamp_hole_rad]) + rotate([90, 0, 0]) + cylinder(r=clamp_hole_rad, h=2*cube_height, center=true); + } +} + +if (no_master == undef) +suspension_cube(); diff --git a/suspension_cube.svg b/suspension_cube.svg new file mode 100644 index 0000000..4f4716f --- /dev/null +++ b/suspension_cube.svg @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1033.15" + height="532.46002" + viewBox="-21 0 291.57772 150.27186" + version="1.1" + id="svg2" + inkscape:version="0.48.3.1 r9886" + sodipodi:docname="suspension_cube.svg"> + <metadata + id="metadata12"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs10" /> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1198" + inkscape:window-height="798" + id="namedview8" + showgrid="false" + inkscape:zoom="0.37454771" + inkscape:cx="476.5748" + inkscape:cy="223.22835" + inkscape:window-x="1200" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="svg2" /> + <title + id="title4">OpenSCAD Model</title> + <path + d="m 93.566518,30.969469 18.000002,0 0,-18.000016 -118.0000022,0 0,99.054307 100.0000002,0 z m -22.1964,26.837 -1.8036,-0.7078 -1.5148,-1.2081 -1.0915,-1.6009 -0.5711,-1.8514 0,-1.9376 0.5711,-1.8515 1.0915,-1.6008 1.5148,-1.2081 1.8036,-0.7078 1.9321,-0.1448 1.889,0.4311 1.678,0.9688 1.3178,1.4203 0.8407,1.7457 0.2888,1.9159 -0.2888,1.9159 -0.8407,1.7457 -1.3178,1.4203 -1.678,0.9688 -1.889,0.4311 z m -58.49998,53.999701 -1.80362,-0.70779 -1.5148302,-1.20808 -1.09146,-1.60087 -0.57111,-1.85137 0,-1.93756 0.57111,-1.85147 1.09146,-1.60077 1.5148302,-1.208084 1.80362,-0.70779 1.932113,-0.1448 1.888977,0.4311 1.67796,0.968784 1.31787,1.42027 0.84067,1.74567 0.28879,1.91587 -0.28879,1.91586 -0.84067,1.74567 -1.31787,1.42028 -1.67796,0.96878 -1.888977,0.43109 z m 230.696382,-80.836701 18,0 0,-18.000016 -118,0 0,32.054616 100,0 z m 0,107.999671 0,-81.054271 -100,0 0,81.054271 z m -22.196,-68.162671 -1.804,-0.7078 -1.515,-1.2081 -1.091,-1.6009 -0.571,-1.8514 0,-1.9376 0.571,-1.8515 1.091,-1.6008 1.515,-1.2081 1.804,-0.7078 1.932,-0.1448 1.889,0.4311 1.678,0.9688 1.318,1.4203 0.84,1.7457 0.289,1.9159 -0.289,1.9159 -0.84,1.7457 -1.318,1.4203 -1.678,0.9688 -1.889,0.4311 z m -58.5,53.999671 -1.804,-0.708 -1.515,-1.208 -1.091,-1.601 -0.571,-1.851 0,-1.938 0.571,-1.851 1.091,-1.601 1.515,-1.20819 1.804,-0.70779 1.932,-0.1448 1.889,0.43109 1.678,0.96869 1.318,1.42 0.84,1.746 0.289,1.916 -0.289,1.916 -0.84,1.746 -1.318,1.42 -1.678,0.969 -1.889,0.431 z m -69.304002,0.108 -100.0000002,0 0,14.055 100.0000002,0 z" + id="path6" + style="fill:none;stroke:#000000;stroke-width:0.5" + inkscape:connector-curvature="0" /> +</svg> diff --git a/suspension_cube_stencil.scad b/suspension_cube_stencil.scad new file mode 100644 index 0000000..c950074 --- /dev/null +++ b/suspension_cube_stencil.scad @@ -0,0 +1,10 @@ +no_master = true; + +include<suspension_cube.scad>; + +for (i = [0, 1]) +translate([i*1.5*cube_side, 0]) +projection(cut=true) +translate([clamp_hole_excentricity, 0, clamp_hole_excentricity]) +rotate([90, i*90, 0]) +suspension_cube(); |