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