From 49e96d952e099b62531ecbeea966d3493b32670b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gy=C3=B6rgy=20Kurucz?= <gyuri@sajt.pw> Date: Thu, 28 May 2020 17:45:50 +0200 Subject: [PATCH] SD card holder, spice holder, screw box --- include/screw.scad | 1 + include/screw_box.scad | 51 +++++++++++++++++++++++------------------ src/card_box.scad | 47 +++++++++++++++++++++++++++++++++++++ src/sd_card_holder.scad | 4 ++-- src/spice_holder.scad | 42 +++++++++++++++++++++++++++++++++ 5 files changed, 121 insertions(+), 24 deletions(-) create mode 100644 src/card_box.scad create mode 100644 src/spice_holder.scad diff --git a/include/screw.scad b/include/screw.scad index c9ddf7f..1eaa889 100644 --- a/include/screw.scad +++ b/include/screw.scad @@ -50,6 +50,7 @@ module _screw_thread(N=10, R=10, R_min=12, R_maj=15, P=3, taper=true) { } function metric_screw_d_min(P, D_maj, tol=0) = 2 * (D_maj/2+tol-5/16*sqrt(3)*P); +function metric_screw_d_maj(P, D_min, tol=0) = D_min + 5/8*sqrt(3)*P - 2*tol; /* P: pitch diff --git a/include/screw_box.scad b/include/screw_box.scad index b23cb3f..e3412c8 100644 --- a/include/screw_box.scad +++ b/include/screw_box.scad @@ -6,13 +6,15 @@ use <../include/screw.scad>; h: total outside height w: top wall thickness g: inside gap + tol: tolerance on thread + nt: number of threads txt: text txt_size: text size $mark_cap: generate cap part - $mark_aside: offset generated part + $mark_aside: offset generated part by this amount $mark_flat: rotate part to lay flat */ -module screw_box(R = 10, r = -1, h = 10, w = 1, g = 0, +module screw_box(R = 10, r = -1, h = 10, w = 1, g = 0, tol = 0.7, nt = 2, txt = "", txt_size = 0) { module flower2(r = 10, v = .2, n = 15) { @@ -22,41 +24,46 @@ module screw_box(R = 10, r = -1, h = 10, w = 1, g = 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); + _r = r < 0 ? R * 0.8 : r; + P = (h2-w-g)/nt; + // tol = 0.7; + d_min = 2*_r; + d_maj = metric_screw_d_maj(P = P, D_min = d_min, tol = 0); 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); + rotate([180,0,0]) + metric_screw(P=P, D_maj=d_maj,tol=tol,taper=true); translate([-R,-R,0]) - cube([R*2,R*2, h-w]); + cube([R*2,R*2, h-w]); + } + } + module rounding() { + corner_r = 4; + minkowski() { + translate([0,0,corner_r]) + cylinder(r=R - corner_r, h=h - corner_r * 2, $fn=70); + sphere(r=corner_r, $fn=50); } } 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); + screw(tol = 0); } + rounding(); } } module cap() { difference() { - translate([0,0,h2]) linear_extrude(h2) - shape(); - screw(tol = 0.7); + intersection() { + translate([0,0,h2]) linear_extrude(h2) + shape(); + rounding(); + } + screw(tol = tol); cylinder(d=d_min, h = h-w, $fn=100); translate([0,0,h-w/2]) linear_extrude(w) text(txt, halign="center", @@ -66,7 +73,7 @@ module screw_box(R = 10, r = -1, h = 10, w = 1, g = 0, cap = !is_undef($mark_cap); flat = !is_undef($mark_flat); aside = !is_undef($mark_aside); - translate([aside ? 2*R : 0, 0, 0]) + translate([aside ? 2*R + $mark_aside : 0, 0, 0]) if (!cap) { base(); } else { if (flat) { translate([0,0,h]) rotate([180,0,0]) cap(); diff --git a/src/card_box.scad b/src/card_box.scad new file mode 100644 index 0000000..fb83282 --- /dev/null +++ b/src/card_box.scad @@ -0,0 +1,47 @@ + +tol = [.5, .5, .5]; +size = [57.5, 18.5, 87.2] + tol; +wall = 1.5; +corner_r = 1.3; + +module base_box() { + difference() { + translate([corner_r, corner_r, corner_r]) minkowski() { + cube(size + 2*[wall, wall, wall] + - 2*[corner_r, corner_r, corner_r]); + sphere(corner_r, $fn=30); + } + translate([wall, wall, wall]) cube(size); + } +} + +h = size.z * (3/4); +overlap = size.z * .12; + +module bottom() { + intersection() { + base_box(); + union() { + cube([200, 200, h-overlap]); + translate([wall,wall]/2) + cube([size.x+wall, size.y+wall, h]); + } + } +} + +module top() { + th = size.z - h; + intersection() { + base_box(); + difference() { + translate([0,0,h-overlap]) cube([200, 200, 200]); + wt = .2; + translate([wall-wt,wall-wt]/2) + cube([size.x+wall+wt, size.y+wall+wt, h]); + } + } +} + + +//bottom(); +translate([0,0,overlap+10]) top(); \ No newline at end of file diff --git a/src/sd_card_holder.scad b/src/sd_card_holder.scad index 97b56c7..ce8d991 100644 --- a/src/sd_card_holder.scad +++ b/src/sd_card_holder.scad @@ -58,8 +58,8 @@ module assembled() { } module print() { - translate([1,0,0]) { - $mark_aside = true; $mark_flat = true; cap(); } + translate([0,0,0]) { + $mark_aside = 1; $mark_flat = true; cap(); } base(); } diff --git a/src/spice_holder.scad b/src/spice_holder.scad new file mode 100644 index 0000000..e46c6d0 --- /dev/null +++ b/src/spice_holder.scad @@ -0,0 +1,42 @@ +use <../include/screw_box.scad>; +use <../include/short.scad>; + +V_H = 35 + .5; // vial height +V_D = 16 + .5; // vial diameter +V_C = 10; // vial cap height +V_N = 9; // number of vials + +R_I = (V_N * V_D) / (2 * PI) + V_D/2 + 2.5; +echo(R_I*2); +R_O = R_I + 5; +W0 = 3; // bottom wall +W1 = 1; // top wall +H = V_H + W0 + W1; + + +module screw_box_params() { + screw_box(R = R_O, r = R_I, h = H, w = W1, g = V_C, tol = 0.7); +} + +module vials() { + $fn = 100; + for (i=[1:V_N]) { + rZ(360/V_N*i) tXZ(R_I-V_D/2 - 1, W0) cylinder(h=V_H, d=V_D); + } + tZ(W0) cylinder(h=V_H, r=R_I-V_D - 1.8); +} + +module cap() { + $mark_cap = 1; + //$mark_aside = 1; + $mark_flat = 1; + screw_box_params(); +} +cap(); +//intersection() { +//diff() { +// screw_box_params(); +// #vials(); +//} +//tXYZ(-5, 15, 20) cube([20,19,40]); +//} \ No newline at end of file -- GitLab