Repository navigation
wire: B-rep ray fires and BrepQuery::classify on the single-pass live solve - #699
Merged
Merged
Conversation
…e solve Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
topology::brep::p2::ray_fire and BrepQuery::classify's boundary solve classified faces read-only, so an edge use without a UV trim stopped them at SmEdgeuse::GetOrCreateUVTrimCurve (unprepared read-only topology), where upstream makes the trim inside the loop walk. Both now solve through query::brep::ray::solve_mutable_brep_point (tangency-labs#613's single-pass live solve on the caller's B-rep), as region nesting already does. A classifier's shared target keeps the read-only boundary solve: its copy is not the caller's B-rep. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Continues #619, which closed itself when #685 merged (its only commit was the empty claim, carried in through #613).
What. Since #613/#685, shell ray fires and region nesting classify faces in one pass on the live B-rep (
query::brep::ray::live,LiveRayObjects), and missing UV trims are made lazily in upstream order. Two B-rep entries still solved read-only, so an edge use without a UV trim stopped them atSmEdgeuse::GetOrCreateUVTrimCurve (unprepared read-only topology), where upstream makes the trim inside the loop walk:topology::brep::p2::ray_firenow solves throughquery::brep::solve_mutable_brep_point(madepub(crate)).BrepQuery::classify's boundary solve does the same when the target is the caller's B-rep (Target::Own). ABrepClassifier's shared target keeps the read-only solve: its copy is not the caller's B-rep (site 5 on fix: B-rep copies keep geometry owners #681).Test.
query::brep::tests::ray_fires_make_missing_uv_trims_on_the_callers_brep: acreate_boxbox with its UV trims stripped, classified under its own keys. The inside point classifies to the solid and the box has trims afterwards. On main it stops at the trim refusal. The boundary solve has no unit test of its own: on a box an edge or vertex point needs no trim, and a point inside a face reaches thetopology.face_p2face-handle stub first (#697). Its evidence is difftestquery.brependcap_face_mid_bnd/endcap_face_corner_bndbelow.Difftest (full sweep, base 9013227 vs this branch): 0 failed on both sides; 63 cases deferred → pass, no other transitions.
The 61 face-handle and
GetTolerancecases are reached through the same two solves: they stop at those stubs on the read-onlyBrepObjectsand pass on the live adapter (LiveRayObjects). I have not traced each one further.Not in this PR. The remaining read-only-trim refusals need other entry points:
query.api_queries(27; its functions take&dyn TopologyObjectsover the runner's B-reps, with no&mut Brepto lend) andboolean.topology_intersector_p2(1).Checks (VM): fmt; clippy with and without
difftest/cpp;cargo test -p solidcore(2080 passed); wasm;cargo test -p difftest --features cpp; the full sweep above.🤖 Generated with Claude Code