-/* GNU AGPLv3 (or later at your option)
+/*
+ GNU AGPLv3 (or later at your option)
see bottom for more license info.
- please do not remove this notice. */
+ please keep this notice.
+*/
-/* measurements from misumi's 3030 aluminum extrusion data sheet
- https://us.misumi-ec.com/pdf/fa/2012/p2_0545.pdf */
+/*
+ measurements from misumi's 3030 aluminum extrusion data sheet
+ https://us.misumi-ec.com/pdf/fa/2012/p2_0545.pdf
+*/
//$fn = 30; // use this while editing
$fn = 100; // use this for generating STL
foot_height = 18;
-foot_length = 20;
+
+// 2 for test prints
+// 20 for final prints
+foot_length = 2;
wall_width = 2;
+nub_depth = 4;
+desired_corner_rounding_radius = 2/2.1;
+
+// rounding radius needs to be just under half the size of the wall_width
+maximum_corner_rounding_radius = wall_width / 2 - 0.1;
+corner_rounding_radius =
+ (desired_corner_rounding_radius < maximum_corner_rounding_radius)
+ ?
+ desired_corner_rounding_radius
+ :
+ maximum_corner_rounding_radius;
+
+// the printed nubs did not fit into the extrusion gap perfectly.
+// we can change the model just a little bit to accomodate printing
+// imperfections.
+fudge = 0.1;
+//fudge = 0.0;
// 3030 dimensions
-x = 30; // adding a little because printers aren't perfect
-y = 30; // adding a little because printers aren't perfect
+x = 30;
+y = 30;
opening_width = 8;
outer_block = (30 - 16.5) / 2;
module round_corners(r) {
fillet(r) { fillet(-r) { children(); } } }
+module side_nub() {
+ // side nub, goes into side 3030 openings
+ a = opening_width;
+ b = foot_height + wall_width - (y - opening_width) / 2;
+ side_nub_length = (a < b) ? a : b;
+ translate([0, (y - opening_width) / 2 + fudge]) {
+ square([nub_depth, side_nub_length - fudge]); } }
+
+module bottom_nub() {
+ // bottom nub, goes into bottom 3030 opening
+ translate([(x - opening_width) / 2, 0]) {
+ square([opening_width / 2, nub_depth]); } }
+
module half_foot_2d() {
// outer ring
difference() {
translate([cos(45) * foot_height,
-(sin(45) * foot_height + wall_width)]) {
square([x / 2 - cos(45) * foot_height, wall_width]); }
- // bottom nub, goes into bottom 3030 opening
- translate([(x - opening_width) / 2 + 0.2, 0]) {
- square([opening_width / 2 - 0.2, wall_width * 2]); }
- // side nub, goes into side 3030 openings
- a = opening_width;
- b = foot_height + wall_width - (y - opening_width) / 2;
- side_nub_length = (a < b) ? a : b;
- fudge = 0.3;
- translate([0, (y - opening_width) / 2 + fudge]) {
- square([wall_width, side_nub_length - fudge]); } }
+ bottom_nub();
+ side_nub(); }
module foot_2d() {
- round_corners(wall_width / 2.1) {
+ round_corners(corner_rounding_radius) {
translate([-x / 2, 0, 0]) {
half_foot_2d(); }
translate([x / 2, 0, 0]) {
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
- along with challenge-bot. If not, see <http://www.gnu.org/licenses/>.
+ along with 3d-printables. If not, see <http://www.gnu.org/licenses/>.
*/