// E clip type hardware for mystery ranch metcalf ultralite frame legDiam=10; bodyDiam=11.5; ctcLength=20; legLength=20; cordDiam=3; cordHoleGap=0.75; flattenBottom=0.3; $fn = 40; difference(){ // half of e 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); } } // rounded leg ends 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); } } //holes for cord color("green"){ for (dir = [-1 : 1]) mirror([dir, 0, 0]){ translate([cordHoleGap * cordDiam, 0, bodyDiam/7]){ rotate([90, 0, 0]){ cylinder( bodyDiam * 1.1, d = cordDiam, center = true); } } } } //relief for cord bend color("yellow"){ translate([0, bodyDiam / -2, bodyDiam/7]){ rotate([0, 90, 0]){ cylinder(cordDiam * cordHoleGap * 2, d = cordDiam, center = true); } } } }