]> www.fi.muni.cz Git - things.git/blob - pulley.scad
generic pulley
[things.git] / pulley.scad
1 infty = 100;
2 eps = 0.01;
3
4 diameter = 25;
5 thick = 2.5;
6 base_thick = 1.5;
7 d_minus = thick; // cca 45 deg
8
9 center_hole_d = 3.5;
10 side_holes = 5;
11 side_hole_d = 5;
12
13 cut_hole_d = 2;
14 cut_slot = 1;
15
16 module body() {
17         cylinder(r1 = diameter/2, r2 = diameter/2-d_minus/2, h = thick/2 + eps);
18         translate([0, 0, thick/2-eps])
19                 cylinder(r2 = diameter/2, r1 = diameter/2-d_minus/2, h = thick/2 + eps);
20 }
21
22 difference() {
23         body($fn = 128);
24         translate([0, 0, -eps])
25                 cylinder(r = center_hole_d/2, h = thick + 2*eps, $fn = 128);
26         if (side_holes > 0) 
27         for (angle = [0:360/side_holes:360]) rotate([0, 0, angle+180/side_holes])
28                 translate([diameter/3 - d_minus + center_hole_d/2, 0, -eps])
29                         cylinder(r = side_hole_d/2, h = thick + 2*eps, $fn=128);
30         if (base_thick)
31                 difference() {
32                         translate([0, 0, base_thick])
33                                 cylinder(
34                                         r1 = center_hole_d/2 + base_thick,
35                                         r2 = diameter/2-d_minus/2,
36                                         h = thick-base_thick+eps, $fn = 128);
37                         translate([0, 0, base_thick-eps])
38                                 cylinder(r1 = center_hole_d/2 + base_thick,
39                                         r2 = center_hole_d/2 + base_thick/2,
40                                         h = thick - base_thick + eps, $fn = 128);
41                 }
42         if (cut_hole_d) {
43                 translate([diameter/3-cut_hole_d/2, 0, -eps])
44                         cylinder(r = cut_hole_d/2, h = thick + 2*eps, $fn =128);
45                 translate([diameter/2-d_minus/2, -cut_slot/2, -eps])
46                         cube([diameter/2, cut_slot, thick + 2*eps]);
47         }
48 }