From 88e96614570649cf2f4a48ae20e723d54727e6b6 Mon Sep 17 00:00:00 2001 From: Jonas Wrede Date: Tue, 13 Oct 2026 08:28:16 +0200 Subject: [PATCH] test: failing regression test for #546 (ignored until fixed): solid.extrude with taper refuses profiles of lines and arcs: "not supported yet: tapered profiles mixing lines and arcs" (#571) Adds an ignored regression test for #546; it runs once #546 is fixed. --- crates/engine/src/tests.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/crates/engine/src/tests.rs b/crates/engine/src/tests.rs index 0222822a..d2ab3f76 100644 --- a/crates/engine/src/tests.rs +++ b/crates/engine/src/tests.rs @@ -2920,3 +2920,21 @@ fn a_pattern_of_a_reduced_fillet_rounds_each_copy_alike() { let expect = 60.0 * 20.0 * 2.0 + 3.0 * (840.0 - (4.0 - PI) * 9.0 * 10.0); assert!(rel(volume(&mut s), expect) < 2e-4, "{} vs {expect}", volume(&mut s)); } + +/// A taper on a profile of lines and an arc (#546). The D profile (back 9.2, sides 7.4, a +/// half-round front R 4.6 tangent to them) grows by d = z · tan 5° with mitred corners: +/// A(d) = A₀ + P·d + (2 + π/2)·d², integrated over the 10 mm height. +#[test] +#[ignore = "fails until #546 is fixed"] +fn tapered_extrude_of_a_profile_mixing_lines_and_an_arc() { + let mut s = Session::default(); + run(&mut s, "sketch.create", json!({"plane": "XY", "name": "D"})); + run(&mut s, "sketch.line", json!({"points": [[0, 4.6], [-7.4, 4.6], [-7.4, -4.6], [0, -4.6]], "closed": false})); + run(&mut s, "sketch.arc.center_point", json!({"center": [0, 0], "start": [0, -4.6], "end": [0, 4.6]})); + run(&mut s, "sketch.finish", json!({})); + run(&mut s, "solid.extrude", json!({"sketch": "D", "distance": 10, "taper": "5 deg"})); + let (t, h) = (5f64.to_radians().tan(), 10.0); + let (a0, p, k) = (7.4 * 9.2 + PI * 4.6 * 4.6 / 2.0, 2.0 * 7.4 + 9.2 + PI * 4.6, 2.0 + PI / 2.0); + let expect = a0 * h + p * t * h * h / 2.0 + k * t * t * h.powi(3) / 3.0; + assert!(rel(volume(&mut s), expect) < 1e-3, "{} vs {expect}", volume(&mut s)); +}