Skip to content

Gridfinity-compatible baseplate generator with puzzle connectors

License

Notifications You must be signed in to change notification settings

yawkat/GridFlock

Repository files navigation

GridFlock

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.

Whole plate

Closeup

Connectors

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.

Intersection Puzzle

Interactive example

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.

Intersection puzzle

Connector Fit

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):

Intersection puzzle (tight)

Loose fit example (intersection_puzzle_fit=0):

Intersection puzzle (loose)

You can find small grids with different fit values to calibrate on printables.

Edge Puzzle

Interactive example

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.

Edge puzzle

Connector Height

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.

Edge puzzle connector with full height

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.

Edge puzzle connector with full height leading to unconnected part

Connector Count

The connector count can be configured using the edge_puzzle_count property.

Multiple edge puzzle connectors

Magnets

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.

No Magnets

It is possible to disable magnets altogether to save filament and vertical space.

No Magnets

Press-Fit magnets

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!).

Press-fit magnets

On the bottom side of the plate there is a slot so you can push out any inserted magnet with a screwdriver.

Press-fit magnets from below

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.

Jig

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.

Jig parts

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:

The jig with a circle around the reference magnet slot

Next, push the reference magnet into the jig until it is fully seated. Here you can see it halfway:

Reference magnet inserted half-way

Now, place the jig on top of the pusher to finish assembly:

Assembled jig

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:

Baseplate on top of the jig

Now you can use the pusher to insert the magnet into the baseplate:

Baseplate on top of the jig with magnet pushed in

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.

Glued magnets

Magnets can also be glued in from the top.

Glued magnets

The magnet_bottom option is identical to the press-fit version, but the magnet_top option is ignored.

Rounded corner frame

By default, the vertical space for the magnet is not fully filled in to save filament. This is called the "rounded corner" frame style.

Press-fit magnets

Solid frame

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.

Solid magnet frame

Half-sized cells

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.

Half cell

You can turn off this behavior with the do_half_x and do_half_y options.

Half cell, x only

Corner radius

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.

Corner radius

You can configure the radius with the plate_corner_radius property, e.g. 1mm:

Corner radius 1mm

Alignment

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):

Center alignment

A lower value will shift the grid to the west/south direction:

West alignment

A higher value will shift the grid to the east/north direction:

East alignment

The plate size remains unchanged.

Custom cell size

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.

Custom cell configuration

Solid base

For added stability, you can add a solid base to the grid plate using the solid_base option.

Thumb screw with solid base

Bottom Chamfer

You can add a chamfer to the edge of the plate using the bottom_chamfer option.

Bottom chamfer

Top Chamfer

Similarly, you can add a top_chamfer option.

Top chamfer

Numbering

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.

Numbering from below

Squeezed number

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.

Squeezed numbering

Plate Wall

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.

Top plate wall

A top wall can be used to keep your bins from slipping off the plate.

Top wall

Bottom plate wall

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.

Bottom wall

Vertical Screws

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.

Vertical screws

Screw dimensions

The screw diameter can be configured with vertical_screw_diameter.

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.

Vertical screw countersunk

A similar option exists for a counterbore recess.

Vertical screw counterbore

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.

Vertical screw counterbore + countersunk

Screw locations

During the generation process, each intersection is classified into one of five categories. Each of these categories can have screws enabled separately.

Plate corners

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.

Vertical screws at plate corners

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.

Vertical screws at plate corners

Plate edges

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.

Vertical screws at plate edges

Segment corners

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.

Vertical screws at segment corners

Segment edges

Setting vertical_screw_segment_edges enables screws at segment edges. This can interfere with the intersection puzzle connector, so this combination is not recommended.

Vertical screws at segment edges

Other intersections

Any intersections that do not fall under the above criteria can be configured using the vertical_screw_other setting.

Vertical screws at other locations

Combined

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.

Vertical screws at most locations

Thumb Screw

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.

Thumb screw with solid magnet frame

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:

Thumb screw with solid base

Or you can use press-fit magnets with a solid base:

Thumb screw with solid base and press-fit magnets

For the last option, a longer screw design is required, for example the stackable screw design from Gridfinity Refined.

Edge Adjustment

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.

Default edge adjustment

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!

Shifting the grid

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.

Shifting the grid using edge adjustment

Adding empty space

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.

Adding padding using edge adjustment

Squeezing in extra cells

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.

Cutting the grid using edge adjustment

If you do this, you may of course have trouble fitting bins into the empty space.

Cell override

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.

Normal cell

A character c produces a normal cell. The override string is cccc:

Normal cell override

Solid

A character s produces a solid fill. The override string is cssc:

Solid cell override

Empty

A character s produces an empty cell. The override string is ceec:

Empty cell override

Irregular Shapes

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:

Base shape for the irregular plate

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:

Irregular plate with no cell override

With cell overrides, we can selectively fill some of the cells so that only the "full" cells remain.

Irregular plate with cell override

Building from source

The source file cannot be immediately opened in OpenScad. There is a dependency on Gridfinity Rebuilt, and some polygons are loaded from SVG files.

  1. Install just and uv
  2. Clone the repository
  3. Initialize the git submodules
  4. Run just paths to extract the puzzle connector paths from the SVG
  5. Now you can open gridflock.scad using OpenScad (development build required)

Why the name?

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".

About

Gridfinity-compatible baseplate generator with puzzle connectors

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •