From: Clinton Ebadi Date: Sat, 1 Dec 2018 00:02:30 +0000 (-0500) Subject: etc: some simple canister i made a while ago X-Git-Url: http://git.hcoop.net/clinton/3d-models.git/commitdiff_plain/acf52db58e2cbf2eb0ca58f595e1da3786265dbb?hp=a8b3811abc4c5231e8e58676f30533266aebedb9 etc: some simple canister i made a while ago works ok in semiflex, top pops on and off. --- diff --git a/etc/canister.scad b/etc/canister.scad new file mode 100644 index 0000000..7578dbc --- /dev/null +++ b/etc/canister.scad @@ -0,0 +1,107 @@ +// super simple canister +// 2018 Clinton Ebadi + +inner_d = 20; +inner_h = 20; +cap_inner_h = 12; +cap_overlap = 10; +cap_tolerance = 0.5; + +wall = 2; +base = 1; +sides = 6; + + +// calculated +outer_d = inner_d + wall*2; +outer_h = inner_h + wall - cap_inner_h + cap_overlap; + +cap_outer_d = outer_d + wall*2; +cap_outer_h = cap_inner_h + base; + +cap_bump_size = wall/2; +cap_bump_h = cap_bump_size * 2; +cap_bump_offset = cap_bump_h + 2; + +echo (cap_bump_offset); + + +// other asserts, if I care enough... +assert (cap_inner_h > cap_overlap); +assert (cap_outer_h - cap_bump_offset > base); + + +//$fa = 0.1; +//$fs = 0.1; + +canister_base (); +translate ([cap_outer_d + 1, 0, 0,]) canister_cap (); + +//cap_bump (); + +// inner +/* module cap_bump () { */ +/* $fn = sides; */ +/* cap_bump_d = outer_d+cap_bump_size*2; */ + +/* difference () { */ +/* circle (d=cap_bump_d); */ +/* circle (d=outer_d); */ +/* } */ + +/* /\* difference () { *\/ */ +/* /\* cylinder (h=cap_bump_h, d=cap_bump_d, center=true); *\/ */ +/* /\* cylinder (h=cap_bump_h+1, d=outer_d, center=true); *\/ */ +/* /\* } *\/ */ + +/* /\* rotate_extrude () *\/ */ +/* /\* union () { *\/ */ +/* /\* translate ([cap_bump_d/2, 0, 0]) *\/ */ +/* /\* rotate ([0, 180, 0]) circle (cap_bump_size, $fn=3); *\/ */ +/* /\* } *\/ */ +/* } */ + +module cap_bump () { + cap_bump_d = outer_d+cap_bump_size/2; + hull () { + translate ([0, 0, 0]) + cylinder (d = cap_bump_d, h = cap_bump_h/3, $fn = sides); + translate ([0, 0, cap_bump_h/3]) + cylinder (d = cap_bump_d + cap_bump_size, h = cap_bump_h/3, $fn = sides); + translate ([0, 0, cap_bump_h/3*2]) + cylinder (d = cap_bump_d, h = cap_bump_h/3, $fn = sides); + } + /* cylinder (d = cap_bump_d + cap_bump_size, h = cap_bump_h, $fn = sides); */ + /* translate ([0, 0, -cap_bump_h]) cylinder (d = inner_d, h = cap_bump_h*2+0.1, $fn = sides); */ + /* } */ + /* sphere_d = (cap_bump_h+0.1); */ + /* translate ([cap_bump_d/2-cap_bump_size, 0, cap_bump_h/2]) sphere (d = sphere_d); */ + /* } */ + + /* minkowski () { */ + /* cylinder (d = outer_d, h = cap_bump_size*2, $fn = sides); */ + /* sphere (d = cap_bump_size); */ + /* } */ + /* rotate_extrude () { */ + /* translate ([inner_d/2, 0, 0]) circle (cap_bump_size); */ + /* } */ +} + +module canister_base () { + difference () { + union () { + cylinder (d = outer_d, h = outer_h, $fn = sides); + translate ([0, 0, outer_h - cap_overlap + cap_bump_offset]) cap_bump (); + } + translate ([0, 0, base]) cylinder (d = inner_d, h = outer_h + 1, $fn = sides); + } +} + +module canister_cap () { + tolerance_pct = 1.05; + difference () { + cylinder (d = cap_outer_d, h = cap_outer_h, $fn = sides); + translate ([0, 0, base]) cylinder (d = outer_d + cap_tolerance, h = cap_outer_h+1, $fn = sides); + translate ([0, 0, cap_outer_h - cap_bump_offset]) scale ([tolerance_pct, tolerance_pct, tolerance_pct]) cap_bump (); + } +}