Chamfer: refuse a result that grows a convex edge's part (#1428)

* Chamfer: refuse a result that grew a convex edge's part (or shrank a concave one's)

A chamfer of a curved edge that runs off a face it skims (robustness seed 57's
ball rim) built a part bigger than before. Checked from the two faces' normals
at the edge; rounds and unclear angles are left to the wedge bound.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Action matrix: the sheet metal tray's relief corners refuse a 0.25 mm chamfer

Each is a 2.5 mm concave edge (the corner of a corner relief, between two
planes at right angles): a chamfer there fills at most 0.25²/2 × 2.5 = 0.08
mm³. What was built took 0.95 mm³ away; the chamfer guard now refuses it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Robustness goldens: seed 57's wrong-way chamfer is now refused (#1390)

On main with #391, seed 57's chamfer grew the part; this refuses it, so the run goes on
to its later steps and ends ok.

---------

Co-authored-by: Phanoob <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Co-authored-by: bherbruck <[email protected]>
This commit is contained in:
authored and GitHub committed 2026-10-15 14:26:30 -04:00
1 parent 2d069ca186
commit 6ad391fd75
5 files changed
+134 -7

No files matched your search

+4 -4
View File
@@ -9159,10 +9159,10 @@
"Body1/F3:face:31|F3:face:32": "!edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:31|F3:face:33": "!edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:32": "face.angle_plane !face.draft_neutral face.extrude !face.hole face.midplane face.offset_plane face.press_pull !face.shell face.sketch",
"Body1/F3:face:32|F3:face:37": "edge.axis edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:32|F3:face:37": "edge.axis !edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:32|F3:face:8": "edge.axis edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:33": "face.angle_plane !face.draft_neutral face.extrude !face.hole face.midplane face.offset_plane face.press_pull !face.shell face.sketch",
"Body1/F3:face:33|F3:face:44": "edge.axis edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:33|F3:face:44": "edge.axis !edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:33|F3:face:7": "edge.axis edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:34": "curved.axis curved.tangent_plane",
"Body1/F3:face:34|F3:face:36": "!edge.chamfer !edge.fillet edge.normal_plane edge.project",
@@ -9172,7 +9172,7 @@
"Body1/F3:face:35|F3:face:36": "!edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:35|F3:face:37": "!edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:36": "face.angle_plane !face.draft_neutral face.extrude !face.hole face.midplane face.offset_plane face.press_pull !face.shell face.sketch",
"Body1/F3:face:36|F3:face:41": "edge.axis edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:36|F3:face:41": "edge.axis !edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:37": "face.angle_plane !face.draft_neutral face.extrude !face.hole face.midplane face.offset_plane face.press_pull !face.shell face.sketch",
"Body1/F3:face:38": "curved.axis curved.tangent_plane",
"Body1/F3:face:38|F3:face:40": "!edge.chamfer !edge.fillet edge.normal_plane edge.project",
@@ -9188,7 +9188,7 @@
"Body1/F3:face:3|F3:face:8": "edge.axis !edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:4": "face.angle_plane !face.draft_neutral face.extrude face.hole face.midplane face.offset_plane face.press_pull !face.shell face.sketch",
"Body1/F3:face:40": "face.angle_plane !face.draft_neutral face.extrude !face.hole face.midplane face.offset_plane face.press_pull !face.shell face.sketch",
"Body1/F3:face:40|F3:face:45": "edge.axis edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:40|F3:face:45": "edge.axis !edge.chamfer !edge.fillet edge.normal_plane edge.project",
"Body1/F3:face:41": "face.angle_plane !face.draft_neutral face.extrude !face.hole face.midplane face.offset_plane face.press_pull !face.shell face.sketch",
"Body1/F3:face:42": "curved.axis curved.tangent_plane",
"Body1/F3:face:42|F3:face:44": "!edge.chamfer !edge.fillet edge.normal_plane edge.project",