AI Prompt: GridFlock 0.6mm Nozzle Speed Optimization¶
Purpose: Add a 0.6mm nozzle slicer profile optimized for maximum print speed on GridFlock plates, with matching machine/filament profiles and updated defaults
Estimated Effort: 6–8 hours (includes physical fit testing)
Prerequisites: Working slicer container with BambuStudio CLI, existing 0.4mm profiles indeployment/slicer/profiles/bambu-a1/, access to a Bambu Lab A1 with 0.6mm nozzle for physical validation
Output: New 0.6mm nozzle profile set (machine_06.json,process_028_06.json,filament_pla_06.json), updatedDEFAULT_PRINT_SETTINGS, increasednumberDepthfor reliable readability at thicker layers, nozzle-aware puzzle connector gap, and per-tenant profile selection
Status: 🚧 TODO
🎯 Mission¶
GridFlock plates are functional structural parts — grid inserts that can range from 100mm to 1000mm on either side, split across multiple printer-bed-sized plates connected by puzzle connectors. With the current 0.4mm nozzle and 0.20mm Standard @BBL A1 profile, a typical 6×6 grid plate (~252 x 252mm) takes ~53 minutes. Larger plates with more grid cells take proportionally longer. This is unnecessarily slow for parts with no cosmetic requirements.
By switching to a 0.6mm nozzle with an optimized process profile, print time can be reduced by ~3x because:
- Fewer layers: 0.28mm layer height → ~30% fewer layers per plate
- Wider lines: 0.65mm line width → ~50% fewer toolpath lines per layer
- Higher volumetric throughput: 0.6mm nozzle profiles allow ~28–33 mm³/s vs 21 mm³/s
There are two constraints that must be preserved:
Constraint 1: Plate identification numbers¶
The dot-matrix digits embossed on the bottom surface have strokes ~0.92mm wide (based on numberSize: 8 / 7 rows × 5 cols). Currently numberDepth is 0.4mm in libs/gridflock-core/src/lib/defaults.ts.
- XY resolution: 0.92mm stroke width works with a 0.6mm nozzle (single perimeter per stroke — coarser but readable)
- Z resolution: 0.4mm emboss depth spans at least 1 full layer at 0.28mm layer height (1.43 layers) — sufficient for clear definition
Bumping numberDepth to 0.5mm provides extra margin for first-layer squish variations.
Constraint 2: Puzzle connector fitting¶
GridFlock plates connect to each other via puzzle connectors (intersection-puzzle or edge-puzzle). These have tight tolerances that are sensitive to line width changes:
| Feature | Male dimension | Female dimension | Clearance per side |
|---|---|---|---|
| Edge-puzzle tab | 10 × 2.5 mm | 10.3 × 2.8 mm | 0.15 mm |
| Edge-puzzle bridge | 3 × 1.2 mm | 3.3 × 1.5 mm | 0.15 mm |
The bridge Y dimension (1.2mm) is the critical feature. With a 0.65mm line width, it is only ~1.8 line widths — any over-extrusion or perimeter overlap could eat into the 0.15mm clearance gap and cause connectors to fit too tightly or not at all.
Mitigation: Increase the edge-puzzle gap from 0.15mm to 0.25mm when using the 0.6mm nozzle profile. This widens the female socket clearance to compensate for the wider extrusion lines:
- Bridge female Y:
1.2 + 2×0.25 = 1.7mm(vs current 1.5mm) — comfortable for 2 perimeters at 0.65mm - Tab female Y:
2.5 + 2×0.25 = 3.0mm(vs current 2.8mm) — ample clearance
This change must be validated with a physical fit test before rolling out to production.
📐 Architecture¶
Profile Selection Flow¶
Order received
│
▼
GridFlockPipelineService.loadTenantPrintSettings(tenantId)
│
├── SystemConfig has 'gridflock.print_settings'? → Use tenant config
│ (includes profile paths)
└── No config → DEFAULT_PRINT_SETTINGS
│
▼
machineProfilePath: '/profiles/bambu-a1/machine_06.json' ← NEW DEFAULT
processProfilePath: '/profiles/bambu-a1/process_028_06.json' ← NEW DEFAULT
filamentProfilePath: '/profiles/bambu-a1/filament_pla_06.json'← NEW DEFAULT
│
▼
SlicerClient.slice(stlBuffer, machine, process, filament)
│
▼
BambuStudio CLI → output.3mf
Speed Comparison (for a typical 6×6 grid plate, ~4.65mm tall)¶
| Setting | Current (0.4mm) | Optimized (0.6mm) | Impact |
|---|---|---|---|
| Nozzle | 0.4mm | 0.6mm | Wider lines |
| Layer height | 0.20mm | 0.28mm | ~30% fewer layers |
| Line width | 0.42mm | 0.65mm | ~50% fewer lines/layer |
| Max volumetric flow | 21 mm³/s | 28 mm³/s | ~33% more throughput |
| Puzzle connector gap | 0.15mm | 0.25mm | Compensates for wider lines |
| Layers (4.65mm part) | 23 | 17 | 6 fewer layers |
| Estimated time | ~53 min | ~15–20 min | ~3x faster |
📋 Implementation¶
Phase 1: Create 0.6mm Nozzle Slicer Profiles (2 hours)¶
Priority: P0 | Impact: Critical | Dependencies: None
Create three new JSON profile files in deployment/slicer/profiles/bambu-a1/ for the 0.6mm nozzle.
1. Create machine_06.json¶
Create deployment/slicer/profiles/bambu-a1/machine_06.json based on the existing machine.json, with these changes:
{
"type": "machine",
"name": "Bambu Lab A1 0.6 nozzle",
"from": "system",
"setting_id": "GKA01",
"instantiation": "true",
"inherits": "Bambu Lab A1 0.6 nozzle",
"printer_model": "Bambu Lab A1",
"printer_variant": "0.6",
"nozzle_diameter": ["0.6"],
"curr_bed_type": "Textured PEI Plate",
"printable_area": ["0x0", "256x0", "256x256", "0x256"],
"printable_height": "256",
"bed_exclude_area": [],
"default_filament_profile": ["Bambu PLA Basic @BBL A1"],
"default_print_profile": "0.28mm Standard @BBL A1",
"machine_max_acceleration_extruding": ["20000"],
"machine_max_acceleration_retracting": ["5000"],
"machine_max_speed_x": ["500"],
"machine_max_speed_y": ["500"],
"machine_max_speed_z": ["12"],
"machine_max_speed_e": ["30"],
"machine_max_jerk_x": ["9"],
"machine_max_jerk_y": ["9"],
"machine_max_jerk_z": ["2"],
"machine_max_jerk_e": ["2.5"],
"retraction_length": ["0.8"],
"retraction_speed": ["30"],
"deretraction_speed": ["0"],
"retract_before_wipe": ["70"],
"retract_when_changing_layer": ["0"],
"wipe": ["1"],
"wipe_distance": ["1"],
"z_hop": ["0.4"],
"z_hop_types": ["Normal Lift"],
"retraction_minimum_travel": ["1"],
"retract_restart_extra": ["0"],
"gcode_flavor": "marlin",
"thumbnails": ["300x300"],
"thumbnails_format": "PNG"
}
Key changes from machine.json:
- name / inherits: "Bambu Lab A1 0.6 nozzle" (must match BambuStudio's built-in profile name)
- printer_variant: "0.6"
- nozzle_diameter: ["0.6"]
- default_print_profile: "0.28mm Standard @BBL A1"
2. Create process_028_06.json¶
Create deployment/slicer/profiles/bambu-a1/process_028_06.json — the speed-optimized process profile for 0.6mm nozzle:
{
"type": "process",
"name": "0.28mm Standard @BBL A1",
"from": "system",
"setting_id": "GP043",
"instantiation": "true",
"inherits": "0.28mm Standard @BBL A1",
"layer_height": "0.28",
"initial_layer_print_height": "0.28",
"wall_loops": "2",
"top_shell_layers": "3",
"bottom_shell_layers": "3",
"sparse_infill_density": "10%",
"sparse_infill_pattern": "grid",
"initial_layer_speed": "50",
"initial_layer_infill_speed": "105",
"outer_wall_speed": "200",
"inner_wall_speed": "300",
"small_perimeter_speed": "50%",
"internal_solid_infill_speed": "250",
"sparse_infill_speed": "270",
"top_surface_speed": "200",
"support_speed": "150",
"gap_infill_speed": "200",
"travel_speed": "500",
"default_acceleration": "10000",
"initial_layer_acceleration": "500",
"outer_wall_acceleration": "5000",
"inner_wall_acceleration": "10000",
"top_surface_acceleration": "5000",
"bridge_acceleration": "50%",
"enable_overhang_speed": "1",
"enable_support": "0",
"support_type": "normal(auto)",
"support_threshold_angle": "30",
"brim_type": "auto_brim",
"brim_width": "5",
"line_width": "0.65",
"initial_layer_line_width": "0.70",
"outer_wall_line_width": "0.65",
"inner_wall_line_width": "0.65",
"top_surface_line_width": "0.65",
"internal_solid_infill_line_width": "0.65",
"sparse_infill_line_width": "0.65",
"support_line_width": "0.55",
"seam_position": "aligned",
"compatible_printers": ["Bambu Lab A1 0.6 nozzle"]
}
Key differences from process_020.json:
- layer_height / initial_layer_print_height: 0.28 (vs 0.20)
- top_shell_layers / bottom_shell_layers: 3 (vs 4) — still 0.84mm solid at 0.28mm layers, adequate for functional parts
- sparse_infill_density: 10% (vs 15%) — less infill travel per layer; grid plates get strength from geometry, not infill
- All line_width values: 0.65 (vs 0.42) — standard for 0.6mm nozzle
- initial_layer_line_width: 0.70 — slightly wider first layer for better adhesion
- internal_solid_infill_line_width: 0.65 (added — not in 0.4mm profile)
- compatible_printers: "Bambu Lab A1 0.6 nozzle"
3. Create filament_pla_06.json¶
Create deployment/slicer/profiles/bambu-a1/filament_pla_06.json based on the existing filament_pla.json, with this key change:
{
"type": "filament",
"name": "Bambu PLA Basic @BBL A1",
"from": "system",
"setting_id": "GFL99",
"instantiation": "true",
"inherits": "Bambu PLA Basic @BBL A1",
"filament_type": ["PLA"],
"filament_vendor": ["Bambu Lab"],
"filament_colour": ["#FFFFFF"],
"filament_density": ["1.24"],
"filament_cost": ["24.99"],
"filament_diameter": ["1.75"],
"nozzle_temperature": ["220"],
"nozzle_temperature_initial_layer": ["220"],
"cool_plate_temp": ["35"],
"cool_plate_temp_initial_layer": ["35"],
"hot_plate_temp": ["55"],
"hot_plate_temp_initial_layer": ["55"],
"textured_plate_temp": ["55"],
"textured_plate_temp_initial_layer": ["55"],
"fan_min_speed": ["80"],
"fan_max_speed": ["100"],
"fan_cooling_layer_time": ["100"],
"slow_down_layer_time": ["5"],
"slow_down_min_speed": ["10"],
"overhang_fan_speed": ["100"],
"overhang_fan_threshold": ["5%"],
"filament_max_volumetric_speed": ["28"],
"filament_retraction_length": ["0.8"],
"filament_retraction_speed": ["30"],
"filament_deretraction_speed": ["0"],
"filament_wipe": ["1"],
"filament_wipe_distance": ["1"],
"filament_z_hop": ["0.4"],
"compatible_printers": ["Bambu Lab A1 0.6 nozzle"]
}
Key change from filament_pla.json:
- filament_max_volumetric_speed: 28 (vs 21) — the 0.6mm nozzle melts more filament per second; 28 mm³/s is a safe conservative value for PLA through a 0.6mm nozzle on the A1
- compatible_printers: updated to "Bambu Lab A1 0.6 nozzle"
Phase 2: Increase Number Emboss Depth (30 min)¶
Priority: P0 | Impact: High | Dependencies: None
Increase the emboss depth from 0.4mm to 0.5mm for extra readability margin at thicker layer heights.
1. Update DEFAULT_GRIDFLOCK_PARAMS in libs/gridflock-core/src/lib/defaults.ts¶
Change line 56:
numberDepth: 0.5,
This ensures the plate identification number is at least 1 full layer deep at any supported layer height: - At 0.20mm: 2.5 layers deep (very crisp) - At 0.28mm: 1.78 layers deep (clear) - At 0.36mm: 1.39 layers deep (readable)
The 0.1mm increase has zero impact on print time or structural integrity.
2. Verify the numbering geometry handles the new depth¶
Review libs/gridflock-core/src/lib/geometry/numbering.ts. The createPlateNumbering() function takes depth as a parameter and passes it directly to cuboid({ size: [dotSize * 0.8, dotSize * 0.8, depth] }). No code changes are needed — the geometry scales with the depth value automatically.
3. Update unit tests if they assert on numberDepth¶
Search for tests that assert numberDepth === 0.4 and update them to 0.5.
Phase 3: Increase Puzzle Connector Gap for 0.6mm Nozzle (1 hour)¶
Priority: P0 | Impact: Critical | Dependencies: None
The edge-puzzle connector gap must be increased to compensate for the wider extrusion lines from a 0.6mm nozzle.
1. Problem analysis¶
The current gap: 0.15 in DEFAULT_EDGE_PUZZLE_PARAMS provides 0.15mm clearance per side between male and female connector parts. This was tuned for 0.42mm line width (0.4mm nozzle). With 0.65mm line width:
- The bridge (male Y = 1.2mm) prints as ~2 perimeters at 0.65mm = ~1.3mm actual width
- This leaves only ~0.1mm clearance per side in the female socket (1.5mm - 1.3mm) / 2
- Any slight over-extrusion makes the fit too tight
2. Make the gap nozzle-dependent¶
The gap should be configurable per nozzle size rather than hardcoded globally, since 0.4mm nozzle prints still need the tighter 0.15mm gap. There are two approaches — choose the simpler one:
Option A (simpler — recommended): Add a EDGE_PUZZLE_PARAMS_06 constant in libs/gridflock-core/src/lib/defaults.ts alongside the existing DEFAULT_EDGE_PUZZLE_PARAMS:
export const EDGE_PUZZLE_PARAMS_06: EdgePuzzleParams = {
count: 1,
tabSize: [10, 2.5],
bridgeSize: [3, 1.2],
gap: 0.25,
heightFemale: 2.25,
};
Then update gridflock-pipeline.service.ts to select the appropriate edge puzzle params based on the nozzle diameter in print settings:
const edgePuzzle = printSettings.nozzleDiameter >= 0.6
? EDGE_PUZZLE_PARAMS_06
: DEFAULT_EDGE_PUZZLE_PARAMS;
Option B (more flexible): Add edgePuzzleGap to TenantPrintSettings and pass it through the pipeline. This allows per-tenant tuning but adds more complexity.
3. Verify intersection-puzzle connectors¶
Intersection-puzzle connectors use SVG-based geometry with a fit parameter (0 = loose, 1 = tight, default 0.5). Review whether the intersection-puzzle geometry has features similarly affected by wider line widths. If so, reduce the fit value for 0.6mm nozzle (e.g., fit: 0.3 for a looser fit).
Check libs/gridflock-core/src/lib/geometry/intersection-puzzle.ts for how fit is applied and whether it provides enough clearance at 0.65mm line width.
4. Physical fit test¶
This phase requires a physical validation print before merging to production. Print two adjacent plates with the new 0.6mm profile and 0.25mm gap, and verify:
- Connectors slide together without excessive force
- Connectors hold firm without falling apart
- Both intersection-puzzle and edge-puzzle types fit correctly
If the fit is still too tight, increase gap to 0.30mm. If too loose, reduce to 0.20mm.
Phase 4: Update Default Print Settings (1 hour)¶
Priority: P0 | Impact: Critical | Dependencies: Phases 1, 3
Update DEFAULT_PRINT_SETTINGS in apps/gridflock-service/src/gridflock/constants.ts to use the new 0.6mm nozzle profiles as the default.
1. Update constants.ts¶
/** Default print settings for Bambu Lab A1 with 0.6mm nozzle */
export const DEFAULT_PRINT_SETTINGS = {
printerModel: 'bambu-lab-a1',
bedSize: [256, 256] as [number, number],
nozzleDiameter: 0.6,
layerHeight: 0.28,
filamentType: 'PLA',
infillPercentage: 10,
wallLoops: 2,
topLayers: 3,
bottomLayers: 3,
supportEnabled: false,
machineProfilePath: '/profiles/bambu-a1/machine_06.json',
processProfilePath: '/profiles/bambu-a1/process_028_06.json',
filamentProfilePath: '/profiles/bambu-a1/filament_pla_06.json',
};
Changes:
- nozzleDiameter: 0.6 (vs 0.4)
- layerHeight: 0.28 (vs 0.20)
- infillPercentage: 10 (vs 15)
- topLayers / bottomLayers: 3 (vs 4)
- All three profile paths updated to the _06 variants
2. Update the Prisma seed¶
Update prisma/seed.ts to seed the gridflock.print_settings SystemConfig with the new defaults. Search for gridflock.print_settings in the seed file and update the value object to match the new DEFAULT_PRINT_SETTINGS.
3. Existing tenants¶
Existing tenants with gridflock.print_settings already stored in SystemConfig will not be affected — they retain their explicitly configured settings. Only new tenants (or tenants without explicit settings) will pick up the new defaults via loadTenantPrintSettings() fallback.
If you want to migrate existing tenants to the new profiles, create a one-off Prisma migration script or update SystemConfig entries directly. This is optional and out of scope for this prompt.
Phase 5: Preserve 0.4mm Profiles for Backward Compatibility (30 min)¶
Priority: P1 | Impact: Medium | Dependencies: Phase 4
The existing 0.4mm profiles must remain available for tenants who still use a 0.4mm nozzle.
1. Keep existing profile files unchanged¶
Do NOT modify or remove:
- deployment/slicer/profiles/bambu-a1/machine.json
- deployment/slicer/profiles/bambu-a1/process_020.json
- deployment/slicer/profiles/bambu-a1/process_016.json
- deployment/slicer/profiles/bambu-a1/filament_pla.json
These remain available for tenants whose SystemConfig points to them.
2. Document the available profile sets¶
Add a README to the profiles directory at deployment/slicer/profiles/bambu-a1/README.md:
# Bambu Lab A1 Slicer Profiles
## 0.6mm Nozzle (default — fastest for GridFlock plates)
| File | Type | Description |
|------|------|-------------|
| `machine_06.json` | Machine | A1 with 0.6mm nozzle |
| `process_028_06.json` | Process | 0.28mm layer height, optimized for speed |
| `filament_pla_06.json` | Filament | PLA with 28 mm³/s volumetric flow |
Estimated print time for a standard GridFlock plate: **~15–20 min**
## 0.4mm Nozzle (legacy — higher detail)
| File | Type | Description |
|------|------|-------------|
| `machine.json` | Machine | A1 with 0.4mm nozzle |
| `process_020.json` | Process | 0.20mm Standard layer height |
| `process_016.json` | Process | 0.16mm Optimal layer height |
| `filament_pla.json` | Filament | PLA with 21 mm³/s volumetric flow |
Estimated print time for a standard GridFlock plate: **~53 min** (0.20mm) / **~65 min** (0.16mm)
Phase 6: Validation and Testing (1–2 hours)¶
Priority: P0 | Impact: Critical | Dependencies: Phases 1–4
1. Slicer profile validation¶
Test that the slicer container accepts the new profiles and produces valid 3MF output:
# Build and start the slicer container
docker compose -f deployment/staging/docker-compose.yml up -d slicer
# Verify profiles are listed
curl http://localhost:3010/profiles | jq '.[] | select(.name | contains("06"))'
# Slice a test STL with the new profiles
curl -X POST http://localhost:3010/slice \
-F "stl=@/path/to/test-grid-plate.stl" \
-F "machineProfile=/profiles/bambu-a1/machine_06.json" \
-F "processProfile=/profiles/bambu-a1/process_028_06.json" \
-F "filamentProfile=/profiles/bambu-a1/filament_pla_06.json" \
-o test_output.3mf
# Verify the output is a valid 3MF (ZIP with gcode inside)
unzip -l test_output.3mf
2. Verify number readability in the sliced output¶
Extract the gcode from the output 3MF and verify the first layers contain the plate number geometry:
unzip -p test_output.3mf Metadata/plate_1.gcode | head -200
Check that the plate number area on layer 1 and 2 shows extrusion moves (the embossed pocket should be visible as an area without extrusion on the first layer, with extrusion resuming by layer 2).
3. Compare print time estimates¶
Extract the estimated print time from the sliced output and compare with the current 0.4mm profile:
# Current 0.4mm profile
unzip -p current_output.3mf Metadata/slice_info.config | grep prediction
# Expected: ~3200 seconds (53 min)
# New 0.6mm profile
unzip -p test_output.3mf Metadata/slice_info.config | grep prediction
# Expected: ~900–1200 seconds (15–20 min)
4. Connector fit validation¶
Print two adjacent plates (e.g., plate 1 and plate 2 of a 2×1 grid) with the new 0.6mm profile and verify puzzle connector fit:
- Edge-puzzle connectors: male tab slides into female socket without excessive force
- Intersection-puzzle connectors: pieces interlock securely
- Connectors hold firm under normal handling (no fall-apart)
- Test with both the 0.25mm gap setting and, if needed, 0.20mm or 0.30mm
Document the final validated gap value. If it differs from 0.25mm, update the EDGE_PUZZLE_PARAMS_06 constant accordingly.
5. Run existing unit tests¶
pnpm nx run gridflock-core:test
pnpm nx run gridflock-service:test
✅ Validation Checklist¶
Slicer Profiles¶
-
deployment/slicer/profiles/bambu-a1/machine_06.jsonexists withnozzle_diameter: ["0.6"] -
deployment/slicer/profiles/bambu-a1/process_028_06.jsonexists withlayer_height: "0.28",line_width: "0.65" -
deployment/slicer/profiles/bambu-a1/filament_pla_06.jsonexists withfilament_max_volumetric_speed: ["28"] -
compatible_printersin process and filament profiles matches machine profile name - Slicer container starts and lists the new profiles at
GET /profiles - Slicer produces a valid 3MF when slicing with the new profiles
- Existing 0.4mm profiles (
machine.json,process_020.json,filament_pla.json) are untouched
Number Readability¶
-
numberDepthinlibs/gridflock-core/src/lib/defaults.tsupdated to0.5 - Sliced output with 0.6mm/0.28mm profile shows number pocket in first 2 layers of gcode
- Unit tests updated if they assert on
numberDepth
Puzzle Connector Fit¶
-
EDGE_PUZZLE_PARAMS_06constant created inlibs/gridflock-core/src/lib/defaults.tswithgap: 0.25 - Pipeline selects edge puzzle params based on nozzle diameter (0.6mm → wider gap)
- Intersection-puzzle
fitparameter reviewed for 0.65mm line width compatibility - Physical fit test completed: two plates printed and connected with 0.6mm nozzle profile
- Final gap value documented (0.20mm / 0.25mm / 0.30mm — based on physical test)
- Unit tests added for nozzle-dependent edge puzzle param selection
Default Settings¶
-
DEFAULT_PRINT_SETTINGSinapps/gridflock-service/src/gridflock/constants.tsupdated to 0.6mm nozzle paths -
nozzleDiameter,layerHeight,infillPercentage,topLayers,bottomLayersupdated -
prisma/seed.tsupdated with new default settings - Existing tenants with explicit
SystemConfigentries are NOT affected (backward compatible)
Print Time¶
- Estimated print time for a standard GridFlock plate is under 25 minutes with the new profile
- This represents at least a 2x improvement over the current ~53 minutes
Build & Tests¶
-
pnpm nx run gridflock-core:testpasses -
pnpm nx run gridflock-service:testpasses -
pnpm nx run-many -t build --allpasses -
pnpm nx run-many -t lint --allpasses - No
any,ts-ignore, oreslint-disableintroduced
🚫 Constraints and Rules¶
MUST DO¶
- Create all three profile files (machine, process, filament) for the 0.6mm nozzle
- Use BambuStudio's built-in profile name
"Bambu Lab A1 0.6 nozzle"for the machineinheritsfield — this ensures BambuStudio CLI resolves the full machine configuration correctly - Keep line widths proportional to nozzle diameter (0.65mm ≈ 108% of 0.6mm nozzle)
- Set
filament_max_volumetric_speedconservatively at28mm³/s — this is safe for PLA on the A1; do NOT use values above 33 - Keep
initial_layer_speedat50mm/s — first layer adhesion is critical for large flat parts - Preserve all existing 0.4mm profiles unchanged
- Update
DEFAULT_PRINT_SETTINGSto point to the new profiles - Increase
numberDepthto0.5mm - Increase edge-puzzle
gapfor 0.6mm nozzle to compensate for wider extrusion lines (start with0.25mm, validate physically) - Perform a physical fit test with puzzle connectors before merging to production — the 0.15mm gap tuned for 0.4mm nozzle WILL be too tight at 0.65mm line width
MUST NOT¶
- Delete or modify existing 0.4mm profile files
- Change the slicer API contract (
POST /sliceparameters) - Modify the
SlicerClientinlibs/service-common/— it already accepts arbitrary profile paths - Change the
GridFlockParamstype definition —numberDepthis already typed asnumber - Set
layer_heightabove0.28mmfor the default profile — 0.28mm is the sweet spot for 0.6mm nozzle (good speed + number readability); 0.36mm would require 0.5mm+ emboss depth - Override tenant-specific
SystemConfigsettings — tenants with explicit profiles keep their configuration - Use
any,ts-ignore, oreslint-disable
SHOULD DO (Nice to Have)¶
- Add a
process_020_06.jsonfor tenants who want 0.6mm nozzle with 0.20mm layers (detailed mode with a 0.6mm nozzle) - Consider adding a
process_036_06.jsonfor maximum speed when number readability is not needed - Add profile metadata (estimated print time range) to the slicer's
GET /profilesresponse - Log the selected profile paths when slicing starts in
gridflock-pipeline.service.tsfor debugging
📚 Key References¶
Existing Profile Files:
- Machine: deployment/slicer/profiles/bambu-a1/machine.json
- Process (0.20mm): deployment/slicer/profiles/bambu-a1/process_020.json
- Filament: deployment/slicer/profiles/bambu-a1/filament_pla.json
Slicer Pipeline:
- Slicer API: deployment/slicer/api/routes/slice.js
- Slicer client: libs/service-common/src/lib/service-client/slicer.client.ts
- Pipeline service: apps/gridflock-service/src/gridflock/gridflock-pipeline.service.ts (lines 137–140, 337–354)
- Print settings constants: apps/gridflock-service/src/gridflock/constants.ts
- Prisma seed: prisma/seed.ts
Grid Numbering:
- Defaults: libs/gridflock-core/src/lib/defaults.ts (line 56: numberDepth)
- Numbering geometry: libs/gridflock-core/src/lib/geometry/numbering.ts
- Generator integration: libs/gridflock-core/src/lib/generator.ts (lines 126–134)
Puzzle Connectors:
- Edge-puzzle geometry: libs/gridflock-core/src/lib/geometry/edge-puzzle.ts
- Intersection-puzzle geometry: libs/gridflock-core/src/lib/geometry/intersection-puzzle.ts
- Edge-puzzle defaults: libs/gridflock-core/src/lib/defaults.ts (DEFAULT_EDGE_PUZZLE_PARAMS)
- OpenSCAD reference: docs/gridflock-reference/gridflock.scad (lines 54–59)
- Critical dimensions: bridge Y = 1.2mm (male), gap = 0.15mm (current), female socket = 1.5mm
Measured Data (from plate 2 of a sample order): - Current 0.4mm/0.20mm print time: 53 minutes (3201 seconds) - Sample plate dimensions: 101.58 x 225.76 x 4.4mm (varies by grid size and drawer dimensions) - Filament usage: 28.98g / 9.59m - Number feature: 5.5 x 3.1mm, 0.92mm stroke width, dot-matrix 5x7 font - Number position: bottom face corner, engraved
END OF PROMPT
This prompt adds a 0.6mm nozzle slicer profile set for the Bambu Lab A1, optimized for maximum GridFlock plate print speed. The 0.28mm layer height with 0.65mm line widths and 28 mm³/s volumetric flow reduces print time by ~3x. The plate identification number remains readable by increasing the emboss depth from 0.4mm to 0.5mm. Puzzle connector fit is preserved by increasing the edge-puzzle gap from 0.15mm to 0.25mm for the wider extrusion lines, with a mandatory physical fit test before production rollout. Existing 0.4mm profiles are preserved for backward compatibility and per-tenant override via SystemConfig.