A fully parametric version of the Helmer tray. Adjust width, height, depth, even wall thickness to your liking. The code also supports adding multiple compartments.
Note: the preview can look a bit weird depending on settings. Use the final render (press F6) to check what the tray will actually look like.
Supports are required for the flanges on either end. I used the “0.30mm DRAFT” profile with variable layer height (0.4mm nozzle). You can also try a 0.6mm nozzle to reduce printing time.
With a flange width of 245 or less (see below for recommended values), the tray will fit on the bed of a Prusa Mk3, but some slicer settings have to be changed (select “Expert Mode” in PrusaSlicer to see all settings):
Ikea has sold (at least) 3 versions of the Helmer cabinets over time. These are:
| flange_width | The total width of the tray, including the flange at the top. See above for recommended values. |
| width | Outside width [x dimension] of the tray (without flange). The default value of 231 is a snug fit in Helmer types 2 & 3. The inside width for a single compartment is (width - 2*wall). |
| depth | Outside depth [y dimension] of the tray. The inside depth is (depth - 2*wall). |
| height | Outside height [z dimension] of the tray. The inside height is (height - floor_h). |
| wall | Vertical wall thickness. |
| floor_h | Floor height. |
| flange_h | Top flange height. This determines how far the tray will stick up above the walls of the drawer. |
| r | Outside radius of the four corners. |
| chamfer | Chamfer at the bottom of the tray. If chamfer is too big compared to r, the floor will become disconnected from the walls. It's a good idea to check the minimum wall thickness near the bottom after slicing. |
| compartments | A vector to define the compartment sizes. Set to [] for a single compartment. See examples below |
Set r=0 and chamfer=0 to get the rectangular shape of the original tray.
The compartments are set using a vector of compartment sizes, except for the last one (which takes up the remaining width). This means that to get a single compartment, the vector should be empty:
compartments = []; // single compartment
3 compartments measuring 50mm, 100mm and the remainder (the 3rd compartment's inside width will be width-50-100-4*wall):
compartments = [50, 100];
To get a number of equal-width compartments, use this example (adjust n=5 to the desired number of compartments):
n=5; compartments = [for(i=[0:n-2]) (width-(n+1)*wall)/n]; // n equal compartments
One compartment of half width and two compartments of quarter width:
compartments = [(width-4*wall)/2,(width-4*wall)/4]; // half + 2x quarter compartments
When generating the preview (press F5), the actual size of the compartments will be shown in the OpenSCAD console window, e.g. for the last example above:
ECHO: “Compartment sizes: [111.5, 55.75, 55.75] x 146 x 33”
The author remixed this model.
Re-created in OpenSCAD, added chamfers & fillets.