A gridfinity-compatible baseplate generator for small printer beds. Cuts the base plate into pieces that fit the printer bed and can be linked together using puzzle-style locking connectors.
An online generator for the latest version version of GridFlock is available here. You can also use the perplexinglabs generator which is a bit more stable. Please also support the model page on Printables.
Similar projects include GridPlates (DMCA'd) and GRIPS, but GridFlock is an independent, open-source, clean-room implementation. My goal is truly open community development. If you are missing a feature that is available in GridPlates or GRIPS, please create a GitHub ticket.
GridFlock uses Gridfinity Rebuilt (under MIT license) for the baseplate cutter.
For inserting magnets, check out the jig.
- GridFlock
When the plate size exceeds your printer's bed size, GridFlock will split the plate into multiple pieces called 'segments'. To connect these segments, multiple connector designs are available.
This mode adds small puzzle-style connectors at cell intersections. This is similar to GridPlates and GRIPS, and relatively easy to print. However, in my experience, these connectors can sometimes lead to gaps between the segments. The shape of these connectors is fixed in puzzle.svg and cannot be customized without editing the SVG.
The intersection puzzle connector is intentionally tight to produce a secure fit. It may be necessary to use a mallet or hammer to connect plates.
If the puzzle connector is too tight for your print settings, you can use the intersection_puzzle_fit parameter to produce a looser fit. A value of 0 produces the loosest fit, while 1 is the tightest. Try multiple settings and see which works best for you. Tight fit example (intersection_puzzle_fit=1):
Loose fit example (intersection_puzzle_fit=0):
You can find small grids with different fit values to calibrate on printables.
The edge puzzle mode uses larger connectors placed at the edges of cells, instead of intersections. This leads to a more accurate fit, but is a bit harder to print, and uses more filament.
This connector is a good alternative to the intersection puzzle if the plate has enough vertical height. Try both and see what works best for you. You can also technically enable both at the same time, though I don't know why you would.
- At a segment corner where female connectors are placed on both adjacent sides, the corner could be "cut off" from the rest of the segment. To avoid this, the connector does not use the full height. When not using magnets, this can make the connector quite flimsy.
- To avoid interference with the bin in the neighbouring cell, the male connector has a cutout identical to the bin in that cell. Again, if there is not enough vertical height (no magnets), this can make the male connector flimsy.
- To make the female connectors more sturdy and easier to print, an extra "bar" is added at the magnet level, on those edges where a female connector is placed (only if magnets are enabled). You can see it in the screenshot. With this bar, it may be viable to make the connector full-height and avoid the overhang.
- Unlike the intersection mode, the edge puzzle connectors are highly customizable for your circumstances.
The edge puzzle connector height can be configured using the edge_puzzle_height_female property. The male connector is smaller than this option by edge_puzzle_height_male_delta.
With default settings, the male side of the connector can only be pushed into the female side from below. If you increase the edge_puzzle_height_female to e.g. 10mm, it will use the full height, and the connector can be pushed from both sides.
The problem with the full-height connector is that it can lead to unconnected pieces if there is no magnet layer for support. You can see in the below example that the bottom left corner of the top right segment has no connection to the rest of the segment.
The connector count can be configured using the edge_puzzle_count property.
GridFlock supports the standard Gridfinity magnet layout. Note that magnets require additional vertical room.
Magnets are assumed to be round. The exact size can be configured with the magnet_diameter and magnet_height options.
It is possible to disable magnets altogether to save filament and vertical space.
Press-fit magnets require no glue. The magnets are simply pressed into the pockets from the side. A jig for easily inserting magnets is available on printables (thanks @nelsonjchen!).
On the bottom side of the plate there is a slot so you can push out any inserted magnet with a screwdriver.
The layers above and below the magnet can be configured using the magnet_top and magnet_bottom options.
Because the distance to the bin magnets is larger, press-fit magnets make for a weaker connection than glue-in magnets.
GridFlock includes a magnet insertion jig that makes pressing in magnets easy and fast (thanks @nelsonjchen!). You can download the jig on printables.
The jig prints in two pieces, a main frame and a pusher. The pusher needs to be printed with supports, and should have a high infill percentage.
First, insert the reference magnet. The reference magnet will make sure that any magnets you put into the plate will have the right orientation, and it helps with pulling the magnets into place. Make sure it has the right orientation – see the below instructions on how the jig is used to figure it out. Place the reference magnet in the circled slot:
Next, push the reference magnet into the jig until it is fully seated. Here you can see it halfway:
Now, place the jig on top of the pusher to finish assembly:
Now that the jig is assembled, you can start using it to populate your baseplate. Load a stack of magnets into the jig, and then place the baseplate upside down on the jig:
Now you can use the pusher to insert the magnet into the baseplate:
Pull the pusher back into its original position to release the baseplate. You can now turn the jig by 90° to insert the next magnet, and then move the baseplate to fill the next square with magnets.
Magnets can also be glued in from the top.
The magnet_bottom option is identical to the press-fit version, but the magnet_top option is ignored.
By default, the vertical space for the magnet is not fully filled in to save filament. This is called the "rounded corner" frame style.
Using the magnet_frame_style option, you can change the magnet layer to be fully filled in.
Warning
The solid frame style cannot be combined with the press-fit magnet style because there is no way to push the magnets in.
By default, if there isn't enough room for a full cell on the plate, GridFlock will attempt to fill up remaining space with half-sized cells.
You can turn off this behavior with the do_half_x and do_half_y options.
GridFlock generates plates with a corner radius of 4mm by default. This matches the Gridfinity corner radius, so when the plate size is a perfect multiple of 42, there is no gap.
You can configure the radius with the plate_corner_radius property, e.g. 1mm:
When the plate size is not a clean multiple of 42mm, the grid is centered by default. You can adjust this using the alignment option, which can be configured for each axis. A value of 0.5 will center the grid (the default):
A lower value will shift the grid to the west/south direction:
A higher value will shift the grid to the east/north direction:
The plate size remains unchanged.
GridFlock uses Gridfinity Rebuilt under the hood. Grid dimensions are not hard-coded, so in principle it is possible to use GridFlock with a custom cell size. This is not tested and not exposed in the online generator.
For added stability, you can add a solid base to the grid plate using the solid_base option.
You can add a chamfer to the edge of the plate using the bottom_chamfer option.
Similarly, you can add a top_chamfer option.
The number of each segment is embossed on the bottom of the segment to simplify assembly.
The depth of the embossing can be configured with number_depth. The size can be configured with number_size. The font can be configured with number_font.
In rare cases, GridFlock may produce a segment that is only one cell wide, which leaves less room for the embossing. In that case, the smaller number_squeeze_size is used.
The plate wall is an additional rim around the final plate. It can extend up and/or down. The thickness of the wall can be configured for each side using the plate_wall_thickness option.
A top wall can be used to keep your bins from slipping off the plate.
A bottom wall can be used to keep your grid from slipping off e.g. a table, without requiring glue or screws to fix the grid in place.
Tip
A bottom wall must be printed upside down. Use a brim to ensure bed adhesion. Magnets, solid base and other features may not be possible without supports.
Vertical screws are inserted at cell intersections. They can be used to screw down the plate. Screws can be placed at various positions depending on use case.
The screw diameter can be configured with vertical_screw_diameter.
GridFlock can also make space for countersunk screws. The dimensions of the countersunk head should be specified using vertical_screw_countersink_top. The first value of this vector is the diameter of the head, and the second value the height of the head until the screw shaft. The below example uses [6, 2.5], which are typical dimensions for an M3 countersunk screw.
A similar option exists for a counterbore recess.
If you combine the two options, the counterbore slot is placed above the countersink slot. You can use this to recess the countersunk head into the grid, to avoid interfering with the wider part of a bin.
During the generation process, each intersection is classified into one of five categories. Each of these categories can have screws enabled separately.
Setting vertical_screw_plate_corners enables screws at plate corners (not segment!). By default, the plate corner is at the intersection that is one cell away from the plate edge.
Using the vertical_screw_plate_corner_inset property (default 1,1), a different intersection can be selected as the plate corner. In the below example, the property has been set to [1,2], which selects the second intersection in the y direction as the plate corner, instead of the first.
Setting vertical_screw_plate_edges enables screws at plate edges. These edges often don't have room for a screw, but if there's padding, it might work.
Setting vertical_screw_segment_corners enables screws at segment corners. Similar to plate corners, the exact behavior can be configured using the vertical_screw_segment_corner_inset property.
Note
In the below example, some of the segment corners are also plate corners. vertical_screw_plate_corners is disabled, so those intersections do not get a screw hole. You can enable both properties if you want screw holes in all segment corners.
Setting vertical_screw_segment_edges enables screws at segment edges. This can interfere with the intersection puzzle connector, so this combination is not recommended.
Any intersections that do not fall under the above criteria can be configured using the vertical_screw_other setting.
Vertical screw locations can be combined as needed. A common combination would be vertical_screw_plate_corners, vertical_screw_segment_corners and vertical_screw_other, which only leaves the segment edges without screws.
Gridfinity Refined has a thumb screw design to screw bins securely into base plates. GridFlock can generate a compatible thumb screw hole with the thumbscrews option.
Note that in order to add a thumb screw hole, there must be something to cut the hole out of. In the above example, that is a solid frame magnet. Alternatively, you can also use a solid_base:
Or you can use press-fit magnets with a solid base:
For the last option, a longer screw design is required, for example the stackable screw design from Gridfinity Refined.
The basic GridFlock cell placement algorithm is simple: Fit as many cells into the configured plate_size, and evenly distribute any remaining space as padding along the edges.
In some cases, you may want to modify this behavior using the edge_adjust property. This property is added to the padding on each of the four sides after the cell placement calculation.
Note
Because the edge adjustment is added to the padding, it will add or remove from the final plate size!
Note
It is easier to use the alignment option for this.
You may want to move the generated grid so that it is not centered on the plate. In the below example, I've shifted the grid 5mm to the north and 10mm to the east using edge_adjust=[-5, -10, 5, 10] Note that the adjustment values for east and west / north and south even out so that the final plate size remains unchanged.
If you do not want to generate grid cells on the full grid, you can use the edge adjustment to add padding. Below, the plate_size is [42, 42], but edge_adjust=[50, 0, 0, 0] adds another 50mm space on the north side.
If your plate is slightly too large for where you want to put it, but you don't want to lose any grid cells, you can use edge adjustment to cut off a bit. In the below example, a plate size of 84x84 is combined with edge_adjust=[0, -2, 0, -2], cutting off 2mm on the east and west sides. The final plate is only 80mm wide.
If you do this, you may of course have trouble fitting bins into the empty space.
For really weird use cases, you can override the content of individual cells using the cell_override option. Due to openscad limitations, this option is a string. Each character corresponds to a particular override style. Cells are counted from west to east and then from south to north: For a 2x2 grid, the first character customizes the lower left (SW) cell, the second character the lower right (SE) cell, the third the upper left (NW) cell, and the last character the upper right (NE) cell.
A character c produces a normal cell. The override string is cccc:
A character s produces a solid fill. The override string is cssc:
A character s produces an empty cell. The override string is ceec:
The cell override feature can be used to create grids with irregular shapes. Let's say we want to create a plate with this shape:
One way to do this is to cut a rectangular base plate with this shape, e.g. in the slicer. But if we do this with a regular base plate, we get this result:
With cell overrides, we can selectively fill some of the cells so that only the "full" cells remain.
The source file cannot be immediately opened in OpenScad. There is a dependency on Gridfinity Rebuilt, and some polygons are loaded from SVG files.
- Install
justanduv - Clone the repository
- Initialize the git submodules
- Run
just pathsto extract the puzzle connector paths from the SVG - Now you can open
gridflock.scadusing OpenScad (development build required)
Since the segments lock together, I considered "GridLock", but that's not a googleable word. I added the F from "Gridfinity" to make the name unique. You can also consider the set of segments that this project generates a "flock".
























































