chiark / gitweb /
72d16e482ee73aff661ee79d54eb678ba9b60124
[reprap-play.git] / anglepoise-neck.scad
1 // -*- C -*-
2
3 arm_depth = 25;
4 arm_innerwidth = 9.60 - 0.50;
5 arm_innerheight = 8.90 - 0.50;
6 arm_pin_depth = (16.15 + 18.00)/2;
7 arm_pin_dia = 1.5;
8
9 armpart_hex_rad = 15;
10 armpart_hex_thick = 8;
11
12 hingepin_dia = 3;
13 hingenut_width = 6;
14 hingenut_depth = 4;
15
16 headpart_main_dia = 15 - 0.3;
17 headpart_main_len = 14;
18 headpart_stub_protrude = 2;
19 headpart_stub_width = 11.7 - 0.3;
20
21 headpart_flatten_angle = 45;
22
23 // computed
24
25 armpart_x_unit = armpart_hex_rad * tan(30);
26 headpart_flatten_z = headpart_main_dia/2 * cos(headpart_flatten_angle);
27 headpart_stub_support_x = headpart_stub_width * cos(59) / 2;
28 headpart_stub_len = headpart_stub_protrude + headpart_main_dia/2;
29 hingenut_depth_y =
30   sqrt(headpart_main_dia*headpart_main_dia/4 - hingenut_width*hingenut_width/4)
31   - hingenut_depth;
32
33 module ArmPart(){ ////toplevel
34   difference(){
35     translate([-arm_innerwidth/2, 1, 0])
36       mirror([0,-1,0])
37       cube([arm_innerwidth, arm_depth+1, arm_innerheight]);
38     translate([0, -arm_pin_depth, -50])
39       cylinder(r=arm_pin_dia/2, h=100);
40   }
41   rotate([90,0,180])
42     linear_extrude(height=armpart_hex_thick)
43     for (mir=[0,1])
44       mirror([mir,0,0])
45         difference(){
46           polygon([[-1, 0],
47                    [armpart_x_unit, 0],
48                    [armpart_x_unit*2, armpart_hex_rad],
49                    [armpart_x_unit, armpart_hex_rad*2],
50                    [-1, armpart_hex_rad*2]]);
51           translate([0,armpart_hex_rad])
52             circle(hingepin_dia/2, $fn=20);
53         }
54 }
55
56 module HeadPart(){ ////toplevel
57   difference(){
58     union(){
59       translate([-headpart_main_len/2, 0,0])
60         rotate([0,90,0])
61         cylinder(r=headpart_main_dia/2, h=headpart_main_len, $fn=40);
62       rotate([90,0,0])
63         cylinder(h = headpart_stub_len,
64                  r = headpart_stub_width/2,
65                  $fn = 6);
66       translate([-headpart_stub_support_x,
67                  -headpart_stub_len,
68                  -headpart_main_dia/2])
69         cube([headpart_stub_support_x*2,
70               headpart_stub_len,
71               headpart_main_dia/2]);
72     }
73     translate([-100,-100,-100])
74       cube([200,200, 100 - headpart_flatten_z]);
75     rotate([90,0,0])
76       translate([0,0, -100])
77       cylinder(r=hingepin_dia/2, h = 200, $fn=20);
78     translate([0,hingenut_depth_y,0])
79       rotate([90,0,180])
80       cylinder(r=hingenut_width/2/cos(30), h=20, $fn=6);
81   }
82 }
83
84 //ArmPart();
85 //HeadPart();