construct arm half without intersection or minkowski
authordaniel watson <ozzloy@gmail.com>
Tue, 16 Jan 2018 08:08:45 +0000 (00:08 -0800)
committerdaniel watson <ozzloy@gmail.com>
Tue, 16 Jan 2018 08:08:45 +0000 (00:08 -0800)
mk2-haribo-spool-holder.scad

index b7ca78b7392e9d9883a21e0d4fd0029b70d60aaf..1d5fda584c205733f09e2e74547ad9b354f965e0 100644 (file)
@@ -19,25 +19,27 @@ wall = 2;
 
 $fn = 40;
 
-intersection(){
-  minkowski() {
-    square(x - major_block_corner_diameter, center=true);
-    circle(major_block_corner_radius); }
-
-  union(){
-    arms = 4;
-    for(arm = [0:arms - 1]) {
-      rotate(arm * 360 / arms) {
-        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]); }
-        translate([x / 2 - wall, opening_width / 2]) {
-          square([wall, (y - opening_width) / 2]); } } } } }
+module arm_half(){
+  square(inner_block / 2);
+  rotate(45) {
+    square([diagonal - major_block_corner_radius, wall / 2]); }
+  translate([x / 2 - corner_block_inner, y / 2 - corner_block_inner]) {
+    square(corner_block_inner - wall); }
+  translate([(opening_width + major_block_corner_diameter) / 2,
+             y/2 - wall]) {
+    square([(x - opening_width - 2 * major_block_corner_diameter) / 2,
+            wall]);
+    translate([0, wall/2]){
+      circle(wall / 2); } }
+  translate([(x - major_block_corner_diameter) / 2,
+             (y - major_block_corner_diameter) / 2]) {
+    circle(major_block_corner_radius); } }
+
+arms = 4;
+for(arm = [0:arms - 1]) {
+  rotate(arm * 360 / arms) {
+    arm_half();
+    mirror(){ arm_half(); } } }
 
 /*
   This file is part of 3d-printables.