]> www.fi.muni.cz Git - things.git/blob - vykrajovatko-ctverec.scad
switch holder.scad
[things.git] / vykrajovatko-ctverec.scad
1 draft = 0;
2 eps = 0.01;
3 infty = 100;
4
5 kuzel_def = [
6         [ 6.5, 0 ],
7         [ 6.5, 1.5 ],
8         [ 3.5, 4 ],
9         [ 2.5, 6 ],
10         [ 1.5, 13.0 ],
11         [ 0.5, 15.0 ],
12 ];
13
14 module kuzel() {
15         for (i = [0 : len(kuzel_def)-2]) {
16                 translate([0, 0, kuzel_def[i][1]])
17                         cylinder(r1 = kuzel_def[i][0],
18                                 r2 = kuzel_def[i+1][0],
19                                 h = kuzel_def[i+1][1] + eps - kuzel_def[i][1]);
20         }
21 };
22
23 kuzel2_def = [
24         [ 1.5, 0 ],
25         [ 1.5, 13.0 ],
26         [ 0.5, 15.0 ],
27 ];
28
29 module kuzel2() {
30         for (i = [0 : len(kuzel2_def)-2]) {
31                 translate([0, 0, kuzel2_def[i][1]])
32                         cylinder(r1 = kuzel2_def[i][0],
33                                 r2 = kuzel2_def[i+1][0],
34                                 h = kuzel2_def[i+1][1] + eps - kuzel2_def[i][1]);
35         }
36 };
37
38 module shape(h)
39 {
40   linear_extrude(height=h)
41       polygon([[-15, -15], [-15, 15], [15, 15], [15, -15]]);
42 };
43
44 for (x = [0, 45]) translate([x, 0, 0])
45 difference(){
46         minkowski(){
47                 shape(eps);
48                 if (draft == 1) {
49                         kuzel($fn = 6);
50                 } else {
51                         kuzel($fn = 32);
52                 }
53         }
54         translate([0,0,-infty/2]) shape(infty);
55 };
56
57 difference(){
58         union() {
59                 minkowski(){
60                         cylinder(r = 7, h = eps, $fn = 128);
61                         if (draft == 1) {
62                                 kuzel2($fn = 6);
63                         } else {
64                                 kuzel2($fn = 32);
65                         }
66                 }
67                 for (a = [0, 90]) rotate([0, 0, a])
68                 translate([-15, -1, 0]) cube([30, 2, 7]);
69         }
70         translate([0,0,-infty/2]) cylinder(r = 7, h = infty);
71 };