17 top_led_h = body_h-14;
27 cylinder(r = tube_d/2 + wall, h = body_w);
28 translate([body_h + tube_d/2, 0, 0])
30 cylinder(r = top_w/2, h = body_w);
37 translate([0, 0, wall])
38 cylinder(r = tube_d/2, h = body_w);
39 translate([tube_d/2+body_h-eps, 0, wall])
41 cylinder(r = top_w/2-wall, h = body_w);
44 translate([0, -tube_d/2-wall-eps, 0])
45 cube([tube_d/2+wall+zip_h/2, tube_d+2*wall, body_w+2*wall]);
48 translate([top_led_h + tube_d/2, -tube_d/2, body_w-wall])
49 cube([infty, tube_d, 2*wall]);
50 translate([top_led_h + tube_d/2, 0, 0])
51 rotate([0, led_angle_y, -led_angle_z])
52 translate([0, -infty/2, 0])
55 // wall with hole for LED
56 translate([top_led_h + tube_d/2, 0, 0])
57 rotate([0, led_angle_y, -led_angle_z])
59 cube([wall, infty, infty]);
66 // cut off the bottom part
67 translate([-infty+tube_d/4, -infty/2, -infty/2]) cube(infty);
69 translate([0, 0, -eps])
70 cylinder(r1 = tube_d1/2, r2 = tube_d/2, h = body_w + 2*eps, $fn = 100);
73 translate([0, 0, body_w/2 - zip_w/2])
74 rotate_extrude(convexity = 10) {
75 translate([tube_d/2 + wall, 0, 0])
76 square(size = [zip_h, zip_w]);
81 translate([tube_d/2 + wall + zip_h/2, -5, wall])
82 cube([top_led_h + tube_d, tube_d, body_w]);
83 translate([top_led_h + tube_d/2, 0, 0])
84 rotate([0, led_angle_y, -led_angle_z])
85 translate([0, -infty/2, 0])
89 translate([tube_d/2+top_led_h+2*wall+body_w*sin(led_angle_y),
90 1.5*wall, body_w/2-0.5])
91 rotate([0, led_angle_y, -led_angle_z])
93 cylinder(r = led_d/2, h = 10, $fn = 6);
96 translate([tube_d/2 + wall + zip_h/2, -10,
98 cube([cable_h, cable_w, eps]);
99 translate([tube_d/2, -10, -eps])
100 cube([cable_h, cable_w, eps]);
105 scale([-1, 1, 1]) // mirror it