chiark / gitweb /
powerbank-bike-clamp: wip
[reprap-play.git] / powerbank-bike-clamp.scad
1 // -*- C -*-
2
3 include <utils.scad>
4
5 tube_dia = 22.4;
6
7 hinge_around = 2.5;
8 hinge_pin = 1.5; // xxx
9 main_th = 3;
10 minor_wall_min = 1;
11
12 screw = 5.0 + 0.75;
13 screw_nut_across = 10; // xxx
14 knob_behind_across = 15; // xxx
15
16 clamp_width = 15;
17
18 clamp_gap = 2;
19
20 lower_th = 1;
21
22 overlap_l = 0.1;
23
24 // calculated
25
26 main_r = tube_dia/2 + main_th;
27
28 hinge_outer_r = hinge_around + hinge_pin/2;
29 hinge_y = tube_dia/2 + hinge_outer_r;
30
31 screw_max_y_lhs = -main_r -screw_nut_across/2;
32 screw_max_y_rhs = -main_r -knob_behind_across/2;
33
34 screw_y = min(screw_max_y_lhs,
35               screw_max_y_rhs);
36
37 bot_y = screw_y -max( screw_nut_across, knob_behind_across/2 )
38   -minor_wall_min;
39
40 echo(bot_y);
41
42 module TubePlan(){ circle(r = tube_dia/2); }
43 module HingePinPlan(){ translate([0, hinge_y]) circle(r= hinge_pin/2); }
44 module HingeBodyPlan(){ translate([0, hinge_y]) circle(r= hinge_outer_r); }
45
46 module TubeClampLeftPlan(){
47   difference(){
48     union(){
49       polygon([[ 0,                    hinge_y + hinge_outer_r ],
50                [ -main_r + overlap_l,  hinge_y + hinge_outer_r ],
51                [ -main_r + overlap_l,  bot_y                   ],
52                [ -clamp_gap/2,         bot_y                   ],
53                [ -clamp_gap/2,         0,                      ],
54                [ 0,                    0,                      ],
55                ]);
56       HingeBodyPlan();
57     }
58     TubePlan();
59     HingePinPlan();
60   }
61 }
62
63 module TubeClampLeft() { ////toplevel
64   linextr(-clamp_width/2, clamp_width/2)
65     TubeClampLeftPlan();
66 }
67
68 TubeClampLeft();
69