infty = 1000; eps = 0.01; wall = 1.5; // distance between the centers of both strips strip_dist = 25; body_h = 6; al_bar_w = 15 + 0.5; al_bar_h = 2.0 + 0.2; led_strip_w = 10 + 1.0; led_strip_h = 2 * 2.5; screw_hole = 3.7; screw_l = 2; module body() { cube([strip_dist/2 + al_bar_w/2 + wall, al_bar_h + wall, body_h]); translate([strip_dist/2, al_bar_h, 0]) scale([1, (led_strip_h/2 + wall)/(led_strip_w/2 + wall), 1]) cylinder(r = led_strip_w/2 + wall, h = body_h); } for (x = [-1, 1]) scale([x, 1, 1]) difference() { body(); // aluminium bars translate([strip_dist/2-al_bar_w/2, -eps, -eps]) cube([al_bar_w, al_bar_h + eps, body_h + 2*eps]); // LED strip translate([strip_dist/2, al_bar_h, -eps]) scale([1, led_strip_h/led_strip_w, 1]) cylinder(r = led_strip_w/2, h = body_h + 2*eps); // rear half of the cylinder translate([strip_dist/2-led_strip_w/2 - wall - eps, -led_strip_h-wall, -eps]) cube([led_strip_w + 2*wall + 2*eps, led_strip_h +wall + 2*eps, body_h + 2*eps]); // screw hole translate([0, 0, body_h/2]) rotate([-90, 0, 0]) { translate([screw_l/2, 0, -infty/2]) cylinder(r = screw_hole/2, h = infty, $fn = 6); translate([0, 0, -infty/2]) cylinder(r = screw_hole/2, h = infty, $fn = 6); } }