diff --git a/Cargo.lock b/Cargo.lock index ffb0b8cc34..3e6f76e479 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4054,7 +4054,7 @@ dependencies = [ [[package]] name = "solidcore" version = "0.0.1" -source = "git+https://github.com/tangency-labs/solidcore?rev=f020a06681ef1ef34294b5b0e424ac15dc788ad5#f020a06681ef1ef34294b5b0e424ac15dc788ad5" +source = "git+https://github.com/tangency-labs/solidcore?rev=3546c9bc3f1309018c8d47d1ab55843a518d3abf#3546c9bc3f1309018c8d47d1ab55843a518d3abf" dependencies = [ "thiserror 2.0.21", ] diff --git a/Cargo.toml b/Cargo.toml index a1903d2617..363dec8b2b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,7 @@ solidcraft-3dx-client = { path = "crates/threedx-client" } # they reach parity (crates/smlib/src/route.rs). Pinned; move the rev on its own commit. For a # local checkout, add `[patch."https://github.com/tangency-labs/solidcore"] solidcore = { path = # "../solidcore/crates/solidcore" }` to a `.cargo/config.toml` outside the repository. -solidcore = { git = "https://github.com/tangency-labs/solidcore", rev = "f020a06681ef1ef34294b5b0e424ac15dc788ad5" } +solidcore = { git = "https://github.com/tangency-labs/solidcore", rev = "3546c9bc3f1309018c8d47d1ab55843a518d3abf" } # foundation thiserror = "2" diff --git a/crates/smlib/src/core/convert_tests.rs b/crates/smlib/src/core/convert_tests.rs index 0e9e355a50..557dab21eb 100644 --- a/crates/smlib/src/core/convert_tests.rs +++ b/crates/smlib/src/core/convert_tests.rs @@ -160,8 +160,8 @@ macro_rules! primitive { primitive!(box_, "box"); primitive!(cylinder, "cylinder"); primitive!(sphere, "sphere", - volume: ignore = "solidcore#1437: trim_boundary_seam_wrap zeroes a sphere's volume", - round_trip: ignore = "solidcore#1437: the record comes back the same, but trim_boundary_seam_wrap zeroes its volume"); + volume: ignore = "solidcore#1435: a sphere's volume at 1e-8 is 2e-9 off", + round_trip: ignore = "solidcore#1435: the record comes back the same; its volume at 1e-8 is 2e-9 off"); primitive!(cone, "cone", round_trip: ignore = "solidcore#1435: the record comes back the same, but its volume at 1e-8 is 1.4e-9 off (the C++ kernel 1.1e-11 on the same arrays); the side face's precise properties do not split at the surface's knots, fork 08d9a14 (solidcore PR #1456)"); primitive!(frustum, "frustum"); diff --git a/crates/smlib/src/core/measure_tests.rs b/crates/smlib/src/core/measure_tests.rs index 1d743f92d5..1ab40b268e 100644 --- a/crates/smlib/src/core/measure_tests.rs +++ b/crates/smlib/src/core/measure_tests.rs @@ -266,7 +266,7 @@ macro_rules! primitive { primitive!(box_, "box"); primitive!(cylinder, "cylinder", area: ignore = "solidcore#1435: face area at 1e-8 is 3.7e-8 off"); primitive!(sphere, "sphere", - mass: ignore = "solidcore#1437: trim_boundary_seam_wrap zeroes a sphere's properties (and #1435 after)", + mass: ignore = "solidcore#1435: a sphere's properties at 1e-8 miss 1e-9", area: ignore = "solidcore#1435: face area at 1e-8 is 1.2e-8 off"); primitive!(cone, "cone", mass: ignore = "solidcore#1435: cone inertia at 1e-8 is 1.7e-9 off", diff --git a/crates/smlib/src/core/offset_tests.rs b/crates/smlib/src/core/offset_tests.rs index 6e86ec7ca7..5b271046f3 100644 --- a/crates/smlib/src/core/offset_tests.rs +++ b/crates/smlib/src/core/offset_tests.rs @@ -489,11 +489,15 @@ fn faces_are_picked_on_the_box_and_on_its_working_copy() { } assert!(faces[0].as_ref().is_some_and(|f| f.len() == 1), "the body: {faces:?}"); assert_eq!(faces[0], faces[1], "the body and its copy pick the same face"); - // The maintainers' usage: the body itself, keyed by its naming scheme. - let body = BrepIdentity::of_brep(&b); - box_face_distances_are_exact("of_brep on the body", &face_distances(k, &mut b, &body, p)?); - // The copy under the arena's identities: no face's geometry owner resolves. - let arena = BrepIdentity::of_brep(&w); + // `BrepIdentity::of_brep` honours a copy's owner keys since solidcore#1445: the body + // and its copy both resolve. + for (what, x) in [("of_brep on the body", &mut b), ("of_brep on its copy", &mut w)] { + let proven = BrepIdentity::of_brep(x); + box_face_distances_are_exact(what, &face_distances(k, x, &proven.identity(), p)?); + } + // The copy under its naming scheme alone (the arena's identities): no face's geometry + // owner resolves, and the query says so rather than answering from the vertices. + let arena = BrepIdentity::of_naming_with_id(solidcore::topology::BrepId::from_index(0), &w); match face_distances(k, &mut w, &arena, p) { Err(SolidError::InvalidInput { .. }) => {} other => panic!("the copy under the arena's identities: {other:?}"),