use <library.scad>Clear=0.175; // size of tolerance zonethickness = 2; // global wall thicknessheight = 15; // height of one screen elementscreen_radius = 75/2; // outer radius of screentube_radius=30/2; // inner radius of the space for a sensorscreen_bevel = 10; // bevel of outer screen wallnum_ribs = 3; // number of holding ribscap_radius = screen_radius * 1.5;inner_ring_thickness = thickness *2;angle_sep = 360/num_ribs;cap_height = cap_radius - sqrt(cap_radius*cap_radius - (screen_radius - screen_bevel)*(screen_radius - screen_bevel));difference () {union() {//cap outer shellintersection () {translate ([0,0,-cap_radius + height + cap_height])sphere(cap_radius, $fn=100);//screen outer shellcylinder (h=screen_radius*(height/screen_bevel),r1=screen_radius ,r2=0,$fn=100);}// cap holdertranslate ([0,0,height + (cap_height-thickness)])screen_holder(height, screen_radius, thickness);}union() {intersection () {//cap inner cavitytranslate ([0,0,-cap_radius + height + cap_height ])sphere(cap_radius-thickness, $fn=100);//screen inner cavity (height is solved by triangle similarity)translate ([0,0, -Clear/2 ])cylinder (h=(screen_radius - thickness)*(height/screen_bevel),r1=screen_radius - thickness ,r2=0,$fn=100);}}}// center ribsfor (i = [0 : (num_ribs-1)]) {rotate ([90,0,angle_sep * i])translate ([0,0,-thickness/2])linear_extrude (height = thickness, convexity = 10)polygon(points=[[0, cap_height + height],[tube_radius + thickness - Clear, 0],[screen_radius - thickness,0],[screen_radius - screen_bevel - thickness,height]]);}