diff --git a/tests/kernel-cases/fillets/KNOWN_FAILING b/tests/kernel-cases/fillets/KNOWN_FAILING index 5010c13a31..0958c966b8 100644 --- a/tests/kernel-cases/fillets/KNOWN_FAILING +++ b/tests/kernel-cases/fillets/KNOWN_FAILING @@ -18,4 +18,6 @@ cov-chamfer-outer-corner-edge-of-a-shelled-box-with-a-lip SMLib's chamfer result 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-r5-solver-residues the corner patch where the convex and concave rounds meet stands 0.128 out of the front face (box y min -0.0699 against 0.0579) +report-fillet-concave-arc-and-front-top-edge-together-r7-solver-residues the corner patch where the convex and concave rounds meet stands 0.230 out of the front face (box y min -0.1723 against 0.0579) 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-r5-solver-residues/expected.json b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-r5-solver-residues/expected.json new file mode 100644 index 0000000000..9e471c7f76 --- /dev/null +++ b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-r5-solver-residues/expected.json @@ -0,0 +1,21 @@ +{ + "what": "as report-fillet-concave-arc-and-front-top-edge-together-solver-residues, at r5: the corner patch stands out of the bar's front face (known limit past r4); 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-r5-solver-residues/recipe.json b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-r5-solver-residues/recipe.json new file mode 100644 index 0000000000..73c49f8349 --- /dev/null +++ b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-r5-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": 5, + "type": "constant", + "tangent_chain": true + } + } + ] +} diff --git a/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-r7-solver-residues/expected.json b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-r7-solver-residues/expected.json new file mode 100644 index 0000000000..38c50a72f0 --- /dev/null +++ b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-r7-solver-residues/expected.json @@ -0,0 +1,21 @@ +{ + "what": "as report-fillet-concave-arc-and-front-top-edge-together-solver-residues, at r7: the corner patch stands out of the bar's front face (known limit past r4); 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-r7-solver-residues/recipe.json b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-r7-solver-residues/recipe.json new file mode 100644 index 0000000000..0d1dcf6c35 --- /dev/null +++ b/tests/kernel-cases/fillets/report-fillet-concave-arc-and-front-top-edge-together-r7-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": 7, + "type": "constant", + "tangent_chain": true + } + } + ] +}