compose_body_with_features detects features but never booleans them from the body — hole missing in output STEP #53
Labels
No labels
blocked:needs-decision
blocked:preflight
bug
in-progress
in-progress
lint-cleanup
needs-decompose
quickfix
triage-approved
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Mark/pc2cad#53
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
compose_body_with_features identifies features but never booleans them from the body
What works
compose_body_with_features()inpc2cad_reconstruct.pycorrectly identifiesthe body primitive and classifies other primitives as features (hole, chamfer,
fillet, slot). The
Reconstructiondataclass carriesbody_primitive_indicesand a
featureslist with kind + primitive pairs.What doesn't work
The export path (
export_reconstruction/reconstruct_to_build123d) does notexecute the boolean subtraction. On
samples/strategy_plate_with_hole.ply:Visually confirmed: the pointcloud has a clear Ø20 through-hole (dark gap in
center-top), the STEP is a solid slab with no aperture.
The detection output is correct. The feature list exists. No boolean subtraction
ever happens between identification and export.
What's needed
reconstruct_to_build123d(reconstruction) -> build123d.Partmust:reconstruction.features:strategy_plate_with_hole.plymust report coverage ≥ 0.85AND visually show the hole present (center gap in both input and output)
Current workaround
The CLI
--mode autowith the output of this function does not enter theboolean path. The surface fix (#51 default=auto) works at the routing level
but the boolean path itself was never implemented downstream.
Verification gate
Fix landed at commit
88f8198on main.The boolean subtraction of features (hole, chamfer, fillet) from the body primitive is now implemented in
reconstruct_to_build123d(). Unit scaling is moved inside the function (not post-hoc applied to the final Solid) so analytic face types survive the cut and round-trip through STEP as real circles.Verification on
samples/strategy_plate_with_hole.ply:Exported body+features reconstruction (body=l_extrusion, features=1)