From 0cbf5490ca799e577ca771ff7cf95e363386c6b4 Mon Sep 17 00:00:00 2001 From: Clinton Ebadi Date: Sat, 7 Oct 2017 19:36:55 -0400 Subject: [PATCH] acorn: v1 Defaults will create a reasonably compact acorn that can fit a few quarters/arcade tokens, or a CR2032 battery. Add key chain hole. Requires acorn cap model, release pending the designer of the cap publicly releasing it. --- acorn/acorn-threads.scad | 237 +++++++++++++++++++-------------------- 1 file changed, 113 insertions(+), 124 deletions(-) rewrite acorn/acorn-threads.scad (83%) diff --git a/acorn/acorn-threads.scad b/acorn/acorn-threads.scad dissimilarity index 83% index f532ffe..b477ccb 100644 --- a/acorn/acorn-threads.scad +++ b/acorn/acorn-threads.scad @@ -1,124 +1,113 @@ -// Threads for acorn model -// Copyright (c) 2017 Clinton Ebadi - -use -use -use - - -//outer_d = 178; -thread_pitch = 2.0; -thread_size = 1.5; -outer_d = (26 - thread_size - 10)/2; -base_d = outer_d / 3; -thread_height = 4; -wall_thickness = 3; -base_height = 20; - -thread_tolerance = 0.6; -thread_angle = 60; - - -//cylinder (d = outer_d, h = 10); -module acorn_thread (outer_d = outer_d, internal = false) { - //outer_d = outer_d + (internal ? thread_tolerance : 0); - outer_d = outer_d + thread_size; - thread_height = thread_height; // + (internal ? thread_tolerance : 0); - local_thread_size = thread_size; // + (internal ? thread_tolerance : 0); - - - - if (internal) { - echo ("outer ring = ", outer_d+wall_thickness/2+local_thread_size); - ScrewHole (outer_diam=outer_d, height = thread_height, pitch = thread_pitch, angle = thread_angle) { - cylinder (d = outer_d+wall_thickness/2+thread_size, h = thread_height); - } - } - - //translate ([0, 0, internal ? -0.0 : 0]) metric_thread (diameter=outer_d, pitch = thread_pitch, thread_size=local_thread_size, length = thread_height, internal=internal, angle=thread_angle); - - if (!internal) { - difference () { - ScrewThread (outer_diam=outer_d, height = thread_height, pitch = thread_pitch, tooth_height = local_thread_size, angle = thread_angle); - cylinder (d = outer_d-wall_thickness-local_thread_size-0.01, h = thread_height * 4, center=true); - } - } -} - - -module acorn_base_1 () { - hull () { - - translate ([0, 0, base_height-base_d/2]) cylinder (d=outer_d, h=0.1); - sphere (r = base_d); - } -} - -module acorn_base_xxx () { - difference () { - acorn_base_1 (); - resize ([outer_d-wall_thickness, 0, 0], auto=true) acorn_base_1 (); - translate ([0, 0, base_height-base_d/2-wall_thickness]) cylinder (d = outer_d - wall_thickness, h = 5); - } -} - -rfa = 2; -real_outer_d = 4 * sqrt(outer_d/2)*sqrt(base_height/sqrt(outer_d/2)) + rfa*2; -echo (real_outer_d); -module nut_1 () { - paraboloid (y=base_height, f=sqrt(outer_d/2),rfa=rfa,fc=0,detail=120, x = outer_d, hi=base_height); -} - -module nut () { - //cylinder(d=real_outer_d, h=base_height+1); - difference () { - nut_1 (); - translate ([0, 0, wall_thickness]) resize ([real_outer_d - wall_thickness, 0, 0], auto=true) nut_1 (); - } - - translate ([0, 0, base_height-0.1]) acorn_thread (outer_d = real_outer_d);//, $fa=0.1, $fs=0.1); - -} - - - -//$fs = 0.1; -//$fa = 1; - -module nuts () { -//translate ([real_outer_d+10, 0, 0,]) nut (); -translate ([0, 0, thread_height]) rotate ([180, 0, 0]) acorn_thread (outer_d = real_outer_d, internal=true); //, outer_d=real_outer_d); - -} - -//print_test(); -nuts (); - -//fit_test (); - -module print_test () { - translate ([real_outer_d+5, 0, thread_height]) rotate ([180, 0, 0]) acorn_thread (outer_d = real_outer_d, internal=true); //, outer_d=real_outer_d); - translate ([0, 0, thread_height]) rotate ([180, 0, 0]) union () { - translate ([0, 0, 0]) cylinder (d=real_outer_d-wall_thickness, h=thread_height); - translate ([0, 0, -thread_height*3]) cylinder (d=real_outer_d/2, h=thread_height*3); - acorn_thread (outer_d = real_outer_d); - } - - -} - -module fit_test () { - intersection () { - union () { - color ("YellowGreen", 0.5) acorn_thread (outer_d = real_outer_d, internal=true); - /* /\*translate ([0, 0, thread_height]) rotate ([180, 0, 0]) *\/ color ("Peru") union () { */ - /* translate ([0, 0, 0]) cylinder (d=real_outer_d-wall_thickness, h=thread_height); */ - /* translate ([0, 0, -thread_height*3]) cylinder (d=real_outer_d/2, h=thread_height*3); */ - /* acorn_thread (outer_d = real_outer_d); */ - /* } */ - } - //color ("White", 0.5) cube (real_outer_d); - } - - -} +// Threads for acorn model +// Copyright (c) 2017 Clinton Ebadi + +use // http://www.thingiverse.com/thing:1686322 + +thread_pitch = 3.0; +thread_size = 2.5; //2.2; // 3.0 +thread_tooth_height = thread_pitch - 0.4; +thread_height = 3.5; //4.0; +wall_thickness = thread_size; +base_height = 25; +inner_d = 24.5; +outer_d = inner_d + wall_thickness*2; //33; + +internal_thread_tolerance = 0.3; +external_thread_tolerance = 0.2; +thread_angle = 50; + + +module acorn_thread (outer_d = outer_d, internal = false, ring = true) { + outer_d = outer_d; + + if (internal) { + outer_ring_d = outer_d+max(thread_size, wall_thickness)+1; + echo ("outer ring = ", outer_ring_d); + ScrewHole (outer_diam=outer_d, height = thread_height, pitch = thread_pitch, tooth_height = thread_tooth_height, tooth_angle = thread_angle, tolerance=internal_thread_tolerance) { + if (ring) cylinder (d = outer_ring_d, h = thread_height); + } + } + + if (!internal) { + difference () { + ScrewThread (outer_diam=outer_d, height = thread_height, pitch = thread_pitch, tooth_height = thread_tooth_height, tooth_angle = thread_angle, tolerance=external_thread_tolerance); + cylinder (d = outer_d-wall_thickness-thread_size-0.01, h = thread_height * 4, center=true); + } + } +} + + +module nut_body (h = base_height, d = outer_d, nub = true) { + translate ([0 ,0, h]) { + intersection () { + union () { + resize ([d, d, h*2]) sphere (d=h*2); + if (nub) { + translate ([0, d/2-wall_thickness/2, -thread_height]) sphere (d=wall_thickness*2, $fs = 0.1); + } + } + translate ([0 ,0, -h/2]) cube ([d*2, d*2, h], center=true); + } + } +} + +module nut () { + difference () { + nut_body (); + translate ([0, 0, wall_thickness + 0.01]) nut_body (d=outer_d-wall_thickness*2, nub=false); + } + + translate ([0, 0, base_height-0.1]) acorn_thread (outer_d = outer_d); +} + + + +$fs = 1; +$fa = 1; + +module cap_keychain (hole_d=3, spacing=15 /*12*/) { + h=100; + translate ([-spacing/2, 0, 0]) cylinder (d=hole_d, h=h, $fs=0.1); + translate ([spacing/2, 0, 0]) cylinder (d=hole_d, h=h, $fs=0.1); +} + +module cap () { + scale_f = outer_d / 171; + difference () { + scale ([scale_f, scale_f, scale_f]) { + difference () { + union () { + translate ([0, 0, -1]) import ("Acorn_Unthreaded/cap_reduced.stl"); + echo ("h = ", thread_height/scale_f); + cylinder (d = 180, h=thread_height/scale_f); + } + translate ([0, 0, -0.51]) cube ([200, 200, 1], center=true); + } + } + cap_keychain (); + acorn_thread (internal = true, ring = false); + } +} + +module gasket (gasket_height=0.9) { + cylinder (d = outer_d, h = gasket_height, center=true); +} + +module nuts () { +//translate ([outer_d+10, 0, 0,]) nut (); +//cap (); +translate ([-(outer_d+10), 0, 0,]) gasket (); +} + +nuts (); + +module print_test () { + translate ([outer_d+thread_size+5, 0, thread_height]) rotate ([180, 0, 0]) acorn_thread (outer_d = outer_d, internal=true); + translate ([0, 0, thread_height]) rotate ([180, 0, 0]) union () { + translate ([0, 0, 0]) cylinder (d=outer_d-wall_thickness, h=thread_height); + translate ([0, 0, -thread_height*3]) cylinder (d=outer_d/3, h=thread_height*3); + acorn_thread (outer_d = outer_d); + } + + +} -- 2.20.1