Commit Graph

8 Commits

Author SHA1 Message Date
jyviko b1326e48d6 brep: an edge on a line, circle or ellipse carries the NURBS form SMLib holds it as
The edge mirror of a face's NURBS form: Edge::nurbs keeps the NURBS SMLib holds a conic as, and
the edge's interval and its pcurves' parameter are its. Edge::parameters is the curve every
evaluation at a parameter uses; curve says what the edge is. Nothing writes the form yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 02:28:51 -04:00
jyviko 206c53487e kernel: dead code the ports left behind, deleted
Every lib warning under --features smlib outside the files agents are editing
(assemble.rs, sweep_path.rs) pointed at code nothing calls any more:
- body: shell_nesting;
- boolean_record: of_pair and its Traced alias;
- planar_regularize: the generated-wall regularization (and its branches in the
  certified one, which was its only other path); planar_sources:
  with_shell_planar_sources;
- plane_fit: plane_through, EdgeSampler, planar_face, plane_frame (the patch is
  fill's); only loop_area is left;
- polyhedron: solve3; prism: wall_along; offset: Surf::normal;
- record: regions, region; shell_groups: groups, parents and their limits;
- splitface: side_of_point, Analytic, analytic_face, face_sides, canonical;
- spline_conv.rs, all of it (surfaces builds NURBS records); an unused import in
  tess/uv.rs.
The tests of deleted items go with them: prism's wall_along test, the shell
grouping test in body_lump_tests, and the generated-regularization assertion in
regularization_protection_tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017itGh5fpMEousnZ91cYcVt
2026-10-27 02:28:50 -04:00
jyviko 5c16e8dd10 kernel: coplanar faces joined by SMLib's merge_faces, the record read from the body
planar_regularize now calls the fork's smlib_merge_faces as it is
(SmBrep::RemoveTopologicalEdgesAndVertices with the edges under the kept points
staying): every edge the lineage does not choose is kept by a point at its
middle, so SMLib joins the faces across the chosen ones only. A body with more
kept edges than one call takes stays as it is, as the other budgets leave it.

splitface, planar_sources and planar_regularize read the body's record in place
(Body::record) and a face's use from Body::face_forward; the two-lump test body
is Body::from_record of the two records side by side.

(not built: base in progress)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017itGh5fpMEousnZ91cYcVt
2026-10-27 02:28:49 -04:00
jyviko 585334a292 kernel: planar source lineage on the record, coplanar faces joined by SMLib
planar_sources reads each face's oriented plane from the body's record
(actual_planes: the surface's plane, turned with the face's use) instead of
truck faces; the lineage rules are unchanged. planar_regularize picks the edges
to remove as before (two faces of one shell on one certified plane, from one
source unless generated walls, off every split line) from the record's edge
uses, and SMLib joins the faces across them (Brep::merge_faces: each edge
removed where SmEdge::IsTopological finds the faces' surfaces coincide), so the
merged face is SMLib's and the history its own tags (Merged), composed through
the body's. SmBrep::Simplify is not this operation: it refits curves and
surfaces by knot removal and sampling.

The planar_sources tests read face points, edges and planes from the record;
the two-lump body is built from the two records side by side, each face given
the source of its own operand's face on that plane. Deleted:
planar_regularize's alternate_adjacency_path_cannot_remove_protected_internal_edge,
a test of the truck face builder merged_face (only listed edges are removed now,
so no other path can remove a protected one).

(not built: base in progress)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017itGh5fpMEousnZ91cYcVt
2026-10-27 02:28:49 -04:00
bherbruck 296683229d Rename SolveCraft to SolidCraft everywhere, with compatibility shims (#389)
* WIP deep rename (not for push)

* WIP2

* WIP3

* WIP4 wxs fix

* rustfmt

* Rename the remaining identifiers in merged crash-report code

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 17:17:01 -04:00
Iraklis Kourtis 08d797235d feat(kernel): history across coalesced stepped walls (#136)
A cut of stepped prisms sews a wall over one segment through successive
slabs as one face, and the generated planar walls are then joined on
their common supports. Until now such a piece carried no history.

- prism_lineage: a sewn wall records what it is over in each slab it
  spans (Spec::Wall { levels, slabs }), so a coalesced wall comes from
  the operand walls under it in every slab
- the sewn piece's history is attached before the joining and carried
  through it (Built::Traced); planar_regularize composes the history of
  the body it joins with the join itself
- a composed face is Split only where record::mark_shared_split finds an
  origin under several faces; an inner Split alone no longer makes one
- Body::same ignores history: an operation that leaves a body as it is
  gives the same body, carrying that operation's history

The two boolean history tests that waited for this run again, and the
coalesced and regularized step cuts are covered.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J53sR6gEaVt56soFDpTck8
2026-10-12 11:52:53 -04:00
bherbruck c53aff7592 Fix artificial Shell wall splits on stepped bodies 2026-10-11 22:32:53 -04:00
bherbruck ef8f6ca6f9 fix: restore shell and cut wall topology in 0.2.1 2026-10-11 15:17:05 -04:00