Join keeps its tool exact where the tool ends in the part's faces (#1244)

This commit is contained in:
NOWN-DEV authored and GitHub committed 2026-10-14 20:18:09 -04:00
1 parent 861ab027b6
commit 2cab09f65b
7 files changed
+151 -17

No files matched your search

+15
View File
@@ -2420,6 +2420,21 @@ fn lip_after_boss() {
}
}
/// A lip on a rim with a face elsewhere in line with the pick: a notch under the floor whose
/// wall lies in the plane y = 25 through the picked point. The pick is the rim's, the face the
/// point lies on, not the first face whose plane runs through it.
#[test]
fn lip_on_a_rim_in_line_with_another_face() {
let mut s = Session::default();
run(&mut s, "solid.box", json!({"length": 80, "width": 50, "height": 30}));
run(&mut s, "solid.shell", json!({"faces": [[40, 25, 30]], "thickness": 2}));
run(&mut s, "solid.box", json!({"length": 20, "width": 10, "height": 1, "corner": [30, 25, 0], "operation": "cut", "targets": ["Body1"]}));
let v0 = volume(&mut s);
run(&mut s, "plastic.lip", json!({"face": [1, 25, 30], "width": 1, "height": 2}));
// The band inside the rim, 1 wide and 2 high: (78 × 48 − 76 × 46) × 2.
assert!(rel(volume(&mut s) - v0, 496.0) < 1e-6, "{}", volume(&mut s) - v0);
}
/// A drilled hole as deep as the plate: the drill point breaks through the bottom.
#[test]
fn hole_as_deep_as_the_plate() {