From 5465ff3417fa131dda91ce3566a6319ff27d8e8d Mon Sep 17 00:00:00 2001 From: Erlis Vidal Date: Fri, 23 Oct 2026 14:11:39 -0400 Subject: [PATCH 1/2] claim: topology.brep_p9 import owners Co-Authored-By: Claude Opus 5.5 (1M context) From 57473d19c619e1c897e8eff1164c741eff07324d Mon Sep 17 00:00:00 2001 From: Erlis Vidal Date: Fri, 23 Oct 2026 14:32:01 -0400 Subject: [PATCH 2/2] difftest: topology.brep_p9 owns imported geometry under the keys it queries with The shared import leaves edge curves unowned and owns face f's surface as 1 + f, while op 0 (FindInfiniteRegion) queries with BrepQuery::default() (arena keys), so its B-rep cache trees held no edges or faces. Own the geometry with util::own_arena_geometry and sync each face surface's tolerance, as the native B-rep and the api_queries import do. No case changes. Co-Authored-By: Claude Opus 5.5 (1M context) --- crates/difftest/src/units/topology_brep_p9.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/crates/difftest/src/units/topology_brep_p9.rs b/crates/difftest/src/units/topology_brep_p9.rs index cd4dfca50..ea757a945 100644 --- a/crates/difftest/src/units/topology_brep_p9.rs +++ b/crates/difftest/src/units/topology_brep_p9.rs @@ -152,6 +152,14 @@ fn rust(i: &Inputs, initial: &[f64]) -> Result { .get(2..) .ok_or_else(|| error("missing initial export"))?, )?; + // As the native B-rep: each edge owns its curve and each face its surface, under the + // arena keys op 0's `BrepQuery::default()` names them by (the import leaves curves + // unowned and owns face f's surface as `1 + f`), and a face-owned surface carries the + // face's tolerance. Without it the B-rep cache trees hold no edges or faces. + crate::util::own_arena_geometry(&mut b); + for f in b.faces().ids().collect::>() { + b.sync_face_surface_tolerance(f).map_err(|e| error(&e))?; + } // As the shim, after setup and export: `b->m_bEditingEnabled = editing`. b.set_editing_enabled(i.editing); let mut k = Kernel::default();