Interpretive guidance for generating OpenSCAD code for NeoGrid drawer divider connectors. This is a HYBRID system - print connectors, buy dividers (MDF, plywood, acrylic). Provides material selection guidance, connector type decisions, and base system integration. Use when generating OpenSCAD files for NeoGrid junction pieces.
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
base-options.mdconnector-types/l-intersection.mdconnector-types/straight-end.mdconnector-types/straight-through.mdconnector-types/t-intersection.mdconnector-types/vertical-trim.mdconnector-types/x-intersection.mddrawer-labels.mdhybrid-approach.mdGenerates OpenSCAD code for 3D-printed connectors that join store-bought divider materials (MDF, plywood, acrylic) into custom drawer organization layouts.
CRITICAL: NeoGrid is a HYBRID system:
Official NeoGrid 2.0 implementation:
/Users/aaron/workspace/infra/neat-little-package/.tmp/QuackWorks/NeoGrid/Neogrid.scad (connectors), DrawerLabelsAndHandles.scad (labels)System references:
NOT a fully 3D-printed system. NeoGrid separates components by manufacturing efficiency:
3D-print the connectors:
Buy the dividers:
Why this works:
Most important parameter in entire system:
Material_Thickness = 8.5; // MEASURE YOUR ACTUAL MATERIAL!
Why it's critical:
Process:
Common materials and actual measurements:
| Material | Nominal | Actual (measure!) | Setting |
|---|---|---|---|
| UK utility board | 8.5mm | 8.3-8.7mm | Measure |
| US 1/4" plywood | 6.35mm | 6.0-6.5mm | Measure |
| 6mm MDF | 6mm | 5.8-6.2mm | Measure |
| 3mm acrylic | 3mm | 2.9-3.1mm | Measure |
Connectors attach to drawer bottom via one of four base types:
Gridfinity (42mm grid):
OpenGrid (25mm grid):
Flat (30mm grid or custom):
None (no base):
NeoGrid has 6 connector types (plus drawer label holders). Each has dedicated subpage:
| Connector | Use case | Read |
|---|---|---|
| X Intersection | 4-way junctions (interior grid points) | ./connector-types/x-intersection.md |
| T Intersection | 3-way junctions (edges, perpendicular joins) | ./connector-types/t-intersection.md |
| L Intersection | Corner junctions (90° turns) | ./connector-types/l-intersection.md |
| I Junction | Straight-through connections (in-line) | ./connector-types/straight-through.md |
| Straight End | Terminators (open ends with buffer) | ./connector-types/straight-end.md |
| Vertical Trim | Edge trim for drawer openings | ./connector-types/vertical-trim.md |
Drawer labels (bonus accessory):
Choose divider material based on budget, availability, and drawer use:
Quick reference:
| Material | Thickness | Cost | Pros | Cons |
|---|---|---|---|---|
| uPVC utility board | 8.5mm | Low | Minimal paint, long lengths | UK-specific |
| Plywood | 6mm, 8mm | Low | Strong, natural look | Needs finish |
| MDF | 3mm, 6mm, 8mm | Very low | Cheap, smooth | Heavy, needs retention spikes |
| Acrylic | 3mm, 6mm | Medium | Transparent, clean | Brittle, expensive |
| Foam board | 5mm | Very low | Lightweight | Low strength |
Critical reminder: Measure actual material thickness before printing. Nominal ≠ actual.
Choose base system based on drawer setup:
Quick decision framework:
Do you have Gridfinity baseplate in drawer?
├─ Yes → Use Gridfinity base (42mm)
└─ No
├─ Want to add Gridfinity later? → Use Gridfinity base (future-proof)
└─ No Gridfinity needed
├─ Want easy repositioning? → Use Flat base + adhesive (30mm)
└─ Permanent install → Use None (minimal filament)
Multi-tile support (Gridfinity only):
grid_x = 2; // 2 tiles wide (84mm)
grid_y = 3; // 3 tiles deep (126mm)
Only X Intersection connectors support multi-tile bases currently.
Use this decision tree to select connector types:
Ask these questions:
How many dividers meet at junction?
Where is junction located?
What's the layout pattern?
Example layout analysis:
User: "3×3 grid in my drawer"
Analysis:
- Interior: 4 X Intersections (where grid lines cross)
- Edges: 8 T Intersections (where dividers meet drawer edge)
- Corners: 4 L Intersections (drawer corners)
- Total: 4 X + 8 T + 4 L = 16 connectors + 16 top pieces
Start with X Intersections: Most versatile, works for testing material fit.
Always declare these parameters at top of file:
// CRITICAL: Material measurement
Material_Thickness = 8.5; // MEASURE actual material with calipers!
Channel_Depth = 20; // How deep material sits in connector
Wall_Thickness = 4; // Connector wall thickness
// Base system selection
Selected_Base = "Gridfinity"; // Gridfinity | openGrid | Flat | None
grid_size = 42; // Auto-set based on Selected_Base
grid_x = 1; // Tiles horizontally (Gridfinity only)
grid_y = 1; // Tiles vertically (Gridfinity only)
// Gridfinity-specific
Added_Base_Thickness = 1; // Extra base height beyond profile
// OpenGrid-specific
openGrid_Full_or_Lite = "Lite"; // Full | Lite
openGrid_Directional_Snap = false; // Vertical mounting
openGrid_Directional_Snap_Orientation = 1; // 1-4 rotation
// Flat base
Flat_Base_Thickness = 1.4; // Base thickness in mm
// Material retention
Retention_Spike = false; // Add spikes for MDF (soft materials)
Spike_Scale = 1; // Scale spike size
// Part selection
Select_Part = "X Intersection"; // See connector type options
Top_or_Bottom = "Both"; // Top | Bottom | Both
// Top chamfers
Top_Chamfers = true; // Ease material insertion
Why this order: Critical material parameter first, base system second, optional features last.
All connectors use two-piece design (except Vertical Trim):
// Bottom piece (has base attachment - Gridfinity/openGrid/Flat)
NeoGrid_X_Intersection_Base(
Material_Thickness,
Channel_Depth = Channel_Depth,
Wall_Thickness = Wall_Thickness,
grid_size = grid_size
);
// Top piece (caps the junction, no base)
NeoGrid_X_Intersection_Top(
Material_Thickness,
Channel_Depth = Channel_Depth,
Wall_Thickness = Wall_Thickness,
grid_size = grid_size
);
Why two pieces:
Assembly: Insert dividers into base channels → Place top piece over junction.
When user says "I need connectors for X dividers":
Ask about material type and measurement:
Set Material_Thickness parameter:
Material_Thickness = 8.5; // User's measured value
Recommend test print:
Batch printing guidance:
Read the QuackWorks source, don't reinvent:
// DON'T write connector geometry from scratch
// DO fetch current modules from QuackWorks repo
// Option 1: Direct include (if user has BOSL2)
include <BOSL2/std.scad>
include <BOSL2/rounding.scad>
include <path/to/Neogrid.scad>
NeoGrid_X_Intersection_Base(...);
// Option 2: Paste relevant module from QuackWorks
// (if user wants standalone file)
module NeoGrid_X_Intersection_Base(...) {
// [copied from Neogrid.scad]
}
When to use each connector type: See connector-types/*.md for detailed geometry and use cases.
Problem: User says "I have 1/4 inch plywood", code uses Material_Thickness = 6.35, connectors don't fit.
Why it fails: Nominal thickness ≠ actual thickness. 1/4" plywood can be 6.0-6.5mm depending on manufacturer.
Better approach:
// DON'T assume nominal:
Material_Thickness = 6.35; // "It's 1/4 inch"
// DO ask user to measure:
echo("CRITICAL: Measure actual material with calipers!");
echo("Even 0.2mm variation affects fit.");
Material_Thickness = 6.4; // User's measured value
Problem: User prints 20 connectors, discovers material doesn't fit, wastes filament.
Why it fails: Material variation, printer tolerance, measurement errors compound.
Better approach:
// Workflow guidance:
// 1. Print ONE X Intersection (base + top)
// 2. Test material fit
// 3. Adjust Material_Thickness ±0.1-0.2mm if needed
// 4. THEN batch print remaining connectors
Include in code comments: Remind user to test before batch printing.
Problem: User has no Gridfinity baseplate, code generates Gridfinity base, connectors don't sit flat.
Why it fails: Didn't ask about existing drawer setup.
Better approach:
// Ask before generating:
// "Do you have Gridfinity baseplate in this drawer?"
// ├─ Yes → Selected_Base = "Gridfinity"
// └─ No → Selected_Base = "Flat" // Use adhesive to secure
Problem: User has MDF dividers, connectors don't grip firmly, layout sags.
Why it fails: MDF is soft, benefits from retention spikes for friction.
Better approach:
// Check material type:
// "What divider material?"
// ├─ MDF → Retention_Spike = true;
// ├─ Plywood → Retention_Spike = false; (optional)
// └─ Acrylic → Retention_Spike = false; (never)
Problem: User wants 2×3 connector grid, code sets grid_x=2, grid_y=3 with Selected_Base="Flat", parameters ignored.
Why it fails: Multi-tile support is Gridfinity-only (currently).
Better approach:
// Warn user:
if (grid_x > 1 || grid_y > 1) {
echo("WARNING: Multi-tile (grid_x/grid_y) only supported with Gridfinity base");
echo("For Flat/None base, use grid_x=1, grid_y=1");
}
Before delivering OpenSCAD code:
Required elements:
Parameter validation:
Base system compliance:
Code quality:
User communication:
Standard NeoGrid assembly process:
42mm × N - Material_Thickness)NeoGrid Ecosystem:
Related skills:
Official resources: