// -*- C -*-
post_dia = 23.0;
+post_height = 20;
th = 4;
-nom_hole = 22;
+nom_hole = 25;
min_r = 15 + nom_hole/2;
-maj_r = 22 + nom_hole/2;
+maj_r = 15 + nom_hole/2;
+
+postwall_th = 2;
+
+$fa=1;
+$fs=1;
module Profile(r) {
- prof_r = th/(1-cos(45));
- prof_R = r - prof_r * cos(45);
-
- intersection(){
- hull(){
- translate([0, th-prof_r]){
- translate([1,0])
- square(center=true, 2*[1,prof_r]);
- translate([prof_R, 0])
- circle(prof_r, $fa=1,$fs=1);
- }
- }
- square([r, th]);
+ polygon([ [0, 0],
+ [r, 0],
+ [r-th, th],
+ [0, th] ]);
+}
+
+module Body(){
+ hull(){
+ for (x= [-1,+1] * (maj_r-min_r))
+ translate([x,0,0])
+ rotate_extrude()
+ Profile(min_r);
}
}
-Profile(maj_r);
+module Post(){
+ difference(){
+ translate([0,0,-1])
+ cylinder(r= post_dia/2, h= post_height+1);
+ translate([0,0,-2])
+ cylinder(r= post_dia/2 - postwall_th, h= post_height+3);
+ }
+}
+
+module Cover(){
+ rotate([0,180,0]) Body();
+ Post();
+}
+
+//Body();
+//Post();
+Cover();