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