Skip to main content

A python library to make Gridfinity compatible objects with CadQuery.

Project description

Microfinity

PyPI python version CadQuery license

Gridfinity-compatible storage system with optional sub-grid sizing for more granular bin dimensions.

Microfinity extends the Gridfinity modular storage system with support for fractional grid units (0.25U and 0.5U increments), allowing you to create bins that better fit your specific items while remaining fully compatible with standard Gridfinity baseplates and bins.

Microfinity Hero

Key Features

  • 100% Gridfinity Compatible - All bins work on standard Gridfinity baseplates
  • Fractional Sizing - Create bins in 0.25U (10.5mm) or 0.5U (21mm) increments
  • Automatic Drawer Layouts - Generate optimally-segmented baseplates for any drawer size
  • Multi-Piece Baseplates - Connection clips join pieces that exceed your build plate
  • Parametric Design - Full control over holes, scoops, labels, dividers, drawer pulls, weighted bases, and more
  • Multiple Export Formats - STEP, STL, and SVG output

Installation

Option 1: PyPI (Recommended)

pip install microfinity

Option 2: Docker (No Python/CadQuery Required)

Run microfinity without installing Python dependencies:

# Pull the latest image
docker pull ghcr.io/nullstack65/microfinity:latest

# Generate a box
docker run --rm -v $(pwd):/workspace ghcr.io/nullstack65/microfinity:latest \
  box 2 3 5 -o /workspace/box.stl

# Or use the Makefile
make docker-run ARGS="box 2 3 5 -o output.stl"

Available tags:

  • latest - Latest stable release
  • v2.0.0 - Specific version
  • main - Development build

See Docker documentation for detailed usage including CI/CD integration.

Option 3: From Source

git clone https://github.com/nullstack65/microfinity.git
cd microfinity
pip install -e .

Dependencies

Quick Start

Create a Standard Box

from microfinity import GridfinityBox

# 2x3x4 box with magnets, scoops, and labels
box = GridfinityBox(2, 3, 4, holes=True, scoops=True, labels=True)
box.save_stl_file()  # Saves: gf_box_2x3x4_holes_scoops_labels.stl

Create a Fractional Box

from microfinity import GridfinityBox

# 1.25U x 0.5U x 3U box - fits in tighter spaces
box = GridfinityBox(1.25, 0.5, 3, micro_divisions=4)
box.save_stl_file()  # Saves: gf_box_1.25x0.50x3_micro4.stl

Create a Baseplate

from microfinity import GridfinityBaseplate

# 4x3 baseplate with corner mounting screws
baseplate = GridfinityBaseplate(4, 3, corner_screws=True)
baseplate.save_stl_file()

Generate a Drawer Layout

from microfinity import GridfinityBaseplateLayout

# Automatically segment a drawer into printable pieces
layout = GridfinityBaseplateLayout(
    drawer_x_mm=450,
    drawer_y_mm=380,
    build_plate_x_mm=220,
    build_plate_y_mm=220,
)

layout.print_summary()  # Shows piece breakdown
layout.export_all("./drawer_plates", file_format="stl")

CLI Commands

Generate models directly from the command line:

# Standard 2x3x5 box with magnet holes
microfinity box 2 3 5 -m -f stl

# Fractional 1.25x2x3 box (quarter-grid)
microfinity box 1.25 2 3 -f stl

# 6x4 baseplate with corner screws
microfinity baseplate 6 4 -s -f stl

# Generate drawer layout
microfinity layout 450 380 -b 220 220 -o ./drawer -f stl

# Generate calibration test prints
microfinity calibrate -o ./calibration -f stl

# Show system info
microfinity info

# Drawer-style box with finger pull
microfinity box 2 3 4 --drawer -f stl

# Drawer with slot-style pull and labels
microfinity box 2 3 4 --drawer --finger-pull-style slot -l -f stl

# Stackable-only box (flat bottom, no feet)
microfinity box 2 2 3 --stackable -f stl

# Weighted base box (thicker floor for stability)
microfinity box 2 2 3 --weighted -f stl

The Microgrid System

Standard Gridfinity uses a 42mm grid (1U). Microfinity adds support for smaller increments:

micro_divisions Pitch Increment Use Case
1 42.0mm 1U Standard Gridfinity
2 21.0mm 0.5U Half-grid sizing
4 10.5mm 0.25U Quarter-grid sizing

Fractional bins use smaller "micro-feet" that still index properly on standard baseplates:

Standard 1U bin:          Fractional 0.5U bin:
┌────────────────┐        ┌───────┐
│                │        │       │
│   Single 42mm  │        │ 21mm  │
│      foot      │        │ foot  │
│                │        │       │
└────────────────┘        └───────┘

See The Microgrid System for details.

Documentation

Examples

See the examples/ directory for complete scripts:

  • basic_box.py - Simple box with common features
  • fractional_bins.py - Various fractional sizes
  • drawer_layout.py - Complete drawer layout workflow
  • custom_baseplate.py - Baseplate with specific options
  • batch_export.py - Generate families of parts

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines on:

  • Setting up your development environment
  • Code style and formatting
  • Submitting pull requests
  • Reporting issues

Credits

Microfinity is a fork of cq-gridfinity by Michael Gale. The Gridfinity system was created by Zack Freedman.

Built with:

License

MIT License - See LICENSE for details.

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

microfinity-2.2.0.tar.gz (229.9 kB view details)

Uploaded Source

Built Distribution

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

microfinity-2.2.0-py3-none-any.whl (259.4 kB view details)

Uploaded Python 3

File details

Details for the file microfinity-2.2.0.tar.gz.

File metadata

  • Download URL: microfinity-2.2.0.tar.gz
  • Upload date:
  • Size: 229.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for microfinity-2.2.0.tar.gz
Algorithm Hash digest
SHA256 0353aea7333765c552a569de58620178eec915c214001f1c1a2e5acf241eb90c
MD5 ec59b58d642830d8fe1f521ae9618f42
BLAKE2b-256 d03c5a25e8e1c9f9a0129827003a7bf1e8d95f11396abee8776d31a064c5a2d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for microfinity-2.2.0.tar.gz:

Publisher: release-please.yml on nullStack65/microfinity

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file microfinity-2.2.0-py3-none-any.whl.

File metadata

  • Download URL: microfinity-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 259.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for microfinity-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 560fe7cba75230a6e6e1df1d9332f09a2348d9a6717d0847b887c6c0abd6f4e6
MD5 0fd86bfebde14de17cb6a2d7c2918217
BLAKE2b-256 32b370ef6c069f333bb2df826f8a2f85f789e3861135a239ff118322e88c1826

See more details on using hashes here.

Provenance

The following attestation bundles were made for microfinity-2.2.0-py3-none-any.whl:

Publisher: release-please.yml on nullStack65/microfinity

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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