1 |
Clear=0.175; // size of tolerance zone |
1 |
Clear=0.175; // size of tolerance zone |
2 |
thickness = 2; // global wall thickness |
2 |
thickness = 2; // global wall thickness |
3 |
height = 15; // height of one screen element |
3 |
height = 15; // height of one screen element |
4 |
screen_radius = 75/2; // outer radius of screen |
4 |
screen_radius = 75/2; // outer radius of screen |
5 |
tube_radius=30/2; // inner radius of the space for a sensor |
5 |
tube_radius=30/2; // inner radius of the space for a sensor |
6 |
screen_bevel = 10; // bevel of outer screen wall |
6 |
screen_bevel = 10; // bevel of outer screen wall |
7 |
num_ribs = 3; // number of holding ribs |
7 |
num_ribs = 3; // number of holding ribs |
8 |
|
8 |
|
9 |
|
9 |
|
10 |
|
10 |
|
11 |
angle_sep = 360/num_ribs; |
11 |
angle_sep = 360/num_ribs; |
12 |
|
12 |
|
13 |
translate ([0,0,height]) |
13 |
translate ([0,0,height]) |
14 |
// screen upper rim |
14 |
// screen upper rim |
15 |
difference () { |
15 |
difference () { |
16 |
cylinder (h=thickness*2,r= screen_radius - screen_bevel,$fn=100); |
16 |
cylinder (h=thickness*2,r= screen_radius - screen_bevel,$fn=100); |
17 |
translate ([0,0,-Clear/2]) |
17 |
translate ([0,0,-Clear/2]) |
18 |
cylinder (h=thickness*2 +Clear,r= (screen_radius - screen_bevel)- thickness ,$fn=100); |
18 |
cylinder (h=thickness*2 +Clear,r= (screen_radius - screen_bevel)- thickness ,$fn=100); |
19 |
|
19 |
|
20 |
|
20 |
|
21 |
// screen upper rim gabs for ribs from another screen. |
21 |
// screen upper rim gabs for ribs from another screen. |
22 |
for (i = [0 : (num_ribs-1)]) { |
22 |
for (i = [0 : (num_ribs-1)]) { |
23 |
rotate ([0,0,60 + (angle_sep * i)]) |
23 |
rotate ([0,0,60 + (angle_sep * i)]) |
24 |
translate ([(screen_radius - screen_bevel)- thickness - Clear/2 ,-Clear/2,-Clear/2]) |
24 |
translate ([(screen_radius - screen_bevel)- thickness - Clear/2 ,-Clear/2,-Clear/2]) |
25 |
cube(size = [thickness + 2*Clear, thickness + Clear,thickness*2 + Clear]); |
25 |
cube(size = [thickness + 2*Clear, thickness + Clear,thickness*2 + Clear]); |
26 |
} |
26 |
} |
27 |
} |
27 |
} |
28 |
|
28 |
|
29 |
//screen |
29 |
//screen |
30 |
|
30 |
|
31 |
difference () { |
31 |
difference () { |
32 |
cylinder (h=height,r1=screen_radius ,r2=screen_radius - screen_bevel,$fn=100); |
32 |
cylinder (h=height,r1=screen_radius ,r2=screen_radius - screen_bevel,$fn=100); |
33 |
translate ([0,0,-Clear/2]) |
33 |
translate ([0,0,-Clear/2]) |
34 |
cylinder (h=height+Clear,r1=screen_radius - thickness ,r2=(screen_radius - screen_bevel) - thickness,$fn=100); |
34 |
cylinder (h=height+Clear,r1=screen_radius - thickness ,r2=(screen_radius - screen_bevel) - thickness,$fn=100); |
35 |
} |
35 |
} |
36 |
|
36 |
|
37 |
|
37 |
|
38 |
//inner ring |
38 |
//inner ring |
39 |
inner_ring_thickness = thickness *2; |
39 |
inner_ring_thickness = thickness *2; |
40 |
|
40 |
|
41 |
difference () { |
41 |
difference () { |
42 |
cylinder (h=inner_ring_thickness,r = tube_radius + thickness,$fn=100); |
42 |
cylinder (h=inner_ring_thickness,r = tube_radius + thickness,$fn=100); |
43 |
translate([0,0,-Clear/2]) |
43 |
translate([0,0,-Clear/2]) |
44 |
cylinder (h=inner_ring_thickness +Clear,r = tube_radius,$fn=100); |
44 |
cylinder (h=inner_ring_thickness +Clear,r = tube_radius,$fn=100); |
45 |
} |
45 |
} |
46 |
|
46 |
|
47 |
// center ribs |
47 |
// center ribs |
48 |
for (i = [0 : (num_ribs-1)]) { |
48 |
for (i = [0 : (num_ribs-1)]) { |
49 |
rotate ([90,0,angle_sep * i]) |
49 |
rotate ([90,0,angle_sep * i]) |
50 |
translate ([0,0,-thickness/2]) |
50 |
translate ([0,0,-thickness/2]) |
51 |
linear_extrude (height = thickness, convexity = 10) |
51 |
linear_extrude (height = thickness, convexity = 10) |
52 |
polygon(points=[[tube_radius + thickness, inner_ring_thickness],[tube_radius + thickness - Clear, 0],[screen_radius - thickness,0],[screen_radius - screen_bevel,height]]); |
52 |
polygon(points=[[tube_radius + thickness, inner_ring_thickness],[tube_radius + thickness - Clear, 0],[screen_radius - thickness,0],[screen_radius - screen_bevel,height]]); |
53 |
|
53 |
|
54 |
} |
54 |
} |