Customizable Lightweight Small Jar/bottle With Screw Cap 3D Printer Model

Author: @
License: CC BY
File formats: stl,json,scad
Download type: zip
Size:17.2MB

The file 'Customizable Lightweight Small Jar/bottle With Screw Cap 3D Printer Model' is (stl,json,scad) file type, size is 17.2MB.

Summary

I've been packing for a week-long hike and needed a container for lip balm and salt; I wanted ones that weight less than those small travel containers available in drug stores and that are sturdier than zip bags. So I reworked my previous design to a fully customizable version.
The containers did well; although the screw cap is not airtight, the lip balm did not leak despite melting due to the heat.

You may just print the sample .stl files, but I recommend you to load the .scad file in OpenSCAD and use the customizer interface to tune the model to your needs. The parameter sets that I used are in the .json file, in the format understood by OpenSCAD.

The main differences compared to similar models is that this container is highly customizable and uses less plastic (=less weight) for similar volumes.

──────────────────────────────────────

The design lets one customize the size of the item: the inner diameter at mouth of the container (iDia) and the inner height of the container (iH). If the diameter is large and the height is low, one gets a jar, if the height is on par or larger than the diameter, then one gets a bottle.

The bottom of the container can have a bigger diameter than the mouth by configuring bottomExtra parameter, and the cross-section of the bottom can be either round, or be waved to have a configurable number of sides (by adding a sine wave of specified amplitude radially). waveCnt and waveXY configure this.

One can also choose how large part the side wall is straight (looking from the bottom). The upper portion of the side wall converges smoothly to the diameter of the mouth. midHFrac, midRadiusFrac and upRadiusFrac configure this.

The cap is threaded; number of twists, number of threads and the height of the
threaded part is customizable. If one wants to, one can also change the polygon
that forms the cross-section of the thread; this however needs to be done in the
.scad file by hand, rather than in the customizer interface.

──────────────────────────────────────

Unless one changes the wall thickness, it's 1.2mm for vertical parts (wallXY) and 0.6mm
for horizontal parts(wallZ); I've used these dimensions for vertical parts since that
prints well as two perimeters with my 0.5mm nozzle and my XY size compensation
setting that I need to keep true to model dimensions. The 3 layers of 0.2mm
height form a sufficiently sturdy bottle/jar bottom and cap bottom. YMMV.

I printed my bottles and jars with clear PET-G, no supports, no brim/raft, with
0.5mm nozzle and 0.2mm layer.

Generic hints for printing:

  • there is no clearance between the cap and the container in the uploaded models; if your printer does not adhere to the dimensions, then tune XY size compensation in the slicer,
  • setting seam position to nearest helps eliminate stringing (that is be nasty to remove inside the container),
  • turning on avoiding crossing perimeters helps eliminate stringing and depositing little blobs of plastic on threads.

──────────────────────────────────────

One can also generate from the .scad file a model suitable for vase mode printing. To this end, turn on vase_mode and set wallXY to desired external perimeter extrusion width.

I added this just for fun; one should keep in mind that the vase mode might yield too thin walls to consider the container sturdy.

(Vase mode was added on 11.09.2023.)

──────────────────────────────────────

Generic hints for customizing:

  • ponder the image with parameter explanation; non-gray text is parameter names: (I used a spline for cross-section, normally the wave is regular and much smoother.),
  • waveCnt: most functional seem to be 0 (round), 1 (round with eccentric mouth), 2 (nutella-like shape), 4 (square), 6 for (hexagonal) and 8 (octagonal),
  • obviously you need non-zero waveXY to see any effect of waveCnt,
  • accuracy ($fn, fn2):
    • larger values significantly affect render time, but
    • larger $fn makes the result smoother, so one has to balance it,
    • setting $fn to a value that is not a multiple of waveCnt creates artefacts when the expression bottomExtra+sin(…)*waveXY crosses zero.
      to make the cap and the container be of the same width, set:
    • bottomExtra+waveXY equal to 2*(wallXY+threadXY), then the jar/bottle in the widest vertical cut is as wide as the cap,
    • bottomExtra-waveXY equal to 2*(wallXY+threadXY), then the jar/bottle in the narrowest vertical cut is as wide as the cap,
    • 2*(wallXY+threadXY) is equal to 3.9 by default.
  • I did not do the maths to calculate "optimal" waveXY; just test different values,
  • high midHFrac creates "straight" bottles, zero midHFrac creates fully rounded ones,
  • setting upRadiusFrac and midRadiusFrac:
    • to zero shapes the wall into a broken line;
    • when both sum up to 1, then there will be a vertical cross-section where the line between thread and middle will be just two arcs,
    • sometimes when both sum up to 1, the code yells that calculated radii won't fit; this is due to numerical inaccuracies; then, set them so that they sum up to 0.99 instead.
  • nice thread twist values are between 0.5 and 0.75; too many twists make opening the cap annoying,
  • sparse threads work better when your printer has trouble in clean printing,
  • when you make a jar for a cream/balm, keep in mind that:
    • you might need to close it with slippery hands; polygonal shape helps with it,
    • you need to reach it with fingers; don't set too high bottomExtra/waveXY parameters.

Warning: there is little fool-proofing of the customizable parameters: if you
input ones that are not sane, you might end up with invalid, non-printable of
ill-functional container. It's pretty evident when something goes bad.

──────────────────────────────────────

Edit (2023.09.12): I added bogus 1e-10 translates and 1e-3 rotates in the .scad file here and there to generate cleaner models - previous .scad file generated some zero-width and zero-height chunks that did not affect print result, but caused prusa-slicer to see extra parts and report some model problems in vase mode. Additionally, I uploaded two rendered models of a bigger jars to be printed in vase mode (1mm extrusion).

──────────────────────────────────────

Edit (2023.09.26): List of changes:

  • a parameter clearance has been added; it adds some clearance between the cap and the jar/bottle
  • threadExtraH has been moved up in the file so that it got available in the customizer
  • a couple of new models have been added,
  • .scad outputs now the resulting outer dimensions.
bottle_05ml_round.stl 1.6MB
bottle_10ml_eccentric.stl 874.2KB
bottle_10ml_square.stl 1.8MB
bottle_15ml_flat.stl 1.6MB
bottle_20ml_octagonal.stl 2.1MB
bottle_25ml_heptagonal.stl 5.0MB
bottle_25ml_triangular.stl 2.4MB
jar_09ml_hexagonal.stl 1.4MB
jar_12ml_hexagonal.stl 2.0MB
jar_20ml_octagonal.stl 1.7MB
krembox.json 10.5KB
krembox.scad 15.6KB
vase_mode_0.7mm_extrusion__bottle_10ml_square.stl 1.9MB
vase_mode_0.8mm_extrusion__bottle_50ml_square.stl 2.7MB
vase_mode_0.8mm_extrusion__bottle_50ml_square_v2.stl 2.5MB
vase_mode_0.8mm_extrusion__volumetric_bottle_25ml.stl 2.9MB
vase_mode_1.0mm_extrusion__bottle_150ml_octagonal.stl 7.1MB
vase_mode_1.0mm_extrusion__bottle_75ml_octagonal.stl 5.5MB