c34a06d4 |
1 | /* GNU AGPLv3 (or later at your option) |
2 | see bottom for more license info */ |
3 | |
4 | /* measurements from misumi's 3030 aluminum extrusion data sheet |
5 | https://us.misumi-ec.com/pdf/fa/2012/p2_0545.pdf |
6 | */ |
7 | |
8 | x = 30; |
9 | y = 30; |
10 | diagonal = sqrt(pow(30/2, 2) + pow(30/2, 2)); |
11 | opening_width = 8; |
c34a06d4 |
12 | inner_block = 12; |
c34a06d4 |
13 | |
968d427c |
14 | outer_block = (30 - 16.5) / 2; |
c34a06d4 |
15 | wall = 2; |
16 | |
71673730 |
17 | $fn = 100; |
c34a06d4 |
18 | |
d5a6f871 |
19 | module arm_half(){ |
968d427c |
20 | // inner block |
d5a6f871 |
21 | square(inner_block / 2); |
968d427c |
22 | |
23 | // diagonal arms connecting inner block to outer blocks |
d5a6f871 |
24 | rotate(45) { |
2b527530 |
25 | square([diagonal - wall, wall / 2]); } |
968d427c |
26 | |
27 | // outer block, without the wall part since wall has rounded corner |
28 | translate([x / 2 - outer_block, y / 2 - outer_block]) { |
29 | square(outer_block - wall); } |
30 | |
31 | // outer arms covering the opening |
32 | translate([(opening_width + wall) / 2, y / 2 - wall]) { |
33 | square([(x - opening_width - wall) / 2 - wall, wall]); } |
34 | // rounded part at entrace to inside |
35 | translate([(opening_width + wall) / 2, (y - wall) / 2]){ |
36 | circle(d = wall); } |
37 | // rounded part around outside of extrusion |
71673730 |
38 | corner_squish = 0.1; |
39 | translate([x / 2 - wall + corner_squish, y / 2 - wall + corner_squish]) { |
40 | circle(wall - corner_squish); } } |
d5a6f871 |
41 | |
7a5526cd |
42 | module 3030_profile(){ |
43 | arms = 4; |
44 | for(arm = [0:arms - 1]) { |
45 | rotate(arm * 360 / arms) { |
46 | arm_half(); |
47 | mirror(){ arm_half(); } } } } |
48 | |
71673730 |
49 | linear_extrude(height = 35){ |
7a5526cd |
50 | difference(){ |
51 | minkowski(){ |
52 | square(30, true); |
71673730 |
53 | circle(5);} |
7a5526cd |
54 | minkowski(){ |
71673730 |
55 | 3030_profile(); |
56 | circle(0.2);} } } |
57 | |
c34a06d4 |
58 | |
59 | /* |
60 | This file is part of 3d-printables. |
61 | |
62 | 3d-printables is free software: you can redistribute it and/or modify |
63 | it under the terms of the GNU Affero General Public License as published by |
64 | the Free Software Foundation, either version 3 of the License, or |
65 | (at your option) any later version. |
66 | |
67 | 3d-printables is distributed in the hope that it will be useful, |
68 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
69 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
70 | GNU Affero General Public License for more details. |
71 | |
72 | You should have received a copy of the GNU Affero General Public License |
73 | along with challenge-bot. If not, see <http://www.gnu.org/licenses/>. |
74 | */ |