chiark / gitweb /
flyscreen-wall-spacer: wip, v2
[reprap-play.git] / flyscreen-wall-spacer.scad
1 // -*- C -*-
2
3 include <utils.scad>
4
5 bracket_th = 2.70;
6 left_inboard_to_wall = 9.78;
7 right_inboard_to_wall = 13.21;
8
9 plug_dia = 10;
10 screw_dia = 5;
11 bucket_wall = 2.5;
12 bucket_floor = 2.5;
13 whole_dia = plug_dia + bucket_wall *2;
14
15 min_spacing = 8;
16 max_spacing = 19;
17
18 // calculated
19
20 module Oval(r, dc) {
21   hull(){
22     circle(r);
23     translate([0, dc])
24       circle(r);
25   }
26 }
27
28 module MainCircle() {
29   difference(){
30     circle(r = whole_dia/2);
31     circle(r = screw_dia/2);
32   }
33 }
34
35 module MultiSpacer() {
36   difference(){
37     linextr(0, $inboard_to_wall - bracket_th){
38       Oval(whole_dia/2, max_spacing);
39     }
40
41     linextr(bucket_floor, 100) {
42       Oval(plug_dia/2, max_spacing);
43     }
44
45     linextr(-1, 100) {
46       circle(screw_dia/2);
47
48       translate([0, min_spacing])
49         Oval(screw_dia/2, max_spacing - min_spacing);
50     }
51   }
52 }
53
54 module Spacer($inboard_to_wall) {
55   linextr(0, bucket_wall)
56     MainCircle();
57   linextr(0, $inboard_to_wall - bracket_th){
58     difference(){
59       MainCircle();
60       circle(r = plug_dia/2);
61     }
62   }
63 }
64
65 module Spacers() {
66   for (dy = [0, 30]) {
67     translate([0,dy,0]) {
68       Spacer($inboard_to_wall = left_inboard_to_wall);
69       translate([0, 70, 0])
70         Spacer($inboard_to_wall = right_inboard_to_wall);
71     }
72   }
73
74   translate([40, 0, 0])
75     MultiSpacer($inboard_to_wall = left_inboard_to_wall);
76   translate([40, 70, 0])
77     MultiSpacer($inboard_to_wall = right_inboard_to_wall);
78 }
79
80 Spacers();