]> www.fi.muni.cz Git - things.git/blob - pulley-elliptical.scad
switch holder.scad
[things.git] / pulley-elliptical.scad
1 infty = 100;
2 eps = 0.01;
3
4 wall = 0.6;             // minimum wall
5 d_x = 25;               // inner diameter in the X axis
6 y_scale = 0.5;          // scale y/x
7 height = 2.5;           // height of the rim
8
9 slot_w = 1.5;
10 side_hole_d = 2.0;
11
12 thin_wall = 1;
13 lever_l = 45;
14 lever_h = 15.5;
15 foam_h = 3;
16
17 module half(d_x, y_scale, height) {
18         hull($fn = 128) {
19                 scale([1, (d_x*y_scale+height)/(d_x+height), 1])
20                         cylinder(r = d_x/2 + height/2, h = eps);
21                 translate([0, 0, height/2])
22                         scale([1, y_scale, 1])
23                         cylinder(r = d_x/2, h = eps);
24         }
25 }
26
27 module pulley(d_x, y_scale, height, center_hole_d) {
28         difference() {
29                 union() {
30                         half(d_x, y_scale, height);
31                         translate([0, 0, height]) scale([1, 1, -1])
32                                 half(d_x, y_scale, height);
33                         // lever
34                         hull() {
35                                 translate([-lever_h, 0, 0])
36                                         cube([lever_h, eps, thin_wall]);
37                                 translate([-foam_h, -lever_l, 0])
38                                         cube([foam_h, eps, thin_wall]);
39                         }
40                 }
41                 translate([0, 0, -eps])
42                         cylinder(r = center_hole_d/2, h = height + 2*eps);
43                 translate([-slot_w/2, d_x*y_scale/2, -eps])
44                         cube([slot_w, height, height + 2*eps]);
45                 translate([0, center_hole_d/2 + (d_x*y_scale/2-center_hole_d/2)/2, -eps])
46                         cylinder(r = side_hole_d/2, h = height + 2*eps);
47         }
48 }
49
50 pulley(d_x = 30, y_scale = 0.4, height=3, center_hole_d = 2.5);
51
52 // translate([0, 20, 0])
53 // pulley(d_x = 35, y_scale = 0.4, height=2.5, center_hole_d = 8);
54