Skip to content
ak-trPublic

About

Programatically generate bins for drawer organisation aimed at use for 3D printing

Topics

Resources

Stars

20 stars

Watchers

1 watching

Forks

Repository files navigation

Bins (Procedural Bin Generator)

Bins is a 3D printable procedural bin generator where the user can provide width, depth and height parameters for a set of drawers and get a procedurally generated set of bins.

I was originally inspired to create this project when I saw the "dojo-recursive-bins" implementation leveraging Blender's Geometry Nodes. You can learn more about that here.

Demo

Live demo available at bins.akif.kr.

Usage

Currently there are 10 adjustable parameters that affect the generation of the bins. All values are in mm unless specified otherwise. Your settings are saved in your browser, so they are still there when you come back.

Red bins indicate bins that cannot be printed according to the X and Y dimensions of the print bed provided under "Printer Settings", either way round. Blue bins indicate bins that can be printed. This does not take into account the Z ability of your printer.

Print Beds

The print beds panel (left of the 3D view, above it on smaller screens) shows a top down view of how the bins could be laid out on your print bed. Bins are packed onto as few beds as possible, rotated where that helps, with a 5mm gap between them. Bins that are too big for the bed are listed underneath. Numbers match the index numbers on the generator.

Box Settings

Adjusting these values will affect the drawer only.

  • Width - Width of the drawer.
  • Height - Height of the drawer.
  • Depth - Depth of the drawer.

Bin Settings

Adjusting these values will affect the generated bins inside the drawer.

  • Radius - Corner radius of each box.
  • Thickness - Wall thickness of each box. Bottom layer thickness is fixed to 5mm.
  • Width Division - Value between 0 and 1 used to calculate how to allocate space to the boxes in the X dimension.
  • Depth Division - Value between 0 and 1 used to calculate how to allocate space to the boxes in the Z dimension.
  • Outer Gap - Gap between all outer edges of the bins that meet with the inner drawer walls.
  • Inner Gap - Gap between walls on all bins which meet another bin.

Note

Iterations used to be controlled through bin settings but they have now moved to generation settings with the new addition of "Grid" generation type.

Generation Settings

Adjusting these settings will affect how the bins are generated

  • Generation type - this is currently a dropdown with values "Recursive" and "Grid".
    • Recursive - this is the default. It is the original method used to generate the bins.
    • Grid - this is the new method upon popular request. This will pull two new sliders, rows and columns for you to generate a grid-like set of bins.
Recursive Grid
image image
image image

Page Settings

These settings are quite self explanatory. They are there for disabling certain elements on the page. There is also a checkbox that you can enable which will export the bins as non hollow objects. This allows you to print them in vase mode if you would like that option. Refer to "Printing bins in vase mode".

Printer Settings

  • Printer Bed Size - X and Y size of your print bed, used for the colours and the print beds panel.

Printing

After clicking "Export Bins", a .zip file will be downloaded onto your device. This zip file will contain each bin that you have generated.

Bins are named in the following format. Bin_[index]_[timestamp]. The index value is provided so you can visually see the bin and its corresponding location as this will map to the numbers as seen on the generator.

Printing bins in vase mode (Recommended option)

If you would like to print your bins in vase mode, simply check the "Export as 'Vase Mode' object" option under page settings. This will prepare the .obj files differently so you can print them in vase mode. I recommend this as it reduces filament usage drastically. Remember though, this will completely disregard the thickness parameters specified in the bin settings as the thickness of the walls will be determined by your wall thickness settings in your slicer.

Once you have these files, drag them into your slicer and enable vase mode. This will differ from slicer to slicer.

Note

If you are printing in vase mode with a standard 0.4mm nozzle (or any nozzle smaller than 0.8mm at standard wall thickness) or smaller, you are very likely going to experience major warping as the thin walled layers cool and contract quickly on top of each other. You are often able to comfortably print walls that are up to two times thicker than your nozzle diameter which for a 0.4mm nozzle can help drastically with the warping. I have found with my testing it is very usable with 0.8mm walls and using vase mode can reduce filament usage drastically. "3D Printing Nerd" has a really good video that you should watch regarding this.

Printing bins in normal mode

This is as simple as dragging the .obj file into your slicer and printing.

Your slicer might show or warn you about open edges, these should be automatically fixed by your slicer and will not affect the print.

Current Bugs/Known Issues

  • Generated .obj files have a large amount of open edges as warned by PrusaSlicer. Tested with Cura and PrusaSlicer and this doesn't affect its printability but can be quite annoying.
  • Cannot generate .stl files at all, they are very buggy using STLExporter. Currently not implemented, may look into it in the future. Currently .obj files work well enough to make this project work.

Stack

Development

pnpm install
pnpm dev

Notes

First time using React, feel free to criticise my code or provide advice on how to improve things.

Created by akif.kr

About

Programatically generate bins for drawer organisation aimed at use for 3D printing

Topics

Resources

Stars

20 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages