// E clip type hardware for mystery ranch metcalf ultralite frame legDiam=9.5; bodyDiam=11.5; ctcLength=20; legLength=21; cordDiam=3; cordHoleGap=0.75; flattenBottom=0.3; $fn = 40; difference(){ // half of e outer legs and base mirrored across yz +++++++++++++++++++++++++++++++++++++++++++ color("blue"){ for (dir = [-1 : 1] ) mirror([dir, 0, 0]){ union(){ rotate([0,90,0]){ cylinder(ctcLength / 2, d = bodyDiam, center=false); } // rounded corner translate([ctcLength / 2, 0, 0]){ sphere(d = bodyDiam); } // e leg outer translate([ctcLength / 2, legLength / 2 + bodyDiam / 4, 0]){ rotate([90, 0, 0]){ cylinder( legLength + bodyDiam / 2, d = legDiam, center = true); } } // e leg inner translate([0, legLength * 3 / 4, 0]){ rotate([90, 0, 0]){ cylinder(0.75 * legLength, d = 0.75 * legDiam); } } // rounded end, e leg inner translate([0, legLength * 3 / 4, 0]){ sphere(d = 0.75 * legDiam); } // rounded end, outer legs translate([ctcLength / 2, legLength + bodyDiam / 2, 0]){ sphere(d = legDiam); } } } } // flatten bottom for better print and interface --------------------------- color("red"){ translate([0, 0, -1 * (1 - flattenBottom) * legDiam]){ cube( [2 * ctcLength, 4 * legLength, legDiam], center=true); } } //hole for cord color("green"){ translate([0, legLength * 3 / 4 * 0.9, 0]){ cylinder( bodyDiam * 1.1, d = cordDiam, center = true); } } }