// // A measuring spoon for my espresso machine // // Make things easier.. use mcad shapes.. // use ; // Dimensions of various parts of the spoon // // The cup: // top_radius = 42.87 / 2; bot_radius = 37.5 / 2; cup_h = 15.83; thickness = 1.7 ; // The handle (two parts, narrows from handle_c(up)_w to handle_m_w at // handle_cup_l length out. Then from there it widens to handle_end_r (at 40mm // out) where it is capped by a circle. // // cut out of the end of the handle are two hexes of 10.25mm and 9.25mm size. // handle_c_w = 15; handle_m_w = 11.4; end_r = 9; handle_h = 6; handle_end_l = 40; handle_cup_l = 97; sm_hex_offset = 122; lg_hex_offset = 137; lg_hex = 10.25; sm_hex = 9.25; padding = 0.05; ///////////////////////////////////////////////////////////////////////////// // // The cup is the difference between two cylinders // module cup () { $fn = 60; difference() { // outside of the cup // cylinder( h = cup_h + thickness, r1 = bot_radius + thickness, r2 = top_radius + thickness, center = false); // Inside of the cup // translate( v = [0,0,thickness] ) { cylinder( h = cup_h + padding, r1 = bot_radius, r2 = top_radius, center = false ); } } } ///////////////////////////////////////////////////////////////////////////// // // handle, attached to the cup. // module handle() { difference() { union() { linear_extrude( height = handle_h ) { polygon( points = [[0,(handle_c_w/2)], [0,-(handle_c_w/2)], [handle_cup_l,-(handle_m_w/2)], [(handle_cup_l + handle_end_l), -end_r], [(handle_cup_l + handle_end_l), end_r], [handle_cup_l, handle_m_w/2]], paths = [[0,1,2,3,4,5]]); } translate( v = [ handle_cup_l + handle_end_l , 0, 0] ) { cylinder( h = handle_h, r = end_r ); } rotate([90,0,0]) { rightTriangle(2, handle_h, handle_c_w); } } translate( v = [ sm_hex_offset, 0, handle_h /2] ) { hexagon(sm_hex, handle_h*2); } translate( v = [ lg_hex_offset, 0, handle_h /2] ) { hexagon(lg_hex, handle_h*2); } } } ///////////////////////////////////////////////////////////////////////////// // // a spoon has a cup and an attached handle. // module spoon() { union() { cup(); translate(v=[ top_radius + 0.9, 0, cup_h + thickness - handle_h]) { handle(); } } } translate(v=[-(top_radius+handle_end_l+handle_cup_l+end_r)/2,0,cup_h+thickness]) { rotate([180,0,0]) { spoon(); } }