make dumb 3030 profile
authordaniel watson <ozzloy@gmail.com>
Mon, 15 Jan 2018 23:01:23 +0000 (15:01 -0800)
committerdaniel watson <ozzloy@gmail.com>
Mon, 15 Jan 2018 23:01:23 +0000 (15:01 -0800)
mk2-haribo-spool-holder.scad [new file with mode: 0644]

diff --git a/mk2-haribo-spool-holder.scad b/mk2-haribo-spool-holder.scad
new file mode 100644 (file)
index 0000000..2a20539
--- /dev/null
@@ -0,0 +1,124 @@
+/* GNU AGPLv3 (or later at your option)
+   see bottom for more license info */
+
+/* measurements from misumi's 3030 aluminum extrusion data sheet
+   https://us.misumi-ec.com/pdf/fa/2012/p2_0545.pdf
+*/
+
+x = 30;
+y = 30;
+diagonal = sqrt(pow(30/2, 2) + pow(30/2, 2));
+opening_width = 8;
+opening_depth = 9;
+slot_major_width = 16.5;
+inner_block = 12;
+inner_hole = 6.8 / 2;
+
+major_block_corner_diameter = 4;
+major_block_corner_radius = major_block_corner_diameter / 2;
+major_block = 30 - major_block_corner_diameter;
+
+corner_block_inner = (30 - 16.5) / 2;
+wall = 2;
+
+$fn = 40;
+
+intersection(){
+  minkowski() {
+    square(x - major_block_corner_diameter, center=true);
+    circle(major_block_corner_radius); }
+
+  union(){
+    square(inner_block / 2);
+    rotate(45) translate([diagonal/2, 0]) square([diagonal, wall], center=true);
+    translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
+      square([corner_block_inner, corner_block_inner]); }
+    translate([opening_width / 2, y/2 - wall]) {
+      square([(x - opening_width) / 2, wall]); }
+
+    mirror([1, -1]) {
+      square(inner_block / 2);
+      rotate(45) {
+        translate([diagonal/2, 0]) {
+          square([diagonal, wall], center=true); } }
+      translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
+        square([corner_block_inner, corner_block_inner]); }
+      translate([opening_width / 2, y/2 - wall]) {
+        square([(x - opening_width) / 2, wall]); } }
+
+    rotate(90){
+      square(inner_block / 2);
+      rotate(45) {
+        translate([diagonal/2, 0]) {
+          square([diagonal, wall], center=true); } }
+      translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
+        square([corner_block_inner, corner_block_inner]); }
+      translate([opening_width / 2, y/2 - wall]) {
+        square([(x - opening_width) / 2, wall]); }
+
+      mirror([1, -1]) {
+        square(inner_block / 2);
+        rotate(45) {
+          translate([diagonal/2, 0]) {
+            square([diagonal, wall], center=true); } }
+        translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
+          square([corner_block_inner, corner_block_inner]); }
+        translate([opening_width / 2, y/2 - wall]) {
+          square([(x - opening_width) / 2, wall]); } } }
+
+    rotate(180){
+      square(inner_block / 2);
+      rotate(45) {
+        translate([diagonal/2, 0]) {
+          square([diagonal, wall], center=true); } }
+      translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
+        square([corner_block_inner, corner_block_inner]); }
+      translate([opening_width / 2, y/2 - wall]) {
+        square([(x - opening_width) / 2, wall]); }
+
+      mirror([1, -1]) {
+        square(inner_block / 2);
+        rotate(45) {
+          translate([diagonal/2, 0]) {
+            square([diagonal, wall], center=true); } }
+        translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
+          square([corner_block_inner, corner_block_inner]); }
+        translate([opening_width / 2, y/2 - wall]) {
+          square([(x - opening_width) / 2, wall]); } } }
+
+    rotate(270){
+      square(inner_block / 2);
+      rotate(45) {
+        translate([diagonal/2, 0]) {
+          square([diagonal, wall], center=true); } }
+      translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
+        square([corner_block_inner, corner_block_inner]); }
+      translate([opening_width / 2, y/2 - wall]) {
+        square([(x - opening_width) / 2, wall]); }
+
+      mirror([1, -1]) {
+        square(inner_block / 2);
+        rotate(45) {
+          translate([diagonal/2, 0]) {
+            square([diagonal, wall], center=true); } }
+        translate([x / 2-corner_block_inner, y / 2 - corner_block_inner]) {
+          square([corner_block_inner, corner_block_inner]); }
+        translate([opening_width / 2, y/2 - wall]) {
+          square([(x - opening_width) / 2, wall]); } } } } }
+
+/*
+  This file is part of 3d-printables.
+
+  3d-printables is free software: you can redistribute it and/or modify
+  it under the terms of the GNU Affero General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  3d-printables is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  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/>.
+*/