24 cylinder(r = tube_d/2 + wall, h = body_w);
25 translate([body_h + tube_d/2, 0, 0])
27 cylinder(r = top_w/2, h = body_w);
35 translate([0, -tube_d/2, wall])
36 cube([eps, infty, infty]);
37 translate([tube_d/2+body_h-eps, -top_w/2+wall, wall])
38 cube([eps, infty, infty]);
40 translate([tube_d/2 + 2*wall, -tube_d/2, 0])
41 cube([body_h-3*wall-5, tube_d+2*wall, body_w+eps]);
46 translate([0, 0, wall])
47 cylinder(r = tube_d/2, h = body_w);
48 translate([tube_d/2+body_h-eps, 0, wall])
50 cylinder(r = top_w/2-wall, h = body_w);
53 translate([0, -tube_d/2-wall-eps, 0])
54 cube([tube_d/2+wall+zip_h/2, tube_d+2*wall, body_w+2*wall]);
56 translate([top_led_h + tube_d/2, -tube_d/2, body_w-wall])
57 cube([infty, tube_d, 2*wall]);
58 // wall with hole for LED
59 translate([top_led_h + tube_d/2, 1, wall])
60 cube([wall, infty, infty]);
67 // cut off the bottom part
68 translate([-infty+tube_d/4, -infty/2, -infty/2]) cube(infty);
70 translate([0, 0, -eps])
71 cylinder(r1 = tube_d1/2, r2 = tube_d/2, h = body_w + 2*eps);
74 translate([0, 0, body_w/2 - zip_w/2])
75 rotate_extrude(convexity = 10) {
76 translate([tube_d/2 + wall, 0, 0])
77 square(size = [zip_h, zip_w]);
81 translate([tube_d/2 + wall + zip_h/2, 0, wall])
82 cube([top_led_h - wall - zip_h/2, tube_d, body_h]);
84 translate([tube_d/2+top_led_h+2*wall,1.5*wall, body_w/2-0.5])
86 cylinder(r = led_d/2, h = 10);
89 translate([tube_d/2 + wall + zip_h/2, -10,
91 cube([cable_h, cable_w, eps]);
92 translate([tube_d/2, -10, -eps])
93 cube([cable_h, cable_w, eps]);