chiark / gitweb /
8a51169b538311149dcabe75911b0ff4ee5a11ae
[reprap-play.git] / xeno-drivebay-bracket.scad
1 // -*- C -*-
2
3 basel = 16;
4 basew = 24;
5 baset = 4.0;
6
7 wallt = 2.5;
8
9 wallh = 42;
10
11 baseholesz = 3.7;
12 baseholeslot = 6.5;
13 baseholeslop = -0.5;
14
15 holeslop = 0.5;
16
17 webt = 2.5;
18
19 pad = false;
20 padw = 12;
21
22 padt = webt;
23 padl = padw;
24 padholesz = 3.0;
25
26 wallholeh = 6+14+2;
27 wallholesz = 3.0;
28 wallholeslot = 4.5;
29
30 walll = basel + webt + (pad ? padl : -0.1);
31
32 webw = min(basew, pad ? padw : padt);
33
34 module slothole(sz, slot, thick, csunk=true, slop=holeslop) {
35   hull(){
36     for (y = [-slot/2,slot/2]) {
37       translate([0,y,-0.15])
38         cylinder(r1=sz/2 + slop,
39                  r2=sz/2 + (csunk ? thick : 0) + slop,
40                  h=thick+0.30);
41     }
42   }
43 }
44
45 module Bracket(){
46   difference(){
47     translate([0, -basew, 0])
48       cube([basel, basew, baset]);
49
50     translate([basel/2, -(basew+wallt)/2, 0])
51       slothole(baseholesz, baseholeslot, baset, slop=baseholeslop);
52   }
53
54   difference(){
55     translate([0.1, 0.3, 0.1])
56     rotate([90,0,0]) {
57       linear_extrude(height=wallt){
58         polygon([[0,0],
59                  [0, wallh/2 + wallholesz/2 + wallt + wallt],
60                  [basel, wallh],
61                  [walll, wallh],
62                  [walll, wallh - padt - padt],
63                  [basel + webt, 0]]);
64       }
65     }
66
67     translate([basel/2, 0, wallholeh])
68       rotate([90,90,0])
69       slothole(wallholesz, wallholeslot, wallt, csunk=false);
70   }
71
72   translate([basel-0.01, 0, 0]) {
73     rotate([90,0,90]) {
74       linear_extrude(height=webt+0.02) {
75         polygon([[-basew, 0],
76                  [-basew, baset],
77                  [-webw, wallh],
78                  [0, wallh],
79                  [0, 0]]);
80       }
81     }
82   }
83
84   if (pad) {
85     translate([basel+webt, -padw, wallh-padt]) {
86       difference(){
87         cube([padl, padw, padt]);
88         translate([padl/2, padw/2, -1])
89           cylinder(r=padholesz/2 + holeslop, h=padt+2);
90       }
91     }
92   }
93 }
94
95 module BracketR(){ ////toplevel
96   rotate([-90,0,0]) Bracket();
97 }
98
99 module BracketL(){ ////toplevel
100   mirror([1,0,0]) BracketR();
101 }
102
103 protinnerh = 37.5;
104 protinnerw = 53;
105 protd = 45;
106 protbaset = 4;
107 protwallt = 2;
108 protlidt = protwallt;
109 protwingd = 28;
110 protwingw = 23;
111
112 module RearCableProtector(){
113   for (x = [-protwallt, protinnerw]) {
114     translate([x, 0, 0]) {
115       cube([protwallt, protd, protinnerh+protlidt]);
116     }
117   }
118   translate([-(protwallt-0.1), 0, protinnerh])
119     cube([protinnerw + (protwallt-0.1)*2, protd, protlidt]);
120   for (lr = [1,0]) {
121     translate([(lr ? -(protwingw + protwallt) : protinnerw), 0, 0]) {
122       difference(){
123         translate([0, 0, 0])
124           cube([protwingw, protwingd, protbaset]);
125         translate([protwingw/2, protwingd/2, 0])
126           rotate([0,0, lr ? 45 : -45])
127           slothole(baseholesz, baseholeslot, baset, slop=baseholeslop);
128       }
129     }
130   }
131 }
132
133 module RearCableProtectorT(){ ////toplevel
134   rotate([90,0,0]) RearCableProtector();
135 }
136
137 chabd = 20;
138 chablidw = 40;
139 chabinnerh = 11;
140 chabwallt = 2;
141 chablidt = 2;
142 chabwebt = 2.5;
143 chabbaset = baset;
144 chabbasew = 20;
145 chabslot = 3;
146 chablidholed = 3;
147
148 module ChannelBracket(){
149   translate([0, -chabd, 0])
150     cube([chabwallt, chabd, chabinnerh+chablidt]);
151   translate([-chablidw, -chabd, chabinnerh]) {
152     difference(){
153       cube([chablidw + chabwallt - 0.1, chabd - 0.1, chablidt]);
154       translate([chablidw/2, chabd/2, -1])
155         cylinder(r=chablidholed/2, h=chablidt+2, $fn=20);
156     }
157   }
158   translate([chabwallt-0.1, -chabd, 0]) {
159     difference(){
160       cube([chabbasew, chabd-0.1, chabbaset]);
161       translate([chabbasew/2, (chabd-chabwebt)/2, 0])
162         rotate([0,0,90])
163         slothole(baseholesz, chabslot, baset, slop=baseholeslop);
164     }
165   }
166 }
167
168 module Kit(){ ////toplevel
169   for (y=[0, -wallh-5]) {
170     translate([0,y,0]) {
171       translate([5,0,0]) BracketR();
172       BracketL();
173     }
174   }
175 }
176
177 //Kit();
178 //BracketR();
179 //RearCableProtectorT();