Gridfinity Skill
Design and print Gridfinity-compatible baseplates and bins using the gridfinity_extended_openscad library. Covers grid specifications, optimal print settings, anti-warp strategies, and tile splitting for large surfaces.
Grid Specification
| Parameter |
Value |
| Grid pitch |
42 × 42 mm |
| Height unit |
7 mm |
| Corner radius |
3.75 mm |
| Magnet diameter |
6.5 mm |
| Screw diameter |
3.0 mm |
| Bin clearance |
0.5 mm per side (built into library) |
Library: gridfinity_extended_openscad
Key scripts (top-level)
| Script |
Purpose |
gridfinity_basic_cup.scad |
Standard bins/cups |
gridfinity_baseplate.scad |
Baseplates |
gridfinity_item_holder.scad |
Custom tool/item holders |
gridfinity_tray.scad |
Trays |
gridfinity_lid.scad / gridfinity_sliding_lid.scad |
Lids |
gridfinity_drawers.scad |
Drawers |
Key modules (for use in custom designs)
| Module |
Purpose |
modules/module_gridfinity_cup.scad |
Cup/bin generation |
modules/module_gridfinity_baseplate.scad |
Baseplate generation |
modules/module_gridfinity_baseplate_common.scad |
Baseplate shared utils (outer dimensions, alignment) |
modules/module_gridfinity_frame_connectors.scad |
Seam snap connectors |
modules/gridfinity_constants.scad |
Grid pitch, magnet/screw sizes, corner radii |
The combined/ directory has standalone single-file versions of each script (no use/include needed).
Using the library in OpenSCAD
The library path is relative to the project subdirectory, not the repo root. From a project like idasen-grid/:
// Import modules with 'use' (makes modules available without executing top-level code)
use <../../gridfinity_extended_openscad/modules/module_gridfinity_baseplate.scad>
use <../../gridfinity_extended_openscad/modules/module_gridfinity_baseplate_common.scad>
// Import constants with 'include' (executes top-level variable definitions)
include <../../gridfinity_extended_openscad/modules/gridfinity_constants.scad>
Path convention: Each project lives in its own subdirectory (e.g., idasen-grid/), so the library path needs ../../gridfinity_extended_openscad/ (up one to repo root, up one more to parent directory where the library lives).
Example: Custom baseplate
use <../../gridfinity_extended_openscad/modules/module_gridfinity_baseplate.scad>
use <../../gridfinity_extended_openscad/modules/module_gridfinity_baseplate_common.scad>
include <../../gridfinity_extended_openscad/modules/gridfinity_constants.scad>
// Parameters
drawer_width = 325; // interior mm
drawer_depth = 385; // interior mm
clearance_per_side = 0.2; // shrinkage compensation
// Derived
usable_width = drawer_width - 2 * clearance_per_side;
usable_depth = drawer_depth - 2 * clearance_per_side;
grid_cols = floor(usable_width / 42);
grid_rows = floor(usable_depth / 42);
// Render
gridfinity_baseplate(
num_x = grid_cols,
num_y = grid_rows,
outer_num_x = usable_width,
outer_num_y = usable_depth,
position_grid_in_outer_x = "center",
position_grid_in_outer_y = "center"
);
Example: Basic bin
use <../../gridfinity_extended_openscad/modules/module_gridfinity_cup.scad>
include <../../gridfinity_extended_openscad/modules/gridfinity_constants.scad>
// 2x1 bin, 3 units high, with label
gridfinity_cup(
width = 2, // grid units wide
depth = 1, // grid units deep
num_z = 3, // height units (×7mm)
position = "default",
label_style = "left",
fingerslide = "default"
);
Key parameters reference
Baseplates (gridfinity_baseplate):
num_x, num_y — grid cells
outer_num_x, outer_num_y — total outer dimensions in mm (grid + margins)
position_grid_in_outer_x/y — "center", "near", "far" — grid alignment within outer boundary
baseplate_style — "default" (weighted), "efficient" (cnc-friendly)
corner_roles — [1,1,1,1] for rounded corners, 0 for flat (seam edges)
seam_connector_snaps — maps to library's connectorSnapsStyle. Values: "disabled", "smaller", "larger"
Cups (gridfinity_cup):
width, depth — grid units
num_z — height in 7mm units
label_style — "disabled", "left", "center", "right", "full"
fingerslide — "none", "default", "rounded"
wall_thickness — wall mm (default from library)
num_compartments_x/y — internal dividers
Print Settings
Baseplates (recommended)
Baseplates are flat, functional parts with no cosmetic requirements. Optimize for speed and anti-warp.
.pi/skills/bambu-3mf/tools/create-3mf-cli.sh \
baseplate.stl output.3mf \
--setting layer_height=0.28 \
--setting wall_loops=2 \
--setting top_shell_layers=2 \
--setting bottom_shell_layers=2 \
--setting sparse_infill_density=10% \
--setting sparse_infill_pattern=gyroid \
--setting enable_support=0 \
--setting brim_type=no_brim \
--setting close_fan_the_first_x_layers=3 \
--setting additional_cooling_fan_speed=0
| Setting |
Value |
Rationale |
| Layer height |
0.28 mm |
~30% faster than 0.2mm; purely functional part, no cosmetic benefit from finer layers |
| Walls |
2 |
Sufficient for baseplates; no structural load on perimeters |
| Top/bottom layers |
2 / 2 |
At 0.28mm = 0.56mm solid. Enough for thin baseplate geometry; the cavity pattern handles the bottom profile |
| Infill |
10% gyroid |
Sweet spot: 8–15% recommended. Below 8% risks top-layer sag; above 15% wastes material |
| AUX fan |
off (0) |
Critical for anti-warp. Large flat PLA parts warp badly with AUX cooling. Community consensus for Bambu printers |
| Close fan first layers |
3 |
No part cooling for first 3 layers — helps bed adhesion on large flat surfaces |
| Support |
off |
Not needed |
| Brim |
off |
Brim removal is impractical on baseplate geometry |
Bins (recommended)
Bins have thin walls and need good layer adhesion. Slightly different priorities.
.pi/skills/bambu-3mf/tools/create-3mf-cli.sh \
bin.stl output.3mf \
--setting layer_height=0.24 \
--setting wall_loops=2 \
--setting top_shell_layers=3 \
--setting bottom_shell_layers=2 \
--setting sparse_infill_density=8% \
--setting sparse_infill_pattern=gyroid \
--setting enable_support=0 \
--setting brim_type=no_brim
| Setting |
Value |
Rationale |
| Layer height |
0.24 mm |
Community sweet spot: ~20% faster than 0.2mm, still clean walls. Use 0.2mm only for cosmetic parts |
| Walls |
2 |
2 is the community minimum and sufficient for standard bins. Use 4 for tall bins (h≥6) to prevent vertical layer separation |
| Top layers |
3 |
Enough solid coverage at 0.24mm (0.72mm); 4 layers is overkill for organizer parts |
| Bottom layers |
2 |
2 layers = 0.48mm solid — sufficient for a flat floor; saves material vs 3 |
| Infill |
8% gyroid |
5–10% is plenty for open-top bins. Below 5% risks top-layer sag; 15% wastes material. Gyroid = good omnidirectional strength |
| Support |
off |
Not needed for standard bins |
| Brim |
off |
Difficult to remove from bin geometry |
| AUX fan |
default (on) |
Fine for small/medium bins. Turn off (additional_cooling_fan_speed=0) for tall bins (h≥6) with large wall area |
What BambuStudio handles automatically (no action needed)
- Arachne wall generator (default) — variable-width perimeters that fill gridfinity's thin walls cleanly, better than Classic for this geometry
- Scarf joint seam (default in recent versions) — hides seam lines on the curved bin corners automatically
- Travel / retraction optimisation — handled per-printer profile
- Part cooling — auto-managed; only override AUX fan for tall/large parts (see above)
Settings rationale (community sources)
- Layer height: 0.24mm is the community sweet spot for functional bins — faster than 0.2mm, cleaner than 0.28mm. Use 0.2mm only if surface finish matters. (Source: r/gridfinity, The Next Layer)
- Walls: 2 is the community minimum. For taller bins (h≥6), increase to 4 to prevent walls separating vertically — a known failure mode on larger bins. (Source: r/FixMyPrint)
- Top/bottom layers: 3 top / 2 bottom at 0.24mm = 0.72mm / 0.48mm solid — well above the functional minimum. 4+ layers is overkill for organizer parts. (Source: The Next Layer)
- Infill 5–10%: Below 5%, top layers can sag or warp mid-print. 8% is the safe lower bound. 15% wastes material for open bins with no structural load. (Source: The Next Layer, Portland CNC, r/gridfinity)
- AUX fan off (tall bins): The single most impactful anti-warp measure for PLA on Bambu printers. Critical for baseplates and large flat parts; less critical for small bins but recommended for tall ones. (Source: multiple Reddit/forum sources)
- No cooling first 3 layers: Standard anti-warp measure. Lets the first layers bond to the bed before cooling contracts them.
- Temperature: 220°C for PLA is at the high end but recommended for better layer adhesion, especially with larger nozzles or faster speeds. (Source: The Next Layer, CNC Kitchen)
Anti-Warp Strategies
Large flat gridfinity parts (baseplates, big bins) are prone to warping. Mitigations in priority order:
- AUX fan off — set
additional_cooling_fan_speed=0
- No cooling first 3 layers —
close_fan_the_first_x_layers=3
- Textured PEI plate — good PLA adhesion (our default bed)
- Higher nozzle temp — 220°C helps layer adhesion
- Avoid brims — impractical on gridfinity geometry, use other strategies instead
- Split large baseplates into tiles — reduces flat surface area per tile (see below)
Tile Splitting for Large Baseplates
When a baseplate exceeds the printer bed (256 × 256 mm on A1), split into tiles:
When to split
| Dimension |
Action |
| Width ≤ 256 mm, Depth ≤ 256 mm |
No split needed — single piece |
| Width ≤ 256 mm, Depth > 256 mm |
Split depth only → 2 tiles (front/back) |
| Width > 256 mm, Depth ≤ 256 mm |
Split width only → 2 tiles (left/right) |
| Width > 256 mm, Depth > 256 mm |
Split both → 4 tiles (front-left, front-right, back-left, back-right) |
How the library handles tiles
The gridfinity_extended_openscad library handles multi-tile baseplates natively via these parameters on gridfinity_baseplate():
position_grid_in_outer_x / position_grid_in_outer_y: Set to "near" or "far" to push the grid to one side, creating a margin on the opposite (outer) side. The library automatically places snap connectors on seam edges (no margin) and smooth borders on outer edges (margin present).
corner_roles: Array of 4 values [near-x/near-y, near-x/far-y, far-x/near-y, far-x/far-y]. Set 1 for the outer corner (gets rounded), 0 for seam corners (flat for mating).
seam_connector_snaps: Maps to library's connectorSnapsStyle. Values: "disabled", "smaller", "larger". "smaller" recommended — enough to align tiles without excessive snap force.
seam_connector_clearance: Maps to library's connectorSnapsClearance. Default 0.2. Increase to 0.3 if snaps are too tight.
Tile alignment rules
| Tile position |
position_grid_in_outer_x |
position_grid_in_outer_y |
corner_roles |
| Front-left |
"far" (margin left) |
"far" (margin front) |
[1, 0, 0, 0] |
| Front-right |
"near" (margin right) |
"far" (margin front) |
[0, 0, 1, 0] |
| Back-left |
"far" (margin left) |
"near" (margin back) |
[0, 1, 0, 0] |
| Back-right |
"near" (margin right) |
"near" (margin back) |
[0, 0, 0, 1] |
The library's $allowConnectors mechanism reads the alignment settings to determine which edges are seams:
- Edge with margin → outer edge → no connectors
- Edge without margin → seam edge → snap connectors placed automatically
Column/row split strategy
Split to keep tile dimensions well under 256mm. For a balanced split:
- Columns: Divide roughly in half. E.g., 7 columns → 4 + 3.
- Rows: Aim for front tile ≤ 256mm deep. E.g., 9 rows → 5 front + 4 back.
Tile outer dimensions = (tile_cells × 42) + margin where margin = (effective_dimension - grid_cells × 42) / 2.
Mixed tiles are compatible
Tiles printed with different settings (layer height, walls, infill) are fully compatible — they mate by snap connectors on the seam edges. Only the grid pitch and outer dimensions matter for fit.
FDM Tolerances
- Outer dimensions typically shrink 0.2–0.5 mm in FDM.
- Use
clearance_per_side = 0.2 (default) for drawer fit. Increase to 0.3–0.4 if too tight.
- Snap connector clearance:
connectorSnapsClearance = 0.2 default (mapped as seam_connector_clearance in our SCAD files). Adjust ±0.05 if too tight/loose.
Common Workflow
# 1. Design baseplate in OpenSCAD (parametric)
# Set usable_width, usable_depth, clearance_per_side
# 2. Validate
.pi/skills/openscad/tools/validate.sh project/baseplate.scad
# 3. Preview assembly
.pi/skills/openscad/tools/multi-preview.sh project/baseplate.scad project/previews/assembly/ -D 'part="assembly"'
# 4. Export tile STLs
.pi/skills/openscad/tools/export-stl.sh project/baseplate.scad project/tile.stl -D 'part="front_left"'
# 5. Create 3MF with baseplate-optimized settings
.pi/skills/bambu-3mf/tools/create-3mf-cli.sh \
tile1.stl tile2.stl output.3mf \
--arrange --plate-names "Tile 1;Tile 2" \
--setting layer_height=0.28 \
--setting wall_loops=2 \
--setting top_shell_layers=2 \
--setting bottom_shell_layers=2 \
--setting sparse_infill_density=10% \
--setting sparse_infill_pattern=gyroid \
--setting enable_support=0 \
--setting brim_type=no_brim \
--setting close_fan_the_first_x_layers=3 \
--setting additional_cooling_fan_speed=0
# 6. Slice (optional — can also use BambuStudio GUI)
.pi/skills/bambu-3mf/tools/slice-3mf.sh output.3mf
References
Related Skills
- openscad (
.pi/skills/openscad/) — Design and validate .scad models, generate previews, export STLs. Use this skill for all OpenSCAD operations; the gridfinity skill provides gridfinity-specific parameters and examples.
- bambu-3mf (
.pi/skills/bambu-3mf/) — Create 3MF files with print settings and slice for printing. This skill's print settings section documents the optimal --setting overrides for gridfinity parts.
1---2name: gridfinity3description: Gridfinity system knowledge: grid specs, print settings for baseplates and bins, anti-warp strategies, tile splitting for large drawers, and community best practices.4---56# Gridfinity Skill78Design and print Gridfinity-compatible baseplates and bins using the [gridfinity_extended_openscad](https://github.com/ostat/gridfinity_extended_openscad) library. Covers grid specifications, optimal print settings, anti-warp strategies, and tile splitting for large surfaces.910## Grid Specification1112| Parameter | Value |13|-----------|-------|14| Grid pitch | 42 × 42 mm |15| Height unit | 7 mm |16| Corner radius | 3.75 mm |17| Magnet diameter | 6.5 mm |18| Screw diameter | 3.0 mm |19| Bin clearance | 0.5 mm per side (built into library) |2021## Library: gridfinity_extended_openscad2223- **Source:** https://github.com/ostat/gridfinity_extended_openscad24- **Local path:** `../gridfinity_extended_openscad/` (relative to project root)2526- **Docs:** https://docs.ostat.com/docs/openscad/gridfinity-extended27- **Requires:** OpenSCAD **developer snapshot** with `manifold` backend and `textmetrics` feature enabled2829### Key scripts (top-level)3031| Script | Purpose |32|--------|---------|33| `gridfinity_basic_cup.scad` | Standard bins/cups |34| `gridfinity_baseplate.scad` | Baseplates |35| `gridfinity_item_holder.scad` | Custom tool/item holders |36| `gridfinity_tray.scad` | Trays |37| `gridfinity_lid.scad` / `gridfinity_sliding_lid.scad` | Lids |38| `gridfinity_drawers.scad` | Drawers |3940### Key modules (for `use` in custom designs)4142| Module | Purpose |43|--------|---------|44| `modules/module_gridfinity_cup.scad` | Cup/bin generation |45| `modules/module_gridfinity_baseplate.scad` | Baseplate generation |46| `modules/module_gridfinity_baseplate_common.scad` | Baseplate shared utils (outer dimensions, alignment) |47| `modules/module_gridfinity_frame_connectors.scad` | Seam snap connectors |48| `modules/gridfinity_constants.scad` | Grid pitch, magnet/screw sizes, corner radii |4950The `combined/` directory has standalone single-file versions of each script (no `use`/`include` needed).5152### Using the library in OpenSCAD5354The library path is **relative to the project subdirectory**, not the repo root. From a project like `idasen-grid/`:5556```openscad57// Import modules with 'use' (makes modules available without executing top-level code)58use <../../gridfinity_extended_openscad/modules/module_gridfinity_baseplate.scad>59use <../../gridfinity_extended_openscad/modules/module_gridfinity_baseplate_common.scad>6061// Import constants with 'include' (executes top-level variable definitions)62include <../../gridfinity_extended_openscad/modules/gridfinity_constants.scad>63```6465**Path convention:** Each project lives in its own subdirectory (e.g., `idasen-grid/`), so the library path needs `../../gridfinity_extended_openscad/` (up one to repo root, up one more to parent directory where the library lives).6667### Example: Custom baseplate6869```openscad70use <../../gridfinity_extended_openscad/modules/module_gridfinity_baseplate.scad>71use <../../gridfinity_extended_openscad/modules/module_gridfinity_baseplate_common.scad>72include <../../gridfinity_extended_openscad/modules/gridfinity_constants.scad>7374// Parameters75drawer_width = 325; // interior mm76drawer_depth = 385; // interior mm77clearance_per_side = 0.2; // shrinkage compensation7879// Derived80usable_width = drawer_width - 2 * clearance_per_side;81usable_depth = drawer_depth - 2 * clearance_per_side;82grid_cols = floor(usable_width / 42);83grid_rows = floor(usable_depth / 42);8485// Render86gridfinity_baseplate(87 num_x = grid_cols,88 num_y = grid_rows,89 outer_num_x = usable_width,90 outer_num_y = usable_depth,91 position_grid_in_outer_x = "center",92 position_grid_in_outer_y = "center"93);94```9596### Example: Basic bin9798```openscad99use <../../gridfinity_extended_openscad/modules/module_gridfinity_cup.scad>100include <../../gridfinity_extended_openscad/modules/gridfinity_constants.scad>101102// 2x1 bin, 3 units high, with label103gridfinity_cup(104 width = 2, // grid units wide105 depth = 1, // grid units deep106 num_z = 3, // height units (×7mm)107 position = "default",108 label_style = "left",109 fingerslide = "default"110);111```112113### Key parameters reference114115**Baseplates (`gridfinity_baseplate`):**116- `num_x`, `num_y` — grid cells117- `outer_num_x`, `outer_num_y` — total outer dimensions in mm (grid + margins)118- `position_grid_in_outer_x/y` — `"center"`, `"near"`, `"far"` — grid alignment within outer boundary119- `baseplate_style` — `"default"` (weighted), `"efficient"` (cnc-friendly)120- `corner_roles` — `[1,1,1,1]` for rounded corners, `0` for flat (seam edges)121- `seam_connector_snaps` — maps to library's `connectorSnapsStyle`. Values: `"disabled"`, `"smaller"`, `"larger"`122123**Cups (`gridfinity_cup`):**124- `width`, `depth` — grid units125- `num_z` — height in 7mm units126- `label_style` — `"disabled"`, `"left"`, `"center"`, `"right"`, `"full"`127- `fingerslide` — `"none"`, `"default"`, `"rounded"`128- `wall_thickness` — wall mm (default from library)129- `num_compartments_x/y` — internal dividers130131## Print Settings132133### Baseplates (recommended)134135Baseplates are flat, functional parts with no cosmetic requirements. Optimize for speed and anti-warp.136137```bash138.pi/skills/bambu-3mf/tools/create-3mf-cli.sh \139 baseplate.stl output.3mf \140 --setting layer_height=0.28 \141 --setting wall_loops=2 \142 --setting top_shell_layers=2 \143 --setting bottom_shell_layers=2 \144 --setting sparse_infill_density=10% \145 --setting sparse_infill_pattern=gyroid \146 --setting enable_support=0 \147 --setting brim_type=no_brim \148 --setting close_fan_the_first_x_layers=3 \149 --setting additional_cooling_fan_speed=0150```151152| Setting | Value | Rationale |153|---------|-------|-----------|154| Layer height | **0.28 mm** | ~30% faster than 0.2mm; purely functional part, no cosmetic benefit from finer layers |155| Walls | **2** | Sufficient for baseplates; no structural load on perimeters |156| Top/bottom layers | **2 / 2** | At 0.28mm = 0.56mm solid. Enough for thin baseplate geometry; the cavity pattern handles the bottom profile |157| Infill | **10% gyroid** | Sweet spot: 8–15% recommended. Below 8% risks top-layer sag; above 15% wastes material |158| AUX fan | **off (0)** | **Critical for anti-warp.** Large flat PLA parts warp badly with AUX cooling. Community consensus for Bambu printers |159| Close fan first layers | **3** | No part cooling for first 3 layers — helps bed adhesion on large flat surfaces |160| Support | off | Not needed |161| Brim | off | Brim removal is impractical on baseplate geometry |162163### Bins (recommended)164165Bins have thin walls and need good layer adhesion. Slightly different priorities.166167```bash168.pi/skills/bambu-3mf/tools/create-3mf-cli.sh \169 bin.stl output.3mf \170 --setting layer_height=0.24 \171 --setting wall_loops=2 \172 --setting top_shell_layers=3 \173 --setting bottom_shell_layers=2 \174 --setting sparse_infill_density=8% \175 --setting sparse_infill_pattern=gyroid \176 --setting enable_support=0 \177 --setting brim_type=no_brim178```179180| Setting | Value | Rationale |181|---------|-------|-----------|182| Layer height | **0.24 mm** | Community sweet spot: ~20% faster than 0.2mm, still clean walls. Use 0.2mm only for cosmetic parts |183| Walls | **2** | 2 is the community minimum and sufficient for standard bins. Use **4** for tall bins (h≥6) to prevent vertical layer separation |184| Top layers | **3** | Enough solid coverage at 0.24mm (0.72mm); 4 layers is overkill for organizer parts |185| Bottom layers | **2** | 2 layers = 0.48mm solid — sufficient for a flat floor; saves material vs 3 |186| Infill | **8% gyroid** | 5–10% is plenty for open-top bins. Below 5% risks top-layer sag; 15% wastes material. Gyroid = good omnidirectional strength |187| Support | off | Not needed for standard bins |188| Brim | off | Difficult to remove from bin geometry |189| AUX fan | default (on) | Fine for small/medium bins. Turn off (`additional_cooling_fan_speed=0`) for tall bins (h≥6) with large wall area |190191### What BambuStudio handles automatically (no action needed)192193- **Arachne wall generator** (default) — variable-width perimeters that fill gridfinity's thin walls cleanly, better than Classic for this geometry194- **Scarf joint seam** (default in recent versions) — hides seam lines on the curved bin corners automatically195- **Travel / retraction optimisation** — handled per-printer profile196- **Part cooling** — auto-managed; only override AUX fan for tall/large parts (see above)197198### Settings rationale (community sources)199200- **Layer height:** 0.24mm is the community sweet spot for functional bins — faster than 0.2mm, cleaner than 0.28mm. Use 0.2mm only if surface finish matters. (Source: r/gridfinity, The Next Layer)201- **Walls:** 2 is the community minimum. For taller bins (h≥6), increase to 4 to prevent walls separating vertically — a known failure mode on larger bins. (Source: r/FixMyPrint)202- **Top/bottom layers:** 3 top / 2 bottom at 0.24mm = 0.72mm / 0.48mm solid — well above the functional minimum. 4+ layers is overkill for organizer parts. (Source: The Next Layer)203- **Infill 5–10%:** Below 5%, top layers can sag or warp mid-print. 8% is the safe lower bound. 15% wastes material for open bins with no structural load. (Source: The Next Layer, Portland CNC, r/gridfinity)204- **AUX fan off (tall bins):** The single most impactful anti-warp measure for PLA on Bambu printers. Critical for baseplates and large flat parts; less critical for small bins but recommended for tall ones. (Source: multiple Reddit/forum sources)205- **No cooling first 3 layers:** Standard anti-warp measure. Lets the first layers bond to the bed before cooling contracts them.206- **Temperature:** 220°C for PLA is at the high end but recommended for better layer adhesion, especially with larger nozzles or faster speeds. (Source: The Next Layer, CNC Kitchen)207208## Anti-Warp Strategies209210Large flat gridfinity parts (baseplates, big bins) are prone to warping. Mitigations in priority order:2112121. **AUX fan off** — set `additional_cooling_fan_speed=0`2132. **No cooling first 3 layers** — `close_fan_the_first_x_layers=3`2143. **Textured PEI plate** — good PLA adhesion (our default bed)2154. **Higher nozzle temp** — 220°C helps layer adhesion2165. **Avoid brims** — impractical on gridfinity geometry, use other strategies instead2176. **Split large baseplates into tiles** — reduces flat surface area per tile (see below)218219## Tile Splitting for Large Baseplates220221When a baseplate exceeds the printer bed (256 × 256 mm on A1), split into tiles:222223### When to split224225| Dimension | Action |226|-----------|--------|227| Width ≤ 256 mm, Depth ≤ 256 mm | No split needed — single piece |228| Width ≤ 256 mm, Depth > 256 mm | Split depth only → 2 tiles (front/back) |229| Width > 256 mm, Depth ≤ 256 mm | Split width only → 2 tiles (left/right) |230| Width > 256 mm, Depth > 256 mm | Split both → 4 tiles (front-left, front-right, back-left, back-right) |231232### How the library handles tiles233234The `gridfinity_extended_openscad` library handles multi-tile baseplates natively via these parameters on `gridfinity_baseplate()`:235236- **`position_grid_in_outer_x`** / **`position_grid_in_outer_y`**: Set to `"near"` or `"far"` to push the grid to one side, creating a margin on the opposite (outer) side. The library automatically places **snap connectors on seam edges** (no margin) and **smooth borders on outer edges** (margin present).237- **`corner_roles`**: Array of 4 values `[near-x/near-y, near-x/far-y, far-x/near-y, far-x/far-y]`. Set `1` for the outer corner (gets rounded), `0` for seam corners (flat for mating).238- **`seam_connector_snaps`**: Maps to library's `connectorSnapsStyle`. Values: `"disabled"`, `"smaller"`, `"larger"`. `"smaller"` recommended — enough to align tiles without excessive snap force.239- **`seam_connector_clearance`**: Maps to library's `connectorSnapsClearance`. Default `0.2`. Increase to `0.3` if snaps are too tight.240241### Tile alignment rules242243| Tile position | `position_grid_in_outer_x` | `position_grid_in_outer_y` | `corner_roles` |244|---------------|---------------------------|---------------------------|----------------|245| Front-left | `"far"` (margin left) | `"far"` (margin front) | `[1, 0, 0, 0]` |246| Front-right | `"near"` (margin right) | `"far"` (margin front) | `[0, 0, 1, 0]` |247| Back-left | `"far"` (margin left) | `"near"` (margin back) | `[0, 1, 0, 0]` |248| Back-right | `"near"` (margin right) | `"near"` (margin back) | `[0, 0, 0, 1]` |249250The library's `$allowConnectors` mechanism reads the alignment settings to determine which edges are seams:251- Edge with margin → outer edge → no connectors252- Edge without margin → seam edge → snap connectors placed automatically253254### Column/row split strategy255256Split to keep tile dimensions well under 256mm. For a balanced split:257- **Columns:** Divide roughly in half. E.g., 7 columns → 4 + 3.258- **Rows:** Aim for front tile ≤ 256mm deep. E.g., 9 rows → 5 front + 4 back.259260Tile outer dimensions = `(tile_cells × 42) + margin` where margin = `(effective_dimension - grid_cells × 42) / 2`.261262### Mixed tiles are compatible263264Tiles printed with different settings (layer height, walls, infill) are fully compatible — they mate by snap connectors on the seam edges. Only the grid pitch and outer dimensions matter for fit.265266## FDM Tolerances267268- Outer dimensions typically shrink **0.2–0.5 mm** in FDM.269- Use `clearance_per_side = 0.2` (default) for drawer fit. Increase to 0.3–0.4 if too tight.270- Snap connector clearance: `connectorSnapsClearance = 0.2` default (mapped as `seam_connector_clearance` in our SCAD files). Adjust ±0.05 if too tight/loose.271272## Common Workflow273274```bash275# 1. Design baseplate in OpenSCAD (parametric)276# Set usable_width, usable_depth, clearance_per_side277278# 2. Validate279.pi/skills/openscad/tools/validate.sh project/baseplate.scad280281# 3. Preview assembly282.pi/skills/openscad/tools/multi-preview.sh project/baseplate.scad project/previews/assembly/ -D 'part="assembly"'283284# 4. Export tile STLs285.pi/skills/openscad/tools/export-stl.sh project/baseplate.scad project/tile.stl -D 'part="front_left"'286287# 5. Create 3MF with baseplate-optimized settings288.pi/skills/bambu-3mf/tools/create-3mf-cli.sh \289 tile1.stl tile2.stl output.3mf \290 --arrange --plate-names "Tile 1;Tile 2" \291 --setting layer_height=0.28 \292 --setting wall_loops=2 \293 --setting top_shell_layers=2 \294 --setting bottom_shell_layers=2 \295 --setting sparse_infill_density=10% \296 --setting sparse_infill_pattern=gyroid \297 --setting enable_support=0 \298 --setting brim_type=no_brim \299 --setting close_fan_the_first_x_layers=3 \300 --setting additional_cooling_fan_speed=0301302# 6. Slice (optional — can also use BambuStudio GUI)303.pi/skills/bambu-3mf/tools/slice-3mf.sh output.3mf304```305306## References307308- [Gridfinity Extended OpenSCAD docs](https://docs.ostat.com/docs/openscad/gridfinity-extended)309- [Gridfinity Tips & Tricks – The Next Layer](https://thenextlayer.com/gridfinity/) — print settings, infill, layer count, warping310- [Portland CNC – How to use Gridfinity](https://portlandcnc.com/blog/2023/02/gridfinity) — 0.2mm, 8% gyroid baseline311- [r/gridfinity](https://www.reddit.com/r/gridfinity/) — community settings and warping solutions312- [Bambu Lab Wiki – Retraction](https://wiki.bambulab.com/en/software/bambu-studio/parameter/retraction) — travel/retraction optimization313- [Bambu Lab Wiki – Seam Settings](https://wiki.bambulab.com/en/software/bambu-studio/Seam) — seam position and scarf seam314- [Bambu Lab Wiki – Wall Generator](https://wiki.bambulab.com/en/software/bambu-studio/WallGenerator) — Arachne vs Classic, when to switch315- [r/FixMyPrint – Gridfinity walls separating](https://www.reddit.com/r/FixMyPrint/comments/1rhh6s5/gridfinity_walls_vertically_separating_on_larger/) — wall count fix for tall bins316317## Related Skills318319- **openscad** (`.pi/skills/openscad/`) — Design and validate `.scad` models, generate previews, export STLs. Use this skill for all OpenSCAD operations; the gridfinity skill provides gridfinity-specific parameters and examples.320- **bambu-3mf** (`.pi/skills/bambu-3mf/`) — Create 3MF files with print settings and slice for printing. This skill's print settings section documents the optimal `--setting` overrides for gridfinity parts.