Skip to content

wire: SmBrep::Transform (blend.hcr, merge_p1 runner) and UpdateVertexEdgeIntervals (brep_p5) - #679

Merged
bherbruck merged 4 commits into
tangency-labs:mainfrom
brett19:wire/brep-transform-hcr-merge
Oct 23, 2026
Merged

bherbruck merged 4 commits into
tangency-labs:mainfrom
brett19:wire/brep-transform-hcr-merge

Conversation

@brett19

@brett19 brett19 commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Wires three remaining stubs to code that is already ported:

  • blend::hcr: Hcr::with_transform now transforms the scene copy with topology::brep::p5::transform_with_notifications, as SmHCR::ConstructorInit does with Transform(m_vViewTransform) (no scale, bScaleTol=TRUE, status ignored). It notifies through the scene's environment.
  • boolean.merge_p1 runner: the SmTemporaryBrepTransform probe (op 7) applies and restores its shift through topology::brep::p5::transform.
  • topology::brep::p5: CombineCoincidentVertices now ends with the ported topology::brep::p1::update_vertex_edge_intervals under the caller's notification environment (SER, as upstream), replacing the UNPORTED(topology.brep_p1) stub. The change is a few lines at one call site.
  • boolean.topology_intersector_p3 runner: the shim re-walks both B-reps after the merge (walk_all) and numbers every handle and the state by that walk. Objects a squeeze deleted read as unknown. The Rust side now does the same with Canon::reachable (from the boolean.merge_p1 runner), so deleted records, which the Rust arena keeps unlinked, are unknown on both sides. This is a harness representation fix; no tolerance or case changed. Without it, the 6 newly reached cases differed only in arena counts and handle numbering.

Overlap: #613 (henlamp) and #678 (claim on topology.brep_p5) both touch topology/brep/p5.rs. This PR's p5 change is limited to the combine_with_notifications tail and the removed stub.

difftest (before = main CI d7abe91, after = this branch)

boolean.merge_p1                 248: 241 pass, 7 deferred  ->  243 pass, 5 deferred, 0 failed
topology.brep_p5                 797: 787 pass, 10 deferred ->  795 pass, 2 deferred, 0 failed
boolean.topology_intersector_p2  910: 775 pass, 135 deferred -> 788 pass, 122 deferred, 0 failed
boolean.topology_intersector_p3  271: 166 pass, 105 deferred -> 172 pass, 99 deferred, 0 failed
topology.brep_p10               1404: 1154 pass, 233 deferred -> unchanged (3 cases now defer later at intersect.curve_class_p4 GetLoopCrossings)
blend.hcr                        434: 431 pass, 3 deferred  ->  unchanged (the runner builds scenes with Hcr::from_scene)

No unit is promoted: each still has other deferrals.

🤖 Generated with Claude Code

brett19 and others added 3 commits October 23, 2026 15:00
… runner

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- blend::hcr: Hcr::with_transform transforms the scene copy with
  topology::brep::p5::transform_with_notifications (no scale, scaled
  tolerances) under the scene's notification environment, as
  SmHCR::ConstructorInit.
- boolean.merge_p1 runner: the SmTemporaryBrepTransform probe applies and
  restores its shift through topology::brep::p5::transform (+2 pass).
- topology::brep::p5: CombineCoincidentVertices ends with the ported
  topology.brep_p1 UpdateVertexEdgeIntervals (SER, as upstream) instead of
  the UNPORTED stub (+8 brep_p5, +13 topology_intersector_p2,
  +6 topology_intersector_p3; 3 brep_p10 cases now defer further on).
- boolean.topology_intersector_p3 runner: handles and state are numbered
  by a post-merge re-walk of both B-reps (Canon::reachable, the shim's
  walk_all), so records a squeeze deleted, which the Rust arena keeps
  unlinked, read as unknown on both sides.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cr-merge

# Conflicts:
#	plan/units/blend.hcr.toml
#	plan/units/boolean.merge_p1.toml
#	plan/units/topology.brep_p10.toml
#	plan/units/topology.brep_p5.toml
@brett19 brett19 changed the title wire: SmBrep::Transform into blend.hcr's scene and the boolean.merge_p1 runner wire: SmBrep::Transform (blend.hcr, merge_p1 runner) and UpdateVertexEdgeIntervals (brep_p5) Oct 23, 2026
…transform

The model fixture's hcr() now builds the transformed scene and stops at the
fixture's missing retained HCR service instead of the SmBrep::Transform stub.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@brett19
brett19 marked this pull request as ready for review October 23, 2026 23:10
@bherbruck
bherbruck added this pull request to the merge queue Oct 23, 2026
Merged via the queue into tangency-labs:main with commit 9482437 Oct 23, 2026
7 checks passed
brett19 added a commit to brett19/solidcore-fork that referenced this pull request Oct 23, 2026
…ll ray face geometry branch

Only conflict: plan/units/topology.brep_p10.toml notes; kept tangency-labs#679's
UpdateVertexEdgeIntervals update and tangency-labs#613's update text. Code merged
cleanly (topology/brep/p5.rs included).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants