mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 18:45:55 +00:00
solidcore: move the pin to 3546c9bc (main, with solidcore#1437 and #1445)
From f020a066: trim_boundary_seam_wrap keeps the gap lines along a singular side (#1446, fixes #1437), so a sphere's area, volume and inertia are no longer 0; they now miss 1e-9 by about 2e-9 (solidcore#1435). And BrepIdentity::of_brep honours a copy's geometry_owner_keys (#1445, after #1440): the identity test uses its new form. No new UpstreamFixes flags. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SdcgExNEwfR9CX2RAzp2Pt
This commit is contained in:
Generated
+1
-1
@@ -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",
|
||||
]
|
||||
|
||||
+1
-1
@@ -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"
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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:?}"),
|
||||
|
||||
Reference in New Issue
Block a user