I could not find a fully parametric Gridfinity model in Fusion360 that met all of my criteria, so I built one from scratch:
- Easy to use and understand.
- The variables are named sensible things and have instructions on how to set them.
- Changing variables does not cause errors and warnings in the file.
- 100% Gridfinity.xyz specification compliant.
- Fully customizable so you can use it as a base to make custom containers.
- Stretch Goal: Fast printing with as little filament use as possible.
I have spent a lot of time working on this, perfecting it, making sure each build step was in the exact right order so that you can freely change variables without getting tons of warnings and errors in the timeline. I will document below exactly what you can change and what values you can use.
See the pictures for a very quick overview of what you can change.
Also, this work is licensed under the creative commons commercial license - you can use it how ever you want, even commercially.
What can I make with this?
- See the pics for some ideas.
- A basic box/container with or without a label shelf or scoop. (42 minutes to print and 14g of filament)
- A ‘lightweight’ box/container. (35 minutes to print and 4g of filament) That is not a typo.
- A ‘super strong’ box/container. (45 minutes to print and 22g of filament)
- A large container with dividers.
- A 100% custom container for something.
- An extra large gridfinity display piece for fun.
- See the ‘suggestion variable combinations’ below for more details.
What can you customize:
- Height
- Width
- Depth
- If you want to use magnets or not, and the size of your magnets.
- If you want to use screws or not, and the size of your screws.
- The layer height you plan to print with.
- The line width you plan to print with.
- If you want to hollow out the container or not. (To use as a base to design something custom.)
- If you have a stacking lip or not, and if it has a fillet.
- If you have a scoop or not.
- If the bases are not hollow. (To speed up printing.)
- If you have a shelf or not and its position and length.
- And you can suppress unneeded bases. (To speed up printing.)
What you can't customize:
- Um? Well, it's a Fusion360 file, so…. I guess you ‘have’ to use Fusion360? lol. That's about it.
What you can customize at your own risk:
- This model is FULLY parametric. That means there are a LOT of variables. They are named in a way that should be fairly logical and make sense. You can customize everything from the gridfinity unit size to the tolerances for printing, fillets, diameters, etc, etc. Have Fun!
How do I use this?
- Download the f3d file to your computer.
- Open Fusion360 and click File > Open.
- Click ‘Open From My Computer’ and browse to where you downloaded the file.
- Select the file and click Open.
- From here you'll see the model using all of the default values.
- Under Modify, click Change Parameters.
- From here you can change any of the blue starred Favorites. See the comments for details.
- To change something, click on the value in the Expression column. You can now type either a number, or the name of a variable.
- When you are done changing values (see below for details on each and what they do), click Ok.
- Save your changes by going to File > Save.
- When you are ready to print your custom gridfinity container, right click on the top element in the Tree (it will either say ‘(Unsaved)’ or the name of your file), and select Save As Mesh.
- From the popup, select Format 3MF, Structure One File, Refinement High, and then click Ok.
- The new file is saved to your computer. You can now import this into your favorite slicer and print it with whatever print setting you want.
Print Settings:
- This is a standard gridfinity model, thus almost any print settings will work.
- When I want to print a container as fast as possible, I use 1 wall, 1 bottom layer, 1 top layer, and 15% grid infill, and I print it in PLA.
- When I want to print a container that will be strong, I use 3 walls, 3 bottom layers, 3 top layers, and 15% grid infill, and I print it in ABS.
- Tip:
- If you want to save filament, change ‘Hollow_Base’ to ‘Yes’.
- If you want to print fast, change ‘Hollow_Base’ to ‘No’. (See note below about this value.)
Explanation of the parameters:
Here is an explanation of what each parameter does along with minimum and maximum values, and some notes.
- Height
- This is in gridfinity units. Typical values are in multiples of 6. The ‘total’ height would be this value * 7. To get a specific height: Height you want / 7 rounded up to nearest whole value. Example: If you want an 80mm tall box you would do: 80 / 7 = 11.42… rounded up = 12.
- Default: 6
- Min: 1 (anything below 5 will cause errors on the timeline)
- Max: The max height of your printer.
- Width
- This is the number of units wide you want your container in gridfinity squares. The ‘total’ width would be this value * 42. To get a specific width: Width you want / 42 rounded up to nearest whole value. Example: If you want a 50mm wide box you would do: 50 / 42 = 1.19.. rounded up = 2.
- Default: 3
- Min: 1
- Max: The max width of your printer.
- Depth
- This is the number of units deep your want your container in gridfinity squares. The ‘total’ depth would be this value * 42. To get a specific depth: Depth you want / 42 rounded up to nearest whole value. Example: If you want a 200mm deep box you would do: 200 / 42 = 4.76.. rounded up = 5.
- Default: 2
- Min: 1
- Max: The max width of your printer.
- Magnet_Yes_No
- If you want to include magnet holes in the container bases.
- Default: No
- Min: No
- Max: Yes
- Magnet_Diameter
- The diameter of your magnets. The default value is usually right.
- Default: 6.5mm
- Min: 1
- Max: 8ish
- Magnet_Thickness
- The thickness of your magnets. The default value is usually right.
- Default: 2.5mm
- Min: 1
- Max: 4ish
- Screw_Yes_No
- If you want to include screw holes in the container bases.
- Default: No
- Min: No
- Max: Yes
- Screw_Diameter
- The diameter of your screws. The default value is usually right.
- Default: 3
- Min: 1
- Max: 5ish
- Layer_Height
- This is the layer height you are going to print your model with. This number is used internally when calculating various things. You probably don't need to change this, even if you aren't printing with a .2mm layer height.
- Default: 0.2mm
- Min: 0.1
- Max: 1
- Line_Width
- This is the line width you are going to print with. This number is used internally when calculating the wall thickness. You probably don't need to change this, even if you aren't printing with a .4mm line width.
- Default: 0.4mm
- Min: 0.1
- Max: 1ish
- Suppress_Unneeded_Bases
- This is a nifty feature I added which could potentially save you a bunch of print time. If you are printing a container which is bigger than 2x2 you will have bases that technically aren't needed. The four corner bases will keep your container in place. You can set this to ‘Yes' and the inside bases will be disabled. The only problem with this is that the bottom of the container would then need to have support material added (or some other way to support it) while it prints. See below for some suggestions on using this.
- Default: No
- Min: No
- Max: Yes
- Hollow_Container
- This hollows out the container, or leaves it filled in. You can use this variable if you're going to design a custom container for something. Or, if you set ‘Hollow_Base’ to ‘Yes’ and this to ‘No’ it will have the effect of creating internal dividers. However, be sure to also set ‘Suppress_Unneeded_Bases’ to ‘No’, unless you want some interesting results.
- Default: Yes
- Min: No
- Max: Yes
- Stacking_Lip_Fillet_Yes_No
- The stacking lip can have a sharp edge. Setting this to ‘Yes’ will add a fillet to the stacking lip edge so it isn't so sharp.
- Default: Yes
- Min: No
- Max: Yes
- Scoop_Yes_No
- If you want a scoop added to your container or not. Setting this to ‘Yes’ and setting Hollow_Container to ‘No’ makes no sense, but wont cause any problems. Setting this to ‘Yes’ and ‘Hollow_Base’ to ‘Yes’ will leave an overhang that will require support material and probably isn't what you want. If you want to change the scoop size, you can adjust the ‘_length_scoop’ variable.
- Default: No
- Min: No
- Max: Yes
- Hollow_Base
- To save filament, set this to ‘Yes’. To save print time, set this to ‘No’. Please note: Setting this to ‘No’ will cause a warning to appear in the timeline. You can ignore this warning. (If you happen to know how to fix this, let me know!)
- Default: Yes
- Min: No
- Max: Yes
- Shelf_Yes_No
- If you want a label shelf or not.
- Default: Yes
- Min: No
- Max: Yes
- Shelf_Width
- The width of the label shelf. Note that this has no effect if the ‘Width’ is less than 2. (In that case, the label will be the width of the container.)
- Default: 50
- Min: 10ish
- Max: Less than the total width of your container.
- Shelf_Placement
- Where you want the shelf. You can have it on the ‘Left’, the ‘Center’, or the ‘Right’.
- Default: Right
- Min: Left
- Max: Right
- Wall_Thickness_In_Perimeters
- This is how thick the walls are. This is multiplied by your line width to determine the thickness of the walls (and floor). So, if you wanted 1mm thick walls and you are using a 0.4mm line width, you would set this to 2.5.
- Default: 2
- Min: 0.1
- Max: 19.9ish
Additional Tips:
- If you do not want the stacking lip, do the following:
- In the tree, expand the ‘Container’ component'.
- Then click the ‘eye’ icon next to the ‘Stacking Lip’ component.
- Save your file as a mesh as usual.
- If you are making a custom container and need to print test pieces to make sure you have your measurements right, do the following to save print time and filament:
- In the tree, expand the ‘Container’ component.
- Then click the ‘eye’ icon next to the ‘Stacking Lip’ component and the ‘Base’ component.
- This will leave just the ‘Walls’ component visible. This is the part you'd be customizing, so no need to waste filament and time printing the other parts.
- Save your file as a mesh as usual and import it into your slicer.
- In your slicer, drag the model into the build place until just the parts you need to test are showing.
- If you want to have dividers in your container for each of the grid squares, do the following:
- Set ‘Hollow_Container’ to ‘No’.
- Set ‘Hollow_Base’ to ‘Yes’.
- This will ‘trick’ the model into extruding each grid square such that each one has a wall between it and the next one.
- If you are printing a large container (bigger than 2x2), you can disable the unneeded bases by doing the following:
- Set ‘Suppress_Unneeded_Bases’ to ‘Yes’. Then do one of the following:
- Glue or Screw your bases to your container:
- In the Tree, expand the ‘Container’ component.
- Then click the ‘eye’ icon next to the ‘Base’ component.
- Save your file as a mesh as usual.
- Print your container without any bases.
- In the Tree, click the ‘eye’ icon next to the ‘Base’ component to un-hide it.
- Then click the ‘eye’ icon next to the ‘Walls’ component to hide it.
- Save your file as a mesh as usual.
- Print your four bases.
- Glue or screw your bases to your container.
- Print using supports.
- Save your file as a mesh as usual without hiding any of the components.
- When slicing your model, use a support type like ‘tree slim' or ‘normal’ with support painting. Considering this is the bottom of the container, you can probably get away with it not looking very good.
- In the Tree under the Analysis section, there are three named section views you can use to inspect the model: Side View, Front View, and Top View.
- Most of the sketches are named so you can see how the model is built if you care to look.
- Under the Container component, each main part of the container (the Base, the Walls, and the Stacking Lip) is it's own sub component that can be enabled or disabled independently.
- If you click the ‘Home’ icon (when hovering over the view cube in the upper right corner), the model will be rotated so that you are looking at the front left corner of it. Thus, from the left to the right is the Width, and from the right to the left is the Depth. (This means that the view cube's ‘Right’ view is the Front of the model, and the ‘Front’ view is the Left of the model. I'll try to re-orient this in a future update.)
Suggested Variable Combinations:
If you want to know how to set the variables to just make ‘a thing', just do the following:
- An empty container/box for small parts
- Height to however many ‘normal’ units you want.
- ex: 6 for a 1 unit tall box
- Width to however many grid squares you want.
- Depth to however many grid squares you want.
- Hollow_Base to No
- Scoop_Yes_No to Yes
- Leave everything else at the defaults.
- An empty container/box with dividers
- Height, same as above.
- Width and Depth, same as above but greater than 1.
- Hollow_Container to No
- Shelf_Yes_No to No
- Leave everything else at the defaults.
- A custom container (for a tool or something)
- Height to however tall your tool is divided by 7 and rounded up
- ex: 80mm tall tool / 7 = 11.42.. rounded up = 12.
- Set in multiples of 6 if you want to be able to stack things on top and stay within the ‘normal’ sizes.
- Width to however wide your tool is divided by 42 and rounder up
- ex: 50mm wide tool / 42 = 1.19.. rounded up = 2.
- Depth to however deep your tool is divided by 42 and rounded up
- ex: 200mm deep tool / 42 = 4.76.. rounded up = 5.
- Hollow_Container to No
- Hollow_Base to No
- Leave everything else at the defaults.
- A double sized version of a gridfinity box for fun
- Height, Width, and Depth to whatever you want.
- _unit_gridfinity to 14.
- This doubles everything. You may get some errors in the timeline since this isn't really a ‘supported’ thing to do. But it's fun anyway.
A note:
I am a 3d modeling novice. I have a lot of software development experience (you'll see some conditionals in the variables if you care to look), but my Fusion360 skills are pretty new. I am positive I've not done things perfectly. I know there are some areas that could be improved. If you find something wrong, or something breaks if you change one of the variables and you know how to fix it, please let me know. I will happily fix the file and upload a new version.