Skip to content

epic: CNC / laser / plotter (non-extrusion) toolpath coverage #189

Description

@sobechestnut-dev

Priority: this epic comes after the .bgcode decode epic. Larger scope — it touches the
IR move model, not just a container format.

Problem / outcome

Non-extrusion G-code (diode/GCode lasers, GRBL/LinuxCNC milling, pen plotters) parses geometry
correctly
but the FDM-shaped IR mis-classifies the actual work. Evidence gathered this session
(real LightBurn/GRBL laser + synthetic milling/plotter, run through the current parser):

Sample Productive moves classified as Tool state Notable loss
Laser (LightBurn/GRBL) 100% Travel, 0 Extrude dropped (M4/S)
Milling (GRBL/LinuxCNC) 17 Travel + 96 ArcSegment|Travel, 0 Extrude dropped (M3 S) G81 drill cycle → 0 geometry
Plotter (Z-pen) 100% Travel dropped (pen up/down)

The cut/draw/burn-vs-rapid distinction collapses universally (no extrusion E to key on); tool
power/state has no per-segment home; layers never fit. But the foundation is sound — arcs
faceted, bounds correct, capability model honest (unavailable, never fabricated).

Scope decision required FIRST (maintainer)

Is the project "cross-vendor toolpath" (CNC/laser/plotter in scope) or "FDM excellent + honest
degradation elsewhere"
? Founding docs lean broad; every DD to date is FDM-shaped. Decide before
committing implementation (scope-creep guard).

Scope (if in)

  • Additive IR move model: motion-command move-kind fallback when E is absent (a Cut/ToolEngaged
    bit — note MoveKind is already a bitflag, so it composes like ArcSegment does) + an optional
    modal tool-state channel (spindle/laser power, pen up/down). Same modal-state need as research(renderer): advanced color modes via modal-state channels (fan/temp/accel/jerk/PA/flow) #180
    (advanced color modes) — consider one shared design.
  • Canned-cycle expansion (G81–G89 drilling → real geometry).
  • New dialect family: GRBL / Smoothieware / Marlin-laser / GRBL-LPC (lasers); GRBL / LinuxCNC / Mach
    (milling); GRBL / servo pen plotters.
  • Coloring by feed/rapid/power; 2D overlap with E8 for rendering.

Non-goals (out by definition — not a gap)

  • DSP lasers (Ruida, Trocen, TopWisdom) — proprietary binary (.rd), not G-code.
  • EZCad2 galvo (fiber/CO2/UV) — proprietary .ezd, not G-code, different motion model.
  • G-code editing (a slicer/editor concern).

DD / RR / ADR gate

Gate: RR-NNN — Non-extrusion toolpath coverage (audit current behavior + scope decision) →
DD-NNN accepted. Evidence + probe scripts already exist as research notes.

Phased child-issue plan

RR + scope decision → additive move-model + modal tool-state channel → canned-cycle expansion →
GRBL/laser + milling/plotter dialects → non-extrusion coloring → matrix/docs → exit.

Tests / fixtures / benchmarks

Synthetic laser/milling/plotter fixtures (GRBL/LightBurn, GRBL/LinuxCNC, Z-pen) with expected
move-kind/tool-state; golden-equivalence; do NOT commit user-provided design files.

Risks & deferred work

False confidence about non-extrusion semantics; dialect breadth; keeping FDM behavior unchanged
(capability-gated). Servo-pen (M280) and inch-units (G20) variants for the corpus.

Milestone: Future · Depends on: E2, E4 (and overlaps E8 for 2D) · Blocking: none ·
Related: #180 (shared modal-state design).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions