From 3c16884f7cf51f8a620ef454e377d30cb80530fc Mon Sep 17 00:00:00 2001 From: jyviko <2501648+jyviko@users.noreply.github.com> Date: Sat, 31 Oct 2026 01:45:57 -0400 Subject: [PATCH] Rig: the test-peg's concave arc and front top edge rounded together stay within the body's box A new fillet case, report-fillet-concave-arc-and-front-top-edge-together-solver-residues: the reported part's bar (with the sketch solver's residues) whose sides run tangent into the cylinder, its concave arc and front top edge rounded r2 together. The plane of the front face bounds the whole body, so every blend lies within the unblended body's exact box (SMLib's tight box); graded to 4e-5, the corner patch's own tolerance. On SMLib 2fc375f the corner patch stands 0.0374 out of the front face (box y min 0.0205): listed in KNOWN_FAILING. Co-Authored-By: Claude Opus 5.5 --- tests/kernel-cases/fillets/KNOWN_FAILING | 7 + .../expected.json | 21 +++ .../recipe.json | 176 ++++++++++++++++++ 3 files changed, 204 insertions(+) create mode 100644 tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-solver-residues/expected.json create mode 100644 tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-solver-residues/recipe.json diff --git a/tests/kernel-cases/fillets/KNOWN_FAILING b/tests/kernel-cases/fillets/KNOWN_FAILING index 92f6ca9e7e..5010c13a31 100644 --- a/tests/kernel-cases/fillets/KNOWN_FAILING +++ b/tests/kernel-cases/fillets/KNOWN_FAILING @@ -12,3 +12,10 @@ 5158-fillet-round-just-past-a-10mm-face SMLib status 1001: the round passes 5e-6 under the box's top back edge, inside the body's tolerance (1e-5), and subtracting its removal region maps that edge to two of the region's faces (SmTopologyIntersector); 10.0001-10.04 open 9-fillet-corner-curvature-with-reduce-fit not supported yet: solid.fillet builds corner g2 with the exact fit only 9-fillet-corner-curvature-with-taper-fit not supported yet: solid.fillet builds corner g2 with the exact fit only +926-chamfer-top-edge-ending-on-boss-wall-above-it not supported yet: the chamfer is refused as larger than its faces where it ends on the boss's wall +cov-chamfer-concave-edge-through-up-down-joined-squares SMLib status 1001 on the concave chamfer's tangent chain +cov-chamfer-outer-corner-edge-of-a-shelled-box-with-a-lip SMLib's chamfer result is not a closed solid where it ends on the lip +cov-fillet-arc-edge-on-an-oblique-cut-of-a-bar SMLib's check refuses the round: internal coincident control points in a B-spline curve +every-block-cylinder-crease-top-edge-after-arc-round-r1 the r1 round's contact seam with the block's side face reads 60 degrees (the cylinder wall's normal) at its end on the crease (8.660, 5, 15.284): G0 where the round is built tangent +every-hole-top-rim-r12-past-plate-bottom SMLib status 1001: a convex round past its face on the tangent side is not yet built by subtraction +report-fillet-concave-arc-and-front-top-edge-together-solver-residues the corner patch where the convex and concave rounds meet stands 0.0374 out of the front face (box y min 0.0205 against 0.0579) diff --git a/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-solver-residues/expected.json b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-solver-residues/expected.json new file mode 100644 index 0000000000..b0f0d58b7a --- /dev/null +++ b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-solver-residues/expected.json @@ -0,0 +1,21 @@ +{ + "what": "as report-fillet-concave-arc-bar-top-into-cylinder-solver-residues, the concave arc and the bar's front top edge rounded r2 together (Constant, Tangent chain on): the corner patch where the two rounds meet stood up to 0.037 out of the bar's front face, a lip beside the line where the front face runs tangent into the cylinder; reported from the app (2026-10-30, test-peg part)", + "source": "invariants", + "method": "the plane of the bar's front face, y = 0.0579254505, bounds the whole body (the cylinder's wall runs tangent into it), as do the planes of its back face, bottom, left end and the cylinder's top and far side: every blend lies within them, so the body's exact box (SMLib's tight box) is the unblended body's, x 0.4892940775 .. 41.6497118311 + 8, y 0.0579254505 .. 16.0579254508, z 0 .. 20; graded to 4e-5, the corner patch's own tolerance (the fillet's approximation tolerance)", + "body_count": 1, + "bbox": { + "min": [ + 0.4892940775280783, + 0.05792545052986289, + 0 + ], + "max": [ + 49.64971183108453, + 16.05792545083297, + 20 + ] + }, + "tolerance": { + "abs_mm": 4e-05 + } +} diff --git a/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-solver-residues/recipe.json b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-solver-residues/recipe.json new file mode 100644 index 0000000000..9337c4a047 --- /dev/null +++ b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-solver-residues/recipe.json @@ -0,0 +1,176 @@ +{ + "commands": [ + { + "command": "sketch.create", + "params": { + "plane": "XY", + "name": "Peg" + } + }, + { + "command": "sketch.line", + "params": { + "points": [ + [ + 0.4892940775280783, + 0.05792545052986289 + ], + [ + 41.64971183161969, + 0.05792545083296555 + ] + ] + } + }, + { + "command": "sketch.arc.center_point", + "params": { + "center": [ + 41.64971183108453, + 8.057925450890195 + ], + "start": [ + 41.64971183161969, + 0.05792545083296555 + ], + "end": [ + 41.649711830726524, + 16.05792545083297 + ] + } + }, + { + "command": "sketch.line", + "params": { + "points": [ + [ + 41.649711830726524, + 16.05792545083297 + ], + [ + 0.4892940775280783, + 16.057925450606035 + ] + ] + } + }, + { + "command": "sketch.line", + "params": { + "points": [ + [ + 0.4892940775280783, + 16.057925450606035 + ], + [ + 0.4892940775280783, + 0.05792545052986289 + ] + ] + } + }, + { + "command": "sketch.finish", + "params": {} + }, + { + "command": "solid.extrude", + "params": { + "sketch": "Peg", + "distance": 10, + "body_name": "Peg" + } + }, + { + "command": "sketch.create", + "params": { + "plane": { + "origin": [ + 0, + 0, + 10 + ], + "x_dir": [ + 1, + 0, + 0 + ], + "y_dir": [ + 0, + 1, + 0 + ] + }, + "name": "Top" + } + }, + { + "command": "sketch.project", + "params": { + "refs": [ + { + "face": [ + 2.4892940775280783, + 8.057925450890195, + 10 + ] + } + ] + } + }, + { + "command": "sketch.circle.center", + "params": { + "center": [ + 41.64971183108453, + 8.057925450832967 + ], + "radius": 8.000000000006473 + } + }, + { + "command": "sketch.finish", + "params": {} + }, + { + "command": "solid.extrude", + "params": { + "sketch": "Top", + "distance": 10, + "operation": "join", + "targets": [ + "Peg" + ], + "profiles": [ + { + "point": [ + 41.64971183108453, + 8.057925450832967 + ] + } + ], + "exact_regions": true + } + }, + { + "command": "solid.fillet", + "params": { + "edges": [ + [ + 33.65, + 8.058, + 10 + ], + [ + 21.07, + 0.0579, + 10 + ] + ], + "radius": 2, + "type": "constant", + "tangent_chain": true + } + } + ] +}