The reliable Original Prusa MK4S is now available in discounted bundles with the MMU3 and Enclosure. Grab yours today!

Modular small parts organizer

The goal of this storage system was to have individually removable bins a size reasonable for small mechanical /…
In the contest Organization Tools
132
434
2
3932
updated December 28, 2022

Description

PDF

The goal of this storage system was to have

  • individually removable bins
  • a size reasonable for small mechanical / electronic parts (large enough for m3 screws, small enough that m2 nuts don't waste a lot of space)
  • a space efficient way to store multiple boxes
  • relatively fast / efficient printing options

File naming
There are 2 different base sizes available: 10mm x 10mm and 15 mm x 15 mm. These base sizes determine the sizes of the different insets.

I.e. for 10 mm x 10 mm the insets can be:

  • 10 mm x 10 mm
  • 10 mm x 20 mm
  • 10 mm x 30 mm
  • 20 mm x 20 mm
  • ...

Whereas for 15 mm x 15 mm it would be:

  • 15 mm x 15 mm
  • 15 mm x 30 mm
  • 15 mm x 45 mm
  • 30 mm x 30 mm
  • ...

All other measurements are based on these base sizes.
A shell of size-10x10-shell-6x4 will be roughly 60 mm x 40 mm big and fit for example 3 2x4 insets.

The racks have an additional parameter height which is the maximum height a shell can have and still fit into a slot and levels which is the number of shells that can fit into the rack.

Custom sizes
For custom heights you can cut off the top of the outer shell and the bins using the cut tool in PrusaSlicer. Don't just rescale them, since this will mess up the pattern on the bottom of the bins/shell, that aligns the bins in a grid if there are gaps.
The bins should be about 1.2mm less tall than the outer shell

You can also use the included openscad file to create your own custom sizes. The code is a bit messy (especially for the rack), but it should work for most reasonable settings.
This way you can also increase the resolution of the 3D models, Due to size constraints they had to be rendered a bit low.

Using this bash script you can auto generate all files included in this print from the openscad source.

!/usr/bin/env bash

set -eu

outputDir=${1:-"./out"}

declare -A names=(
[0]="inset"
[1]="shell"
[2]="lid"
[3]="rack"
)
sizes="10 15"
heights="15 30"

binary="openscad"
if command -v openscad-nightly &> /dev/null
then
echo "Found nightly build of openscad, using it instead"
binary="openscad-nightly"
fi
if ! command -v $binary &> /dev/null
then
echo "No openscad binary found"
exit
fi

function callOpenscad {
local baseSize=${1}
local height=${2}
local type=${3}
local length=${4}
local width=${5}
local levels=${6}

declare -a typeName=(${names[$type]})
local outputName="${typeName}-${length}x${width}-${levels}.stl"
local outputFolder="${outputDir}/size-${baseSize}"

if [ ${type} = 3 ]; then
local outputName="size-${baseSize}x${baseSize}-${typeName}-${length}x${width}-h${height}-${levels}-levels.stl"
else
local outputName="size-${baseSize}x${baseSize}-${typeName}-${length}x${width}.stl"
fi

mkdir -p ${outputFolder}
nice -n 15 $binary \
-D "invokedFromShell=1"\
-D "baseSize=${baseSize}"\
-D "height=${height}"\
-D "type=${type}"\
-D "length=${length}"\
-D "width=${width}"\
-D "levels=${levels}"\
-o "${outputFolder}/${outputName}" modularBoxes.scad
echo ""
sleep 1
}

function generateInset {
local baseSize=${1}
local height=${2}
local length=${3}
local width=${4}

callOpenscad "${baseSize}" "${height}" 0 "${length}" "${width}" 0
}

function generateOuterParts {
local baseSize=${1}
local height=${2}
local type=${3}
local levels=${4:-0}

callOpenscad "${baseSize}" "${height}" "${type}" "3" "3" "${levels}"
callOpenscad "${baseSize}" "${height}" "${type}" "4" "4" "${levels}"
callOpenscad "${baseSize}" "${height}" "${type}" "6" "4" "${levels}"
callOpenscad "${baseSize}" "${height}" "${type}" "6" "6" "${levels}"
callOpenscad "${baseSize}" "${height}" "${type}" "8" "6" "${levels}"
callOpenscad "${baseSize}" "${height}" "${type}" "8" "8" "${levels}"
callOpenscad "${baseSize}" "${height}" "${type}" "12" "8" "${levels}"
callOpenscad "${baseSize}" "${height}" "${type}" "12" "12" "${levels}"
callOpenscad "${baseSize}" "${height}" "${type}" "16" "8" "${levels}"
callOpenscad "${baseSize}" "${height}" "${type}" "16" "12" "${levels}"
callOpenscad "${baseSize}" "${height}" "${type}" "16" "16" "${levels}"
}

function generateInsets {
local baseSize=${1}
local height=${2}

generateInset "${baseSize}" "${height}" "1" "1"
generateInset "${baseSize}" "${height}" "1" "2"
generateInset "${baseSize}" "${height}" "1" "3"
generateInset "${baseSize}" "${height}" "1" "4"
generateInset "${baseSize}" "${height}" "2" "2"
generateInset "${baseSize}" "${height}" "2" "3"
generateInset "${baseSize}" "${height}" "2" "4"
generateInset "${baseSize}" "${height}" "3" "3"
generateInset "${baseSize}" "${height}" "3" "4"
generateInset "${baseSize}" "${height}" "4" "4"

}

function generateSet {
local baseSize=${1}

generateInsets "${baseSize}" "30"
generateOuterParts "${baseSize}" "30" 1
generateOuterParts "${baseSize}" "30" 2

for height in ${heights}
do
for i in 2 3 4
do
generateOuterParts "${baseSize}" "${height}" 3 "${i}"
done
done
}

for size in ${sizes}
do
generateSet "${size}"
done

Print instructions

The wall and bottom thickness are optimized for 0.2mm layer height and 0.45mm line width (default for the 0.4mm nozzle). 0.3 mm layer height should also work well.

Since the lid and the outer box have a 3 line wall thickness, it is recommended to the switch on the advanced option detect thin walls, this will speed up the printing process, and should result in a nicer finish.

If the lid is printed in a clear material (For example Colorfab XT or FormFutura HD Glass) it should be thin enough to make out some details through it.
A good way to group the bins is by adding a manual color change for the last few milimeters.

Since the lid is friction fitted, you might have to scale it a bit up or down, depending on your printer and the shrink factor of your material. These adjustments shouldn't be more than a militmeter, and shouldn't affect the print quality.

Tags



Model origin

The author marked this model as their own original creation.

License


Highlighted models from creator

View more