--- /dev/null
+infty = 1000;
+eps = 0.01;
+
+wall = 2;
+screw_hole = 3.5;
+screw_l = 3;
+screw_off = 10;
+
+cable_w = 7;
+cable_h = 3;
+cable_off = 24;
+
+led_w = 10;
+led_h = 2.5;
+led_d = (pow(led_w/2, 2) - pow(led_h, 2))
+ / (2 * led_h);
+
+holder_w = 8.5;
+
+vert_l = 20;
+
+module body() {
+ cube([wall, vert_l + wall, holder_w]);
+// translate([-10, -wall, 0])
+// cube([10+wall, wall+eps, holder_w]);
+ hull() {
+ for (x = [0, cable_w - 2*cable_h])
+ translate([0, cable_off+x, 0])
+ cylinder(r = cable_h + wall, h = holder_w, $fn = 64);
+ }
+ translate([-led_w/2, led_d, 0])
+ cylinder(r = led_d + led_h + wall, h = holder_w);
+}
+
+difference() {
+ body();
+ translate([-50, 0, -50/2]) cube(50);
+ // screw hole
+ hull() {
+ for (x = [0, screw_l])
+ translate([-eps, screw_off + x, holder_w/2])
+ rotate([0, 90, 0])
+ rotate([0, 0, 90])
+ cylinder(r = screw_hole/2, h = wall + 2*eps, $fn = 6);
+ }
+ // cable hole
+ hull() {
+ for (x = [0, cable_w - 2*cable_h])
+ translate([0, cable_off+x, -eps])
+ cylinder(r = cable_h, h = holder_w + 2*eps, $fn = 64);
+ }
+ // led strip
+ intersection() {
+ translate([-led_w/2, led_d, -eps])
+ cylinder(r = led_d + led_h, h = holder_w + 2*eps);
+ translate([-50, -50/2, -50/2]) cube(50);
+ }
+ // strip off the vertical part of led strip cylinder
+ translate([wall, -50+screw_off, -50/2]) cube(50);
+}