From 6746ec0cdcf91ff38e7465ee4e770f980d159f26 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gy=C3=B6rgy=20Kurucz?= <gyuri@sajt.pw>
Date: Fri, 26 Jul 2019 14:29:37 +0200
Subject: [PATCH] Put screw_box module in separate file.

---
 include/screw_box.scad  | 75 +++++++++++++++++++++++++++++++++++++++++
 src/sd_card_holder.scad | 75 +----------------------------------------
 2 files changed, 76 insertions(+), 74 deletions(-)
 create mode 100644 include/screw_box.scad

diff --git a/include/screw_box.scad b/include/screw_box.scad
new file mode 100644
index 0000000..b23cb3f
--- /dev/null
+++ b/include/screw_box.scad
@@ -0,0 +1,75 @@
+use <../include/screw.scad>;
+
+/*
+    R: outside radius
+    r: inside radius
+    h: total outside height
+    w: top wall thickness
+    g: inside gap
+    txt: text
+    txt_size: text size
+    $mark_cap: generate cap part
+    $mark_aside: offset generated part
+    $mark_flat: rotate part to lay flat
+*/
+module screw_box(R = 10, r = -1, h = 10, w = 1, g = 0,
+    txt = "", txt_size = 0) {
+
+    module flower2(r = 10, v = .2, n = 15) {
+        function rfn(a) = r - abs(sin(a*n))*v;
+        polygon([ for (i=[0:0.25:359.9999])
+            [ cos(i)*rfn(i), sin(i)*rfn(i) ] ]);
+    }
+
+    h2 = h / 2;
+    _r = r < 0 ? R * 0.9 : r;
+    P = (h2-w-g)/2;
+    tol = 0.7;
+    d_min = metric_screw_d_min(P = P, D_maj = 2*_r,
+        tol = tol);
+    module shape() { flower2(r = R, v = R * 0.025); }
+    module screw(tol = 0) {
+        intersection() {
+            translate([0,0,h-w-g])
+            rotate([180,0,0])
+            metric_screw(P=P,
+            D_maj=_r*2,tol=tol,taper=true);
+            translate([-R,-R,0])
+            cube([R*2,R*2, h-w]);
+        }
+    }
+    module base() {
+        intersection() {
+            union() {
+                linear_extrude(h2) shape();
+                screw();
+            }
+            corner_r = 6;
+            minkowski() {
+                translate([0,0,corner_r])
+                    cylinder(r=R - corner_r, h=h, $fn=70);
+                sphere(r=corner_r, $fn=50);
+            }
+        }
+    }
+    module cap() {
+        difference() {
+            translate([0,0,h2]) linear_extrude(h2)
+                shape();
+            screw(tol = 0.7);
+            cylinder(d=d_min, h = h-w, $fn=100);
+            translate([0,0,h-w/2]) linear_extrude(w)
+                text(txt, halign="center",
+                valign="center", size=txt_size);
+        }
+    }
+    cap = !is_undef($mark_cap);
+    flat = !is_undef($mark_flat);
+    aside = !is_undef($mark_aside);
+    translate([aside ? 2*R : 0, 0, 0])
+    if (!cap) { base(); } else {
+        if (flat) {
+            translate([0,0,h]) rotate([180,0,0]) cap();
+        } else { cap(); }
+    }
+}
diff --git a/src/sd_card_holder.scad b/src/sd_card_holder.scad
index 1f0fc43..97b56c7 100644
--- a/src/sd_card_holder.scad
+++ b/src/sd_card_holder.scad
@@ -1,4 +1,4 @@
-use <../include/screw.scad>;
+use <../include/screw_box.scad>;
 include <../include/common_objects.scad>;
 
 module flower2(r = 10, v = .2, n = 15) {
@@ -11,79 +11,6 @@ s_sd = co_sd_card + [.7, .5, .5];
 s_usd = co_usd_card + [.5, .5, .4];
 s_ad = [12, 25.1, 2.7] + [.4, .4, .3];
 
-/*function n_parents(s, i = 0) = i < $parent_modules ?
-n_parents(s, i + 1) + (parent_module(i) == s ? 1 : 0) :
-    0;*/
-
-/*
-    R: outside radius
-    r: inside radius
-    h: total outside height
-    w: top wall thickness
-    g: inside gap
-*/
-module screw_box(R = 10, r = -1, h = 10, w = 1, g = 0,
-    txt = "", txt_size = 0) {
-    h2 = h / 2;
-    _r = r < 0 ? R * 0.9 : r;
-    P = (h2-w-g)/2;
-    tol = 0.7;
-    d_min = metric_screw_d_min(P = P, D_maj = 2*_r,
-        tol = tol);
-    module shape() { flower2(r = R, v = R * 0.025); }
-    module screw(tol = 0) {
-        intersection() {
-            translate([0,0,h-w-g])
-            rotate([180,0,0])
-            metric_screw(P=P,
-            D_maj=_r*2,tol=tol,taper=true);
-            translate([-R,-R,0])
-            cube([R*2,R*2, h-w]);
-        }
-    }
-    module base() {
-        intersection() {
-            union() {
-                linear_extrude(h2) shape();
-                screw();
-            }
-            corner_r = 6;
-            minkowski() {
-                translate([0,0,corner_r])
-                    cylinder(r=R - corner_r, h=h, $fn=70);
-                sphere(r=corner_r, $fn=50);
-            }
-        }
-    }
-    module cap() {
-        difference() {
-            translate([0,0,h2]) linear_extrude(h2)
-                shape();
-            screw(tol = 0.7);
-            cylinder(d=d_min, h = h-w, $fn=100);
-            translate([0,0,h-w/2]) linear_extrude(w)
-                text(txt, halign="center",
-                valign="center", size=txt_size);
-        }
-    }
-    /* cap = n_parents("mark_cap") > 0;
-    flat = n_parents("mark_flat") > 0;
-    aside = n_parents("mark_aside") > 0; */
-    cap = !is_undef($mark_cap);
-    flat = !is_undef($mark_flat);
-    aside = !is_undef($mark_aside);
-    translate([aside ? 2*R : 0, 0, 0])
-    if (!cap) { base(); } else {
-        if (flat) {
-            translate([0,0,h]) rotate([180,0,0]) cap();
-        } else { cap(); }
-    }
-}
-
-/*module mark_cap() { children(); }
-module mark_flat() { children(); }
-module mark_aside() { children(); }*/
-
 module screw_box_params() {
     screw_box(R = 22.5, h = s_sd.y + 2.5, g = 3,
         txt = "SD cards", txt_size = 7.5);
-- 
GitLab