chiark / gitweb /
poster-tube-lid: convert to oring: introduce some difference/union (nfc)
[reprap-play.git] / poster-tube-lid.scad
index 3538c8cf078eca2da0e192f49ffc5002b634f74c..10eb6030c0c3a2d47af76b4df86499dda68a0319 100644 (file)
@@ -18,9 +18,14 @@ bayo_behind = 3.5;
 bayo_interf_width = 2.0;
 bayo_interf_slope = 0.75;
 
-seal_thick = 0.1;
 seal_recess = [ 2.0, 2.0 ]; // recess depth, recess height
 
+oring_thick = 5.0;
+oring_bore = 62.0;
+
+oring_upper_embed_angle = 45;
+oring_compress = 0.1; // proportion
+
 side_taper = 1.0;
 
 bayo_above_gap = 1.0;
@@ -44,6 +49,12 @@ bayo_entry_z = bayo_entry;
 bayo_inramp_x = bayo_entry;
 bayo_inramp_z = bayo_entry;
 
+oring_mid_dia = oring_bore + oring_thick;
+oring_outer_dia = oring_mid_dia + oring_thick;
+
+seal_thick = (1 - oring_compress) * oring_thick/2
+  * (1 + cos(oring_upper_embed_angle));
+
 side_height = rivet_posn + bayo_behind + rivet_thick/2;
 side_thick = rivet_tall + over_rivet_wall;
 
@@ -100,27 +111,31 @@ echo(bayo_polygon);
 
 module MainProfile(){
   main_cnr_pos = [ side_thick, top_z ] - [1,1]*main_cnr;
-  translate(main_cnr_pos){
-    intersection(){
-      difference(){
-       circle(r = main_cnr);
-       circle(r = main_cnr * 0.5);
+  difference(){
+    union(){
+      translate(main_cnr_pos){
+       intersection(){
+         difference(){
+           circle(r = main_cnr);
+           circle(r = main_cnr * 0.5);
+         }
+         square([10,10]);
+       }
       }
-      square([10,10]);
+      polygon([[ -1,                    seal_thick        ],
+              [ -1,                    top_z             ],
+              [ main_cnr_pos[0],       top_z             ],
+              [ side_thick,            main_cnr_pos[1]   ],
+              [ side_thick,            -side_height      ],
+              [ side_taper,            -side_height      ],
+              [ 0,                     -rivet_posn       ],
+              [ 0,                     -(seal_recess[0] + seal_recess[1]) ],
+              [ seal_recess[0],        -(seal_recess[0]) ],
+              [ seal_recess[0],        seal_thick        ],
+              ],
+             convexity=10);
     }
   }
-  polygon([[ -1,                    seal_thick        ],
-          [ -1,                    top_z             ],
-          [ main_cnr_pos[0],       top_z             ],
-          [ side_thick,            main_cnr_pos[1]   ],
-          [ side_thick,            -side_height      ],
-          [ side_taper,            -side_height      ],
-          [ 0,                     -rivet_posn       ],
-          [ 0,                     -(seal_recess[0] + seal_recess[1]) ],
-          [ seal_recess[0],        -(seal_recess[0]) ],
-          [ seal_recess[0],        seal_thick        ],
-          ],
-         convexity=10);
 }
 
 module RotateProjectSlice(offset, slice_size, nom_rad, real_rad){
@@ -159,7 +174,7 @@ module BayonetCutout(){
     polygon(bayo_polygon, convexity=10);
 }
 
-module ProfilesDemo(){
+module ProfilesDemo(){ ////toplevel
   translate([-20,0]) MainProfile();
   polygon(bayo_polygon, convexity=10);
 }