// -*- mode: c; -*- module ramps_holes(h, d) { space=15.2+27.9+5.1; p = .5; translate(v=[14, 0, 0]) { cylinder(r=d/2, h=h, $fs=p); translate(v=[1.3, space, 0]) cylinder(r=d/2, h=h, $fs=p); translate(v=[82.55, 0]) cylinder(r=d/2, h=h, $fs=p); translate(v=[1.3+50.8+24.1, space]) cylinder(r=d/2, h=h, $fs=p); } } module corner(r) { p=.5; cylinder(r=r, h=4, $fs=p); } module baseplate() { r=3; w=82.55+r; space=15.2+27.9+5.1; h=space+r+6; difference() { hull() { translate(v=[r, r, 0]) corner(r); translate(v=[w, r, 0]) corner(r); translate(v=[w-r, h, 0]) cube(size=[r*2, r*2, 4]); translate(v=[r-r, h, 0]) cube(size=[r*2, r*2, 4]); } hull() { translate(v=[14, 10, 0]) corner(r); translate(v=[w-10, 10, 0]) corner(r); translate(v=[w-10, h-14, 0]) #corner(r); translate(v=[14, h-14, 0]) corner(r); } } } t=4; e=20; w = 88.55; union() { translate(v=[0, -56.2, 0]) difference() { union() { translate(v=[11, -3, 0]) baseplate(); ramps_holes(8, 6); } ramps_holes(8, 3.5); } translate(v=[11, 0, 0]) { difference () { cube(size=[w, e+t*2, e+t]); translate(v=[0, t, 0]) #cube(size=[w, e, e]); translate(v=[10, e+t*2+.2, e/2]) rotate(v=[1, 0, 0], a=90) cylinder(r=6/2, h=t*2); translate(v=[80, e+t*2+.2, e/2]) rotate(v=[1, 0, 0], a=90) cylinder(r=6/2, h=t*2); } } }