Releases: richardofortune/cadloop
Release list
cadloop 0.3.0
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-verifyhas 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 printed14/14 parts mesh cleanlyabout parts the caller did not have. Those checks now live in the repository beside the model they describe: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.git clone https://github.com/richardofortune/cadloop && cd cadloop pip install -e ".[verify]" python models/verify_spirograph.pycadloopno longer pulls in shapely.pip install cadloopnow installsmcpand nothing else. Theverifyextra remains, for the worked example.
Added
renderwrites images. A.pngoutput is kept in the workspace rather than returned, taking the samecamera,imgsize,projection,colorschemeandfull_renderoptionspreviewhas. Usepreviewto look at a model,renderwhen the image is the artefact. Sincerenderalready acceptedsourceas text, the older half of a before-and-after isgit show <rev>:model.scadpiped in — no checkout, no temp file.
Fixed
docs/known-issues.mddescribed 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
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 renderedsummarystring.
Two calls takespirograph.scadto five print-ready plates; the same work
previously took roughly forty.setup_printer()andmachine_info()— the printer is settled once and
reused, so no ordinary call needs a profile path.check_bed_fitgainedheight_checked, and areasonon its main return.
Changed — read this if you wrote against 0.1.0
check_bed_fitmay answernullwhere it used to answertrue. 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().bedno longer carries az_mmkey when the height is
unknown. 0.1.0 emitted"z_mm": null. Read it withbed.get("z_mm").check_bed_fit().bedis now the merged bed — the record's cached bed
under the live profile, field by field.check_bed_fitno longer raises on a partial bed. It refuses with a
reason instead of aKeyError.reasonis populated when the answer isfalse, not only when it isnull.
machine_info().derived.bed still emits "z_mm": null — the stored record
keeps the profile's own shape.
Notes
mcpis pinned<2. Version 2.0.0 removedmcp.server.fastmcpentirely 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
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_fitreadsprintable_areain both the forms stock profiles use,
and followsinheritsfor 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--helpsegfaults in GUI bed setup called
from the CLI path. PointSLICER_BINat OrcaSlicer, Bambu Studio or
ElegooSlicer there, or run Creality Print's CLI on Linux. - Tested against Python 3.10 through 3.13.