// 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);
  }
}
}