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.
/plugin marketplace add racurry/neat-little-package/plugin install spirograph@neat-little-packageThis 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: