chiark / gitweb /
flyscreen-wall-spacer: wip, v2
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 20 Aug 2023 20:32:56 +0000 (21:32 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 20 Aug 2023 20:37:38 +0000 (21:37 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
flyscreen-wall-spacer.scad

index a767f98d6d0c8c28f4af8138d9398aa91b0a557b..aeb36078f8e7fe17d6acab32e0e17ec8ddd9a532 100644 (file)
@@ -12,6 +12,19 @@ bucket_wall = 2.5;
 bucket_floor = 2.5;
 whole_dia = plug_dia + bucket_wall *2;
 
+min_spacing = 8;
+max_spacing = 19;
+
+// calculated
+
+module Oval(r, dc) {
+  hull(){
+    circle(r);
+    translate([0, dc])
+      circle(r);
+  }
+}
+
 module MainCircle() {
   difference(){
     circle(r = whole_dia/2);
@@ -19,10 +32,29 @@ module MainCircle() {
   }
 }
 
-module Spacer(inboard_to_wall) {
+module MultiSpacer() {
+  difference(){
+    linextr(0, $inboard_to_wall - bracket_th){
+      Oval(whole_dia/2, max_spacing);
+    }
+
+    linextr(bucket_floor, 100) {
+      Oval(plug_dia/2, max_spacing);
+    }
+
+    linextr(-1, 100) {
+      circle(screw_dia/2);
+
+      translate([0, min_spacing])
+       Oval(screw_dia/2, max_spacing - min_spacing);
+    }
+  }
+}
+
+module Spacer($inboard_to_wall) {
   linextr(0, bucket_wall)
     MainCircle();
-  linextr(0, inboard_to_wall - bracket_th){
+  linextr(0, $inboard_to_wall - bracket_th){
     difference(){
       MainCircle();
       circle(r = plug_dia/2);
@@ -31,9 +63,18 @@ module Spacer(inboard_to_wall) {
 }
 
 module Spacers() {
-  Spacer(left_inboard_to_wall);
-  translate([0, 40])
-    Spacer(right_inboard_to_wall);
+  for (dy = [0, 30]) {
+    translate([0,dy,0]) {
+      Spacer($inboard_to_wall = left_inboard_to_wall);
+      translate([0, 70, 0])
+       Spacer($inboard_to_wall = right_inboard_to_wall);
+    }
+  }
+
+  translate([40, 0, 0])
+    MultiSpacer($inboard_to_wall = left_inboard_to_wall);
+  translate([40, 70, 0])
+    MultiSpacer($inboard_to_wall = right_inboard_to_wall);
 }
 
 Spacers();