make 3030 sleeve to test fit
[ozzloy@gmail.com/3d-printables] / mk2-haribo-spool-holder.scad
index 2a20539f7fee9cfff8cd0402ac480a357f730595..ea8b6681c59c494100cf331f65b1443613189d6c 100644 (file)
@@ -9,102 +9,50 @@ 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;
+outer_block = (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]); } } } } }
+module arm_half(){
+  // inner block
+  square(inner_block / 2);
+
+  // diagonal arms connecting inner block to outer blocks
+  rotate(45) {
+    square([diagonal - wall, wall / 2]); }
+
+  // outer block, without the wall part since wall has rounded corner
+  translate([x / 2 - outer_block, y / 2 - outer_block]) {
+    square(outer_block - wall); }
+
+  // outer arms covering the opening
+  translate([(opening_width + wall) / 2, y / 2 - wall]) {
+    square([(x - opening_width - wall) / 2 - wall, wall]); }
+  // rounded part at entrace to inside
+  translate([(opening_width + wall) / 2, (y - wall) / 2]){
+    circle(d = wall); }
+  // rounded part around outside of extrusion
+  translate([x / 2 - wall, y / 2 - wall]) {
+    circle(wall); } }
+
+module 3030_profile(){
+  arms = 4;
+  for(arm = [0:arms - 1]) {
+    rotate(arm * 360 / arms) {
+      arm_half();
+      mirror(){ arm_half(); } } } }
+
+linear_extrude(height = 10){
+  difference(){
+    minkowski(){
+      square(30, true);
+      circle(10);}
+    minkowski(){
+    3030_profile();
+    circle(0.3);} } }
 
 /*
   This file is part of 3d-printables.