chiark / gitweb /
598b8a64b1b1ab4116b32af0582d5d89be8e45a6
[reprap-play.git] / velux-window-grip.scad
1 // -*- C -*-
2
3 include <funcs.scad>
4
5 main_thick = 3.3;
6 main_in_dia = 28.9;
7
8 horn_ext_dia = 20 - 0.5;
9
10 horn_c_x = -4.6;
11 horn_c_dy= -4;
12
13 blhook_start_ang = 45;
14
15 blhook_str_len = 2.9;
16 blhook_mid_rad = 3.5;
17
18 width = 20;
19
20 // computed
21
22 mc_mid_rad = main_in_dia/2 + main_thick/2;
23
24 mc_bl = circle_point([0,0], mc_mid_rad, 270-blhook_start_ang);
25
26 $fs=0.05;
27
28 horn_thick = main_thick;
29
30 module MainLoop(){
31   intersection(){
32     difference(){
33       circle(r= main_in_dia/2 + main_thick, $fn=50);
34       circle(r= main_in_dia/2, $fn=50);
35     }
36     polygon([[0,0],
37              3*mc_bl,
38              [0, -100],
39              [100,-100],
40              [100,100],
41              [0,100]]);
42   }
43   translate(mc_bl)
44     circle(main_thick/2);
45   translate([horn_c_x, mc_mid_rad + horn_c_dy])
46     intersection(){
47     difference(){
48       circle(horn_ext_dia/2);
49       intersection(){
50         circle(horn_ext_dia/2 - horn_thick);
51         polygon([[-50,-50],
52                  [-50,-horn_c_dy],
53                  [50,-horn_c_dy],
54                  [50,-50]]);
55       }
56     }
57     polygon([[0,0],
58               [-50,0],
59               [0,50]]);
60   }
61   translate([0,main_in_dia/2]) mirror([1,0])
62     square([-horn_c_x + horn_ext_dia/2 * 0.75, main_thick]);
63   translate(mc_bl){
64     translate([-blhook_str_len/2, 0])
65       square(center=true, [blhook_str_len, main_thick]);
66     translate([-blhook_str_len, blhook_mid_rad]){
67       intersection(){
68         difference(){
69           circle(r=blhook_mid_rad + main_thick/2);
70           circle(r=blhook_mid_rad - main_thick/2);
71         }
72         mirror([1,1]) square(50);
73       }
74     }
75   }
76 }
77
78 module MainLoopTest(){
79   linear_extrude(height=1.6)
80     MainLoop();
81 }
82
83 MainLoopTest();
84