1 /* GNU AGPLv3 (or later at your option)
2 see bottom for more license info */
4 /* measurements from misumi's 3030 aluminum extrusion data sheet
5 https://us.misumi-ec.com/pdf/fa/2012/p2_0545.pdf
10 diagonal
= sqrt(pow(30/2, 2) + pow(30/2, 2));
13 slot_major_width
= 16.5;
17 major_block_corner_diameter
= 4;
18 major_block_corner_radius
= major_block_corner_diameter
/ 2;
19 major_block
= 30 - major_block_corner_diameter
;
21 corner_block_inner
= (30 - 16.5) / 2;
28 square(x
- major_block_corner_diameter
, center
=true);
29 circle(major_block_corner_radius
); }
32 square(inner_block
/ 2);
33 rotate(45) translate([diagonal
/2, 0]) square([diagonal
, wall
], center
=true);
34 translate([x
/ 2-corner_block_inner
, y
/ 2 - corner_block_inner
]) {
35 square([corner_block_inner
, corner_block_inner
]); }
36 translate([opening_width
/ 2, y
/2 - wall
]) {
37 square([(x
- opening_width
) / 2, wall
]); }
40 square(inner_block
/ 2);
42 translate([diagonal
/2, 0]) {
43 square([diagonal
, wall
], center
=true); } }
44 translate([x
/ 2-corner_block_inner
, y
/ 2 - corner_block_inner
]) {
45 square([corner_block_inner
, corner_block_inner
]); }
46 translate([opening_width
/ 2, y
/2 - wall
]) {
47 square([(x
- opening_width
) / 2, wall
]); } }
50 square(inner_block
/ 2);
52 translate([diagonal
/2, 0]) {
53 square([diagonal
, wall
], center
=true); } }
54 translate([x
/ 2-corner_block_inner
, y
/ 2 - corner_block_inner
]) {
55 square([corner_block_inner
, corner_block_inner
]); }
56 translate([opening_width
/ 2, y
/2 - wall
]) {
57 square([(x
- opening_width
) / 2, wall
]); }
60 square(inner_block
/ 2);
62 translate([diagonal
/2, 0]) {
63 square([diagonal
, wall
], center
=true); } }
64 translate([x
/ 2-corner_block_inner
, y
/ 2 - corner_block_inner
]) {
65 square([corner_block_inner
, corner_block_inner
]); }
66 translate([opening_width
/ 2, y
/2 - wall
]) {
67 square([(x
- opening_width
) / 2, wall
]); } } }
70 square(inner_block
/ 2);
72 translate([diagonal
/2, 0]) {
73 square([diagonal
, wall
], center
=true); } }
74 translate([x
/ 2-corner_block_inner
, y
/ 2 - corner_block_inner
]) {
75 square([corner_block_inner
, corner_block_inner
]); }
76 translate([opening_width
/ 2, y
/2 - wall
]) {
77 square([(x
- opening_width
) / 2, wall
]); }
80 square(inner_block
/ 2);
82 translate([diagonal
/2, 0]) {
83 square([diagonal
, wall
], center
=true); } }
84 translate([x
/ 2-corner_block_inner
, y
/ 2 - corner_block_inner
]) {
85 square([corner_block_inner
, corner_block_inner
]); }
86 translate([opening_width
/ 2, y
/2 - wall
]) {
87 square([(x
- opening_width
) / 2, wall
]); } } }
90 square(inner_block
/ 2);
92 translate([diagonal
/2, 0]) {
93 square([diagonal
, wall
], center
=true); } }
94 translate([x
/ 2-corner_block_inner
, y
/ 2 - corner_block_inner
]) {
95 square([corner_block_inner
, corner_block_inner
]); }
96 translate([opening_width
/ 2, y
/2 - wall
]) {
97 square([(x
- opening_width
) / 2, wall
]); }
100 square(inner_block
/ 2);
102 translate([diagonal
/2, 0]) {
103 square([diagonal
, wall
], center
=true); } }
104 translate([x
/ 2-corner_block_inner
, y
/ 2 - corner_block_inner
]) {
105 square([corner_block_inner
, corner_block_inner
]); }
106 translate([opening_width
/ 2, y
/2 - wall
]) {
107 square([(x
- opening_width
) / 2, wall
]); } } } } }
110 This file is part of 3d-printables.
112 3d-printables is free software: you can redistribute it and/or modify
113 it under the terms of the GNU Affero General Public License as published by
114 the Free Software Foundation, either version 3 of the License, or
115 (at your option) any later version.
117 3d-printables is distributed in the hope that it will be useful,
118 but WITHOUT ANY WARRANTY; without even the implied warranty of
119 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
120 GNU Affero General Public License for more details.
122 You should have received a copy of the GNU Affero General Public License
123 along with challenge-bot. If not, see <http://www.gnu.org/licenses/>.