chiark / gitweb /
flyscreen-wall-spacer: AnySpacer nfc
[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 AnySpacer(max_z) {
55   linextr(0, bucket_wall)
56     MainCircle();
57   linextr(0, max_z){
58     difference(){
59       MainCircle();
60       circle(r = plug_dia/2);
61     }
62   }
63 }
64
65 module Spacer($inboard_to_wall) {
66   AnySpacer($inboard_to_wall - bracket_th);
67 }
68
69 module Spacers() {
70   for (dy = [0, 30]) {
71     translate([0,dy,0]) {
72       Spacer($inboard_to_wall = left_inboard_to_wall);
73       translate([0, 70, 0])
74         Spacer($inboard_to_wall = right_inboard_to_wall);
75     }
76   }
77
78   translate([40, 0, 0])
79     MultiSpacer($inboard_to_wall = left_inboard_to_wall);
80   translate([40, 70, 0])
81     MultiSpacer($inboard_to_wall = right_inboard_to_wall);
82 }
83
84 Spacers();