chiark / gitweb /
ddbcaf6310b8849ff13adebd50b73f858a354f00
[reprap-play.git] / pull-cord-keeper.scad
1 // -*- C -*-
2
3 hoopthick = 3;
4
5 hinnerrad = 15;
6 houterrad = hinnerrad + hoopthick;
7 hcentredist = 10;
8
9 blockdepth = 5;
10 blockwidth = hcentredist*2 + 6;
11
12 height = 20;
13
14 ziglen = hcentredist/2;
15
16 feedxgap = 5;
17
18 feedzgap = 5;
19
20 ribdepth = 2;
21 ribheight = 3;
22
23 module Oval(centredist, rad) {
24   hull() {
25     translate([-centredist/2,0,0]) circle(r=rad);
26     translate([+centredist/2,0,0]) circle(r=rad);
27   }
28 }  
29
30 module Hoop(){
31   difference(){
32     hull(){
33       Oval(hcentredist, houterrad);
34       translate([0, (blockdepth + hoopthick)/2 + hinnerrad])
35         square([blockwidth,
36                 blockdepth + hoopthick],
37                center=true);
38     }
39     Oval(hcentredist, hinnerrad);
40   }
41 }
42
43 module Positive(){
44   translate([0,0, -height/2])
45     linear_extrude(height=20)
46     Hoop();
47 }
48
49 module Division(biggerpi) {
50   xgap = feedxgap * biggerpi;
51   zgap = feedzgap * biggerpi;
52   mirror([0,0,1])
53     translate([-(ziglen + xgap/2), -100, zgap/2])
54     cube([100, 100, 10]);
55 }
56
57 module Ribs(){
58   imax = ceil(height*2 / ribheight);
59   for (i=[-imax:imax]) {
60     hull(){
61       translate([-ribdepth/2,
62                  ribheight*i,
63                  0])
64         polygon([[0,          0],
65                  [ribdepth, -ribheight],
66                  [ribdepth, +ribheight]]);
67       translate([50, 0])
68         square([1, height*2], center=true);
69     }
70   }
71 }           
72
73 module Demo(){
74   //difference(){
75   %  Positive();
76   //  Division(0);
77   //}
78   Division(1);
79 }
80
81 Ribs();