chiark / gitweb /
light bracket: dimensional adjustments
[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=6;
10 base_margin=4.0;
11 base_width=remote_width-base_margin*2;
12 base_height=remote_height-base_margin*2;
13 base_edgewidth=4;
14
15 // origin is base of mainhole
16
17 module mainhole() {
18         translate([ -remote_width/2, 0, 0 ])
19         cube(center=false,
20                 size=[ remote_width, remote_height, mainhole_thick ] );
21 }
22
23 module hhook(extent) {
24         difference() {
25                 translate([ -hook_stem_thick, 0, -base_thick*2 ])
26                         cube(center=false,
27                                 size=[
28                         hook_stem_thick+base_margin+base_edgewidth-1,
29                         extent,
30                         base_thick*2 + mainhole_thick + hook_hook_thick
31                                         ]);
32                 translate([hook_hook_len, -5, 0])
33                          cube(center=false, size=[ 20, extent+10, 30 ]);
34         }
35 }
36
37 module hhookside(extent) {
38         translate([ -remote_width/2, 0, 0 ])
39                 hhook(extent);
40 }
41
42 module hhookbot(extent) {
43         rotate(a=90, v=[0,0,1]) hhook(extent);
44 }
45
46 module hstuff() {
47         translate([0,70,0]) hhookside(15);
48         translate([0,10,0]) hhookside(15);
49         translate([-10,0,0]) hhookbot(15);
50 }
51
52 module slashes() {
53         for (y=[-35 : 35 : +40])
54                 translate([0,y,0])
55                         rotate(v=[0,0,1],a=45)
56                                 cube(center=true, [ 5,200,200 ]);
57 }
58
59 module base() {
60         translate([ 0, base_height/2 + base_margin, -base_thick/2 ])
61         intersection() {
62                 cube(center=true,
63                         [ base_width, base_height, base_thick+10 ]);
64                 union() {
65                         difference() {
66                                 cube(center=true, [ 200,200,200 ]);
67                                 cube(center=true,
68                                         [ base_width - base_edgewidth*2,
69                                           base_height - base_edgewidth*2,
70                                           base_thick + 15 ]);
71                                 
72                         }
73                         slashes();
74                         mirror([1,0,0]) slashes();
75                 }
76         }
77 //      translate([-base_width/2, base_margin, -base_thick*2])
78 //              cube(center=false, [base_width,base_height,base_thick+10]);
79 }
80
81 screw_ys=[ 20, remote_height-30 ];
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 base of countersink
94         // results are positive, so this should be subtracted
95         translate([0,0,-100]) cylinder(h=200, r=holedia/2);
96         cylinder(h=100, r=csdia/2);
97 }
98
99 module bracket() {
100         // this is the actual thing we want
101         difference() {
102                 stuff();
103                 mainhole();
104                 for (y=screw_ys) translate([0, y, -base_thick+2])       
105                         screwhole(5,8); //dia=4 gives 2.9
106                                          //holedia=10 gives 9.0 want 7.0
107                 translate([0,0,-50 - base_thick])
108                         cube(center=true,[300,300,100]); // print bed
109         }
110 }
111
112 intersection() {
113         !bracket();
114         cube(center=true, [100,55,100]);
115 }