// Piston for LEGO 76537 - Small Shock Absorber with Extra Hard Spring // (c) Vitaliy Filippov 2014, license: CC-BY-SA 4.0 // Printed with Slic3r, 0.1mm layer, 0.3mm first layer and support enabled. $fn=40; rotate([0, 90, 0]) union() { difference() { union() { cylinder(h=8, r=4); translate([0, 0, 4]) rotate([90, 0, 0]) cylinder(h=4, r=3.5); translate([0, -4, 4]) rotate([90, 0, 0]) cylinder(h=28, r=2.2); translate([-1.5/2, -31.5, 8/2-6/2]) hull() { cube(size=[1.5, 2.5, 6]); translate([0, -1.5, 6/2-3/2]) cube(size=[1.7, 0.5, 3]); } } translate([0, 0, -0.1]) cylinder(h=8+0.2, r=2.55); translate([0, 0, -0.1]) cylinder(h=0.9+0.1, r=5); translate([0, 0, 8-0.9]) cylinder(h=0.9+0.1, r=5); translate([1.4/2, -29-6, 4-1.4/2]) rotate([0, 90, 0]) cube(size=[3, 29, 3]); //translate([-3-1.7/2, -29-6, 4-1.7/2]) rotate([0, 90, 0]) cube(size=[3, 29, 3]); //translate([1.7/2, -29-6, 4+3+1.7/2]) rotate([0, 90, 0]) cube(size=[3, 29, 3]); translate([-3-1.4/2, -29-6, 4+3+1.4/2]) rotate([0, 90, 0]) cube(size=[3, 29, 3]); // Using a wedge allows 3D printed part to translate([-3, -29-4, 4]) rotate([0, 90, 0]) scale([2, 7, 10]) wedge(); } } module wedge() { linear_extrude(height=1) polygon(points=[[-0.5, 0], [0.5, 0], [0, sqrt(1.25)]]); }