update puzzle to latest version to match solution instructions
[ozzloy@gmail.com/3d-printables] / mk2-haribo-spool-holder.scad
index e7d28d2cb993322b938ab033000f3363cefff8fb..930a0ce429df33d146e9b16b87895da0571d21da 100644 (file)
@@ -16,7 +16,7 @@ wall = 2;
 
 $fn = 100;
 
-module arm_half(){
+module 3030_arm_half(){
   // inner block
   square(inner_block / 2);
 
@@ -43,18 +43,126 @@ module 3030_profile(){
   arms = 4;
   for(arm = [0:arms - 1]) {
     rotate(arm * 360 / arms) {
-      arm_half();
-      mirror(){ arm_half(); } } } }
+      3030_arm_half();
+      mirror(){ 3030_arm_half(); } } } }
 
-linear_extrude(height = 35){
-  difference(){
-    minkowski(){
+module 3030_sleeve_profile(){
+  difference() {
+    minkowski() {
       square(30, true);
-      circle(5);}
-    minkowski(){
+      circle(5); }
+    minkowski() {
       3030_profile();
       circle(0.2);} } }
 
+module fillet(r) {
+   offset(-r) {
+     offset(r) {
+       children(); } } }
+
+module upper_arm_profile(){
+
+  a = [20, -20];
+  b = [34.1, 0];
+  c = [6.25, 20];
+  points = [a, b, c];
+
+  arm_radius = 11.35;
+  arm_center = [61.8, 140.4];
+  hull() {
+    polygon(points);
+    translate(arm_center) {
+      circle(arm_radius); } } }
+
+module forearm_profile() {
+  fillet(-5) {
+    difference() {
+      upper_arm_profile();
+      translate([-20, -20]) {
+        square(151); } } } }
+
+module shoulder_hull() {
+  hull() {
+    translate([-15, -15, 5]) {
+      minkowski(){
+        cube([30, 30, 25]);
+        sphere(5); } }
+    difference() {
+      upper_arm_hull();
+      translate([-30, 30, -10]) {
+        cube(300); } } } }
+
+module upper_arm_hull() {
+  linear_extrude(height = 15) {
+    upper_arm_profile(); } }
+
+module elbow_hull() {
+  hull(){
+    difference() {
+      upper_arm_hull();
+      translate([-50, -300 + 120, -1]) {
+        cube(300); } }
+    difference() {
+      forearm_hull();
+      translate([0, 0, 30]) {
+        cube(300); } } } }
+
+module forearm_hull() {
+  linear_extrude(height = 120.5) {
+    forearm_profile(); } }
+
+module hand_profile() {
+  minkowski() {
+    polygon([[0, 0],
+             [14, 0],
+             [19.5, 20],
+             [7, 20]]);
+    circle(5); } }
+
+module hand_hull() {
+  hull() {
+    difference() {
+      forearm_hull();
+      translate([-30, -30, -300 + 106]) {
+        cube(300); } }
+    translate([53, 135, 115.6]) {
+      linear_extrude(height = 5) {
+        hand_profile(); } } } }
+
+module 3030_spool_holder() {
+  difference() {
+    union() {
+      shoulder_hull();
+      upper_arm_hull();
+      elbow_hull();
+      forearm_hull();
+      hand_hull(); }
+    translate([0, 0, -1]) {
+      linear_extrude(height = 40) {
+        minkowski() {
+          3030_profile();
+          circle(0.2); } } } } }
+
+3030_spool_holder();
+
+module original_forearm_profile() {
+  %projection(true) {
+    translate([-315, 0, -80]) {
+      import("Spool-holder.stl"); } } }
+
+module original_upper_arm_profile() {
+  %projection(true) {
+    translate([-315, 0, -2]) {
+      import("Spool-holder.stl"); } } }
+
+module original_spool_holder() {
+  %translate([-315, 0, 0]) {
+    import("Spool-holder.stl"); } }
+
+module original_hand_profile() {
+  %projection(true) {
+    translate([-368, -135, -117]) {
+      import("Spool-holder.stl"); } } }
 
 /*
   This file is part of 3d-printables.