chiark / gitweb /
0e3bee66da5b30e6114bda563d6b8eea650c4ffa
[reprap-play.git] / light-bracket.scad
1 remote_width=56.2;
2 remote_height=124.7;
3 remote_thick=6.8;
4 mainhole_thick=remote_thick+1;
5 hook_hook_thick=1.5;
6 hook_stem_thick=1.5;
7 hook_hook_len=1.5;
8 base_thick=6;
9 base_margin=4.0;
10 base_width=remote_width-base_margin*2;
11 base_height=remote_height-base_margin*2;
12 base_edgewidth=4;
13
14 // origin is base of mainhole
15
16 module mainhole() {
17         translate([ -remote_width/2, 0, 0 ])
18         cube(center=false,
19                 size=[ remote_width, remote_height, mainhole_thick ] );
20 }
21
22 module hhook(extent) {
23         difference() {
24                 translate([ -hook_stem_thick, 0, -base_thick*2 ])
25                         cube(center=false,
26                                 size=[
27                         hook_stem_thick+base_margin+base_edgewidth-1,
28                         extent,
29                         base_thick*2 + mainhole_thick + hook_hook_thick
30                                         ]);
31                 translate([hook_hook_len, -5, 0])
32                          cube(center=false, size=[ 20, extent+10, 30 ]);
33         }
34 }
35
36 module hhookside(extent) {
37         translate([ -remote_width/2, 0, 0 ])
38                 hhook(extent);
39 }
40
41 module hhookbot(extent) {
42         rotate(a=90, v=[0,0,1]) hhook(extent);
43 }
44
45 module hstuff() {
46         translate([0,70,0]) hhookside(15);
47         translate([0,10,0]) hhookside(15);
48         translate([-10,0,0]) hhookbot(15);
49 }
50
51 module slashes() {
52         for (y=[-35 : 35 : +40])
53                 translate([0,y,0])
54                         rotate(v=[0,0,1],a=45)
55                                 cube(center=true, [ 5,200,200 ]);
56 }
57
58 module base() {
59         translate([ 0, base_height/2 + base_margin, -base_thick/2 ])
60         intersection() {
61                 cube(center=true,
62                         [ base_width, base_height, base_thick+10 ]);
63                 union() {
64                         difference() {
65                                 cube(center=true, [ 200,200,200 ]);
66                                 cube(center=true,
67                                         [ base_width - base_edgewidth*2,
68                                           base_height - base_edgewidth*2,
69                                           base_thick + 15 ]);
70                                 
71                         }
72                         slashes();
73                         mirror([1,0,0]) slashes();
74                 }
75         }
76 //      translate([-base_width/2, base_margin, -base_thick*2])
77 //              cube(center=false, [base_width,base_height,base_thick+10]);
78 }
79
80 screw_ys=[ 20, remote_height-30 ];
81
82 module stuff() {
83         hstuff();
84         mirror([1,0,0]) hstuff();
85         base();
86         for (y=screw_ys) translate([0, y, -20])
87                 cylinder(r=7.5, h=21);
88 }
89
90 module screwhole(holedia, csdia) {
91         // screw goes along z axis downwards
92         // origin is base of countersink
93         // results are positive, so this should be subtracted
94         translate([0,0,-100]) cylinder(h=200, r=holedia/2);
95         cylinder(h=100, r=csdia/2);
96 }
97
98 difference() {
99         stuff();
100         mainhole();
101         for (y=screw_ys) translate([0, y, -base_thick+2]) screwhole(4,10);
102         translate([0,0,-50 - base_thick])
103                 cube(center=true,[300,300,100]); // print bed
104 }