// Rubber attachment for track element, something like lego 14149 // (c) Vitaliy Filippov, 2014, license: GPL 3.0+ $fn=20; difference() { union() { hull() { cylinder(r=2.4, h=4); translate([0, 16, 0]) cylinder(r=2.4, h=4); translate([0, 0, 3]) cylinder(r=4, h=1); translate([0, 16, 3]) cylinder(r=4, h=1); } cylinder(r=2.4, h=9); translate([0, 16, 0]) cylinder(r=2.4, h=9); translate([0, 0, 8.3]) hull() { cylinder(r=2.8, h=1); translate([0, 0, -0.6]) cylinder(r=2.4, h=1+0.6*2); } translate([0, 16, 8.3]) hull() { cylinder(r=2.8, h=1); translate([0, 0, -0.6]) cylinder(r=2.4, h=1+0.6*2); } } hull() { translate([4, 0, 8.5]) scale([8, 1, 1]) rotate([-90, 0, 90]) wedge(); translate([-4, -0.5, 8.5]) cube(size=[8, 1, 4]); } hull() { translate([4, 16, 8.5]) scale([8, 1, 1]) rotate([-90, 0, 90]) wedge(); translate([-4, 16-0.5, 8.5]) cube(size=[8, 1, 4]); } translate([2.4, -4, 7]) cube(size=[2, 8, 4]); translate([-2.4-2, -4, 7]) cube(size=[2, 8, 4]); translate([2.4, 16-4, 7]) cube(size=[2, 8, 4]); translate([-2.4-2, 16-4, 7]) cube(size=[2, 8, 4]); } module wedge() { linear_extrude(height=1) polygon(points=[[-0.5, 0], [0.5, 0], [0, 1]]); }