13 module outer_shape() {
16 translate([-26, 0, 5])
22 sphere(r=tube_diam/2, center=true);
25 translate([0, 0, -100+epsilon])
26 cube(200, center=true);
28 translate([-25, 0, 0])
30 translate([-100, 0, 0])
31 cube(200, center=true);
35 module inner_shape() {
38 translate([-26-epsilon, 0, 5])
44 sphere(r=tube_diam/2 - 4, center=true);
47 translate([0, 0, 2+-100+epsilon])
48 cube(200, center=true);
50 translate([-22, 0, 0])
52 translate([-100, 0, 0])
53 cube(200, center=true);
57 module screw_hole(d1, d2, z_base) {
60 translate([0, 0, -epsilon])
61 cylinder(r=d1/2, h=z_base + 2*epsilon);
63 translate([0, 0, z_base])
64 cylinder(r=d2/2, h=20);
71 translate([-35, 0, 0])
72 rotate([0, view_angle + tube_angle, 0])
73 translate([100, 0, 0]) cube([200, 200, 200], center=true);
81 translate([-32, 0, 0])
82 rotate([0, view_angle + tube_angle, 0])
83 translate([100, 0, 0]) cube([200, 200, 200], center=true);
85 translate([-27, 0, 0])
87 translate([100, 0, 0]) cube([200, 200, 200], center=true);
89 translate([-108, 0, 0]) cube([200, 200, 200], center=true);
94 translate([-10, 0, -epsilon])
97 translate([12-epsilon, 0, 0]) cube(20, center=true);
102 // presmykacova trubka
104 rotate([0, -tube_angle, 0])
105 translate([0, 0, -50])
106 cylinder(r=tube_diam/2, h=50);
110 module led(h, w, h1, w1) {
112 translate([0, 0, h-w/2])
113 sphere(r=w/2, $fn=64);
114 cylinder(r=w/2, h=h-w/2, $fn=64);
115 translate([0, 0, -h1])
116 cylinder(r=w1/2, h=h1+epsilon, $fn=64);
121 translate([-24, 0, 3])
122 rotate([0, 180+tube_angle, 0])
123 led(h=5,w=3.5,h1=2,w1=4);
126 module status_led() {
127 translate([-21, 0, 8.5])
128 rotate([0, 270+view_angle+tube_angle, 0])
129 led(h=5,w=3.5,h1=2,w1=4);
135 screw_hole(d1=4, d2=8, z_base=4);
145 rotate([0, -tube_angle, 0]) {
148 translate([0, -100, 0]) cube([200, 200, 200], center=true);
150 color("red") status_led();
151 color("deepskyblue") illum_led();
153 color("gray") tube();