eps = 0.01; infty = 50; bar_w = 15 + 1.0; bar_h = 2 + 1.0; cable_w = 7; cable_h = 4; screw_d = 4; screw_head = 8; strip_angle =30; wall = 1.5; holder_w = 15; difference() { hull($fn =32) { translate([wall + bar_h/2, wall + bar_h/2 + (bar_w-bar_h)*sin(strip_angle) +screw_head/2, 0]) { cylinder(r = bar_h/2 + wall, h = holder_w); rotate([0, 0, -strip_angle]) translate([bar_w-bar_h, 0, 0]) cylinder(r = bar_h/2 + wall, h = holder_w); } translate([0, -wall -screw_head/2, 0]) { cube([wall, screw_head + 2*wall, holder_w]); } } // bar itself hull($fn =32) { translate([wall + bar_h/2, wall + bar_h/2 + (bar_w-bar_h)*sin(strip_angle) +screw_head/2, -eps]) { cylinder(r = bar_h/2, h = holder_w+2*eps); rotate([0, 0, -strip_angle]) translate([bar_w-bar_h, 0, 0]) cylinder(r = bar_h/2, h = holder_w+2*eps); } } // above the bar translate([0, wall + bar_h/2 + (bar_w-bar_h)*sin(strip_angle) + screw_head/2, 0]) rotate([0, 0, -strip_angle]) translate([wall + bar_h/2, bar_h/2 -eps, -eps]) cube([bar_w - bar_h, infty, holder_w + 2*eps]); // screw hole translate([-eps, 0, holder_w/2]) rotate([0, 90, 0]) { rotate([0, 0, 90]) { cylinder(r = screw_d/2, h = infty, $fn = 6); translate([0, 0, wall]) cylinder(r = screw_head/2, h = infty, $fn = 6); } } // cable hole translate([0, screw_head/2+cable_h/2+wall+(bar_w-bar_h)*sin(strip_angle)+eps, 0]) rotate([0, 0, -strip_angle]) translate([wall + bar_w/2 - cable_w/2 + cable_h/2, -cable_h/2, -eps]) hull() { cylinder(r = cable_h/2, h = holder_w + 2*eps); translate([cable_w - cable_h, 0, 0]) cylinder(r = cable_h/2, h = holder_w + 2*eps); } }