Skip to main content

Paul's Gridfinity Things

Project description

Paul's Gridfinity Things

This Python program will generate several different kinds of gridfinity compatible objects for 3D printing. Gridfinity is an open source storage system best introduced in this video and then this diagram. Look on thangs and printables for more compatible parts.

Setup, You can install with pipx.

sudo apt install pipx
pipx install gfthings

If you want to modify gfthings then build it with poetry.

sudo apt install pipx
pipx install poetry
poetry add ocp-vscode
poetry install

If you choose this option then you must prefix your commands with poetry run

Copyright (C) Paul Bone Distributed under: CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/

Bins

Bins are gridfinity bins. They are inspired by Pred's bins and include the same label shelf. They are easy to print (overhangs and bridges are minimised) and can be generated in a number of custom sizes with and without dividers. For more information see:

gfbin -h

Features

The bins have a label shelf, of course you could use a label maker and stick on a lable. Or 3D print a label with Nick's excellent gflabel program and choose pred style labels.

Maybe you can just tell what's in your bins and don't need a label. That's what the --no-label option is for!

Ooh, that bin has a dividor. To add dividors use the -d option. Giving a 2 will make 2 compartments (1 partition). The above bin was made with:

gfbin --no-label -d 2 -s 10

The -s is for scoop radius. A little scoop in the front of the bin will help you get small parts out. This one has a 10mm radius, the default is 12.5mm. Use -s 0 for no scoop at the front at all, eg if you want to store larger items.

If something you're storing is a tight fit try removing the stacking lip, and if it's still a tight fit, you can probably take 0.4mm off each wall:

gfbin --no-label -s 0 --no-lip --wall-thickness 0.8

What if you want to store chopsticks, but your chopsticks are longer than your printer bed. Print two bins with some of the walls removed (--half-wall) and place them next to each -other. The scope gives a convenient place to put your hand to pick up the chopsticks. Scoops and labels are not supported on half-wall bins.

gfbin -x 1 -y 4 --half-wall

Magnet holes

Bins are generated with Gridfinity Refined style magnet holes. These are press fit magnet holes that allow you to insert a magnet from the side.

Use the blade of a flat-head screwdriver to push the magnet in. No worries if you put it the wrong way around and need to take it out. You can get a thin pin or alen key into the gap on the bottom of the bin to push it back out.

By default this fits 6x2 magnets, but maybe you've got some 8x3 magnets left over from another project?

gfbin --magnet-dia 8 --magnet-height 3

Or maybe you don't want "gridfinity refined" style magnet holes. Try --unrefined.

Sizes

You can make bins of any size, units are specified in "gridfinity units", that's 42mm across and back-to-front. Up and down is 7mm per unit plus the base.

The two bins on top of this stack are generated with

gfbin -x 2 -y 2 -z 3 -d 6 -s 0
gfbin -x 1 -y 2 -z 4 -s 0

Whole numbers aren't flexible enough. Try .5 numbers. This bin is 1 unit wide, and 1.5 deep. This works provided its base profile can be half the size, it is generated with:

gfbin -x 1 -y 1.5 --half-grid

Of course you can use a half grid base with whole number bin sizes, but not the other way around. Also half-grids don't support magnet holes.

Checkout reminders for these options and more with

gfbin -h

Funky bins

I had a tool that has an L shape, storing it in a rectangle bin would be a waste. So I created funky bins. They're specified by providing a 2D list of bools that specify is that square is part of the bin or not.

gfbin --funky \
    "[[True, False], [[True, False], [True, False],[True, True]]" \
    -z 14

The minor lists must all have the same length, and generating bins in this way has a finer stacking lip than when the regular -x and -y arguments are used (currently a build123d limitation).

L-shaped bins are possibly the most useful, but there are many possibilities. Some "special" arguments for --funky refer to presets that may be fun, try:

gfbin --funky donut -z 4 -o donut.step

Maybe this would be a suitable box for coiled USB cables, then place a 1x1 bin in the centre for USB A-to-C adaptors.

The available presets are:

  • donut
  • cross
  • tetris_l
  • tetris_j
  • tetris_t
  • tetris_s
  • tetris_z

Now packing your storage away can really be like tetris. Just don't completely fill a row!

Bases

A minimal gridfinity base. This is a remix of https://www.printables.com/model/608500-gridfinity-base-light-magnetic-connectable-paramet with paramertised dimensions. Try:

gfbase -h
gfbase -x 4 -y 3 -o base.step

To connect bases made with gfbase use the clips found [https://www.printables.com/model/608500-gridfinity-base-light-magnetic-connectable-paramet/files](on the original model). Mulitple bases can be connected to fill the bottom of a drawer. For example this drawer has two 4x3 and two 4x4 bases connected. It also has some edge pieces (comming soon) that prevent the base from sliding around.

You can customise the screw holes, By default counterbored holes that can take a magnet, screw or pin (below) are generated. you can change the screw diameter, magnet diameter and magnet depth.

gfbase --magnet-diameter 6.1 \
       --screw-diameter 4 \
       --magnet-depth 2

By default there are two screw/magnet holes per square. But to save plastic or printing time generate a minimal baseplate with

--screw-hole-count 0

Other valid options are 2 and 4.

Finally there's a "screw hole pattern for drawers" option:

--screw-hole-pattern-drawer

This places exactly 4 screw holes in the corners but not-too-near the corners (clearance for my drill). Which is suitable if you need to mount the base but don't need to provide magnets or iron screws for magnets in the boxes.

If you don't need any screw holes then the base can be made shorter to save time, filament and height.

--short

Base Edges

I don't know about you but my drawers arn't multiples of 42mm and I don't want the bases sliding around in the drawers. So I've added another program that creates "edge spaces" to fill up room and stop be base from slopping around.

gfedge -x 4 -y 14 -o edge.step

Like before the -x parameter is in gridfinity units. But the -y parameter is not! It's in milimetres.

Short variations of the edges to match the short base can be made with the --short option

gfedge --short -x 4 -y 10 -o edge.step

Pins

Pins, or pegs, are a small object that can be used to attach a Gridfinity base to a sheet of plywood such as found in the bottom of many desk drawers. Run:

gfpin

To generate pin.step. Print it at a higher temperature if you can for strong layer adheasion. Pressing it through the gridfinity base and a 3mm driled hole can take some force. I don't know how easy it is to remove - the question hasn't come up!

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gfthings-0.8.0.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gfthings-0.8.0-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

Details for the file gfthings-0.8.0.tar.gz.

File metadata

  • Download URL: gfthings-0.8.0.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.2

File hashes

Hashes for gfthings-0.8.0.tar.gz
Algorithm Hash digest
SHA256 f5da7774ee06fc08cd898134e808e0f2b174ae0e624812ac11b5099c55b50ece
MD5 cf679585dbd553f8ecf5e7fbcb1a6e16
BLAKE2b-256 969dd5a5c783b996967bf73d163119bdb9699f159f80adf365ea038328085032

See more details on using hashes here.

File details

Details for the file gfthings-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: gfthings-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 23.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.2

File hashes

Hashes for gfthings-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 30a5913ceb8b10b18bcf7b6ac5a02db6aa0a6259277d794c47f8e7a9b3798930
MD5 00c334304fa12965ff85af7adadb9f6d
BLAKE2b-256 a59cf533a9ce7d821858c31bacd3ce2ff23927883f10371fd5f2a35ae931a427

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page