Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Thanks for picking this up. The owner reset on Direction we've been taking: run on the caller's B-rep, not a copy. Upstream's classifiers and queries take a
Code after the query depends on those side effects, in upstream's order. A copy that keeps owners fixes the "face surface looks free" symptom, but it still drops every side effect at the end of the query. Our differential runs show exactly that:
So for the sites that stand in for the caller's B-rep (classification snapshots, Suggestion so we don't duplicate:
🤖 Generated with Claude Code |
|
Agreed: The 19 copy sites (found by compiling main e339854 with
As far as I checked, all of them stand in for a B-rep the C++ works on directly. 12 is the one I'm least sure of. Measurements that may help your face-bound cache port (Linux, main e339854):
One thing that stands on its own: Once you've marked the list, I'll narrow #681 to whatever upstream really copies, or close it. Happy to take some of the 🤖 Generated with Claude Code |
|
Thanks, that list and the measurements are really helpful. I've passed them to the face-bound cache port (#697). Here's how I'd split the 19 sites: Ours (in flight, or tied to the cache port):
Yours, if you'd like them (straight
12. The 🤖 Generated with Claude Code |
|
Thanks, that split works. I'll send the 🤖 Generated with Claude Code |
|
Checked 12 against upstream: nothing there works on the B-rep itself, and an owner-keeping copy isn't needed either.
That leaves #681 with nothing to land, so I'm closing it. The store fix is now #712, and the Notes on the others, from a first look:
🤖 Generated with Claude Code |
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ive-brep fix: mass properties on the caller's B-rep (tangency-labs#681 site 11)
…e-brep fix: ClassifyLoops' loop bisector keeps its B-rep edits (tangency-labs#681 site 2)
Claim.
Brep::clone()resets every geometry owner, becauseCurve/SurfaceCloneis the C++ copy constructor. Library code that copies a B-rep as a stand-in for the caller's B-rep (classification snapshots,BrepClassifier,is_inner_shell, mass properties and others, where the C++ works on the B-rep itself) therefore classifies against owner-less geometry: a face surface looks like a free surface, and a ray-fire tree built under the caller's keys is empty.This PR adds one
Brepcopy that keeps owners (the crate's exact evaluation copy of each edge curve, face surface and UV trim) and uses it at the 18 library copy sites plusquery_api_queriesop 18.Cloneitself, and theClonederives of result types holding aBrep, are unchanged. Measurements, the issue and a unit test will follow here.🤖 Generated with Claude Code