Rev 3842 Rev 3870
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 }