eps = 0.01; infty = 200; wall = 1.5; tube_d = 8.0 + 0.5; tube2_d = 6.0 + 0.5; tube2_xoff = tube_d/2 + tube2_d/2 + 11; clip_w = tube2_d + 2*wall; slot_w = 5; slot_angle = 180; wing_slot = 0.85*tube2_d; wing_top_wall = 3.5; difference() { hull() { // fuse cylinder cylinder(r = tube_d/2 + wall, h = clip_w); // wing cylinder translate([tube2_xoff - tube2_d/2-wall, -tube_d/2 -wall, 0]) cube([tube2_d + wall + wing_top_wall, tube_d + 2*wall, tube2_d + 2*wall]); } // fuse tube translate([0, 0, -eps]) cylinder(r = tube_d/2, h = clip_w + 2*eps); // fuse tube slot rotate([0, 0, slot_angle]) translate([0, -slot_w/2, -eps]) cube([tube_d, slot_w, clip_w + 2*eps]); // wing tube translate([tube2_xoff, -tube_d/2-wall-eps, tube2_d/2 + wall]) rotate([-90, 0, 0]) cylinder(r = tube2_d/2, h = tube_d + 2*wall + 2*eps); // wing tube slot translate([tube2_xoff - wing_slot/2, -tube_d/2-wall-eps, tube2_d/2 + wall]) cube([wing_slot, tube_d + 2*wall + 2*eps, tube2_d/2 + wall + eps]); }