Skip to content

Releases: richardofortune/cadloop

cadloop 0.3.0

Choose a tag to compare

@richardofortune richardofortune released this 04 Aug 10:27

The package no longer carries one project's model checks. render can keep a picture instead of only handing it back.

Changed — affects callers written against 0.2.0

  • cadloop-verify has been removed. It ran the spirograph example's own checks, and the gear half ran off constants compiled into the package — so on an install with no model on disk it printed 14/14 parts mesh cleanly about parts the caller did not have. Those checks now live in the repository beside the model they describe:
    git clone https://github.com/richardofortune/cadloop && cd cadloop
    pip install -e ".[verify]"
    python models/verify_spirograph.py
    
    The command still exists in this release as a stub that explains the move and exits 2, so a Makefile or CI step calling it stops rather than appearing to pass. The stub goes away in 0.4.0.
  • cadloop no longer pulls in shapely. pip install cadloop now installs mcp and nothing else. The verify extra remains, for the worked example.

Added

  • render writes images. A .png output is kept in the workspace rather than returned, taking the same camera, imgsize, projection, colorscheme and full_render options preview has. Use preview to look at a model, render when the image is the artefact. Since render already accepted source as text, the older half of a before-and-after is git show <rev>:model.scad piped in — no checkout, no temp file.

Fixed

  • docs/known-issues.md described the Creality Print CLI crash as specific to macOS and 7.1.1. It is neither — it reproduces on 7.2.0 under Windows 11, and does not depend on 3MF input the way the upstream issue title suggests.

Full changelog: https://github.com/richardofortune/cadloop/blob/main/CHANGELOG.md

v0.2.0

Choose a tag to compare

@richardofortune richardofortune released this 30 Jul 11:21

One call now takes a model to plates a printer can run, and every plate is
proved to land on the bed before you are told it is ready.

Added

  • make_printable(source, parts=None) — renders each part, measures it
    against the bed, packs what fits onto as few plates as it can, slices them,
    and checks that every extruding move in the resulting G-code is inside the
    printable area. Returns the full report plus a rendered summary string.
    Two calls take spirograph.scad to five print-ready plates; the same work
    previously took roughly forty.
  • setup_printer() and machine_info() — the printer is settled once and
    reused, so no ordinary call needs a profile path.
  • check_bed_fit gained height_checked, and a reason on its main return.

Changed — read this if you wrote against 0.1.0

  • check_bed_fit may answer null where it used to answer true. A part
    whose footprint fits, on a printer whose profile declares no
    printable_height, is now unproven rather than passed. Two axes out of three
    is not proof.
  • check_bed_fit().bed no longer carries a z_mm key when the height is
    unknown.
    0.1.0 emitted "z_mm": null. Read it with bed.get("z_mm").
  • check_bed_fit().bed is now the merged bed — the record's cached bed
    under the live profile, field by field.
  • check_bed_fit no longer raises on a partial bed. It refuses with a
    reason instead of a KeyError.
  • reason is populated when the answer is false, not only when it is null.

machine_info().derived.bed still emits "z_mm": null — the stored record
keeps the profile's own shape.

Notes

  • mcp is pinned <2. Version 2.0.0 removed mcp.server.fastmcp entirely and
    there is no drop-in replacement yet.
  • The pipeline never edits your model. It chooses which plate a part goes on and
    where it sits, and it turns a part only where it would not otherwise fit — and
    says so when it does.

Full changelog: https://github.com/richardofortune/cadloop/blob/main/CHANGELOG.md

v0.1.0

Choose a tag to compare

@richardofortune richardofortune released this 27 Jul 21:23

First release.

Two MCP servers and a checker: a closed loop from parametric OpenSCAD source
through verification and bed-fit to G-code, with no GUI at any point.

openscad exposes check, echo, render, measure and preview.
slicer exposes slicer_info, list_profiles, check_bed_fit,
slice_model, slice_summary and extract_gcode. cadloop-verify is the
reference example of the verification step neither tool provides.

Install:

pip install "cadloop[verify]"

Notes for this release:

  • check_bed_fit reads printable_area in both the forms stock profiles use,
    and follows inherits for the machines that carry no bed of their own. 469
    of the 473 machine profiles shipped with Creality Print 7.1.1 resolve; the
    other four define no bed anywhere in their chain and report why.
  • Creality Print's CLI does not work headless on macOS. On 7.1.1.4472 under
    macOS 26 every operation except --help segfaults in GUI bed setup called
    from the CLI path. Point SLICER_BIN at OrcaSlicer, Bambu Studio or
    ElegooSlicer there, or run Creality Print's CLI on Linux.
  • Tested against Python 3.10 through 3.13.