Tommaso Bianchi
695932ad87
Drop the degenerate triangle OCCT emits at every filleted corner
...
A filleted solid arrived on the plate as a broken model: the slicer reported
"8 non-manifold edges" on an 80x50x12 box with r=3 on all edges, and advised
repairing it in another CAD application -- the exact round trip the Design tab
exists to remove. The same box without the fillet committed cleanly.
Measured rather than guessed. Each of the 8 bad edges is degenerate, both
endpoints the same vertex:
open tri=145 edge=1 face=5 v59(3.000000 3.000000 0.000000) v59(3.000000 3.000000 0.000000)
open tri=538 edge=1 face=6 v87(3.000000 3.000000 12.000000) v87(...)
... one per corner, 8 corners
OCCT triangulates a degenerate surface parameterization with a triangle at the
pole; a corner sphere patch has exactly one. Its two pole nodes are distinct in
the per-face triangulation and collapse to a single vertex when the faces are
welded, leaving a zero-area triangle whose v->v edge can never pair with a
neighbour. its_face_neighbors counts it as open, and the field the object panel
prints as "non-manifold edges" is in fact stats.open_edges.
So the geometry was never wrong -- the B-rep volume matches the Steiner formula
for a box dilated by a ball to 0.016%. Only the bookkeeping was.
Dropping those triangles after the weld removes 8 of 3492 and takes open_edges
to 0. Zero area, so nothing about the shape changes. tri_face is compacted in
the same pass, since it must stay index-aligned with the triangle list that the
face picking and per-body colouring both index into.
Guarded by a new [CadDocument] case that asserts open_edges == 0, no degenerate
triangle survives, and both per-triangle maps still match the triangle count.
The existing suite only ever checked B-rep volumes and areas, which is why a
mesh defect this visible went unnoticed: 150 cases / 2049 assertions green on
both forks.
snaporca-agw
2026-07-26 17:27:40 +02:00
..
2026-06-03 10:19:04 -03:00
2026-07-08 20:58:39 +08:00
2024-10-05 21:53:16 +03:00
2026-05-08 19:22:49 +08:00
2026-07-22 17:51:55 -03:00
2026-07-25 12:28:33 +02:00
2026-07-20 17:34:13 +08:00
2026-06-18 09:13:51 -03:00
2024-08-12 00:00:20 +08:00
2026-05-12 15:09:13 +08:00
2026-06-28 12:40:38 +02:00
2026-07-18 19:57:56 -03:00
2026-05-12 15:09:13 +08:00
2024-05-10 23:47:08 +08:00
2026-05-12 15:09:13 +08:00
2026-03-24 09:18:38 -07:00
2026-07-20 18:14:01 -03:00
2026-06-19 09:42:12 +08:00
2026-03-13 02:12:10 -07:00
2026-03-13 02:12:10 -07:00
2025-09-10 10:05:07 +08:00
2025-01-22 10:03:21 +08:00
2023-12-01 10:42:45 +00:00
2024-08-12 00:00:20 +08:00
2025-06-22 23:10:35 +08:00
2026-07-20 09:47:33 -03:00
2024-01-28 10:12:55 +00:00
2024-06-15 14:56:44 +08:00
2026-07-18 19:57:56 -03:00
2026-07-18 19:57:56 -03:00
2025-09-21 13:47:51 +08:00
2026-04-20 19:18:03 -03:00
2025-11-15 11:11:20 -05:00
2026-07-26 09:32:47 +02:00
2026-07-25 23:56:34 +02:00
2026-07-21 12:42:09 -03:00
2026-07-21 15:28:36 -03:00
2026-02-09 20:42:26 +01:00
2026-02-09 20:42:26 +01:00
2026-07-08 14:20:40 -03:00
2026-07-08 14:20:40 -03:00
2025-11-22 15:39:12 +08:00
2026-07-14 15:34:13 -03:00
2026-07-14 15:34:13 -03:00
2024-09-23 19:26:18 +08:00
2026-07-26 15:28:46 +02:00
2025-06-14 21:05:25 +08:00
2025-05-08 16:00:48 +08:00
2025-10-28 15:30:00 +08:00
2026-07-08 00:05:28 +08:00
2026-07-15 21:04:42 +08:00
2026-05-08 13:22:00 -03:00
2023-09-22 16:21:26 +08:00
2026-04-23 00:21:19 +08:00
2024-06-15 14:56:44 +08:00
2026-05-18 12:57:48 +08:00
2026-05-18 12:57:48 +08:00
2025-10-28 15:29:47 +08:00
2026-04-07 22:22:43 +08:00
2025-02-26 23:07:23 +08:00
2026-04-19 20:28:13 -03:00
2024-02-13 23:56:48 +08:00
2023-09-27 21:44:45 +08:00
2025-06-22 23:10:35 +08:00
2026-03-24 09:18:38 -07:00
2023-12-09 22:46:18 +08:00
2023-12-09 22:46:18 +08:00
2023-12-09 22:46:18 +08:00
2026-07-14 14:42:16 -03:00
2026-07-14 14:42:16 -03:00
2026-03-24 09:18:38 -07:00
2026-07-03 17:27:57 -03:00
2024-08-12 00:00:20 +08:00
2026-05-27 22:07:15 +08:00
2026-02-09 20:42:26 +01:00
2024-01-26 20:18:10 +08:00
2026-07-15 16:59:55 +08:00
2026-07-15 16:59:55 +08:00
2026-07-11 15:00:33 +08:00
2026-07-09 01:16:25 +08:00
2026-07-20 09:47:33 -03:00
2025-06-22 23:10:35 +08:00
2026-01-05 22:41:04 +00:00
2025-09-29 20:38:38 +08:00
2025-09-29 20:38:38 +08:00
2025-09-29 20:38:38 +08:00
2026-07-22 16:30:43 -03:00
2026-07-18 19:57:56 -03:00
2025-09-24 22:49:14 -04:00
2025-11-15 11:11:20 -05:00
2026-07-21 14:23:41 -03:00
2026-07-22 16:30:43 -03:00
2025-04-04 23:07:00 +08:00
2026-05-07 22:32:56 +08:00
2026-07-23 23:18:42 +02:00
2026-07-23 23:18:42 +02:00
2026-06-25 22:10:49 +08:00
2024-06-15 14:56:44 +08:00
2024-06-15 14:56:44 +08:00
2025-06-18 17:50:44 +08:00
2023-12-01 10:42:45 +00:00
2026-07-03 17:27:57 -03:00
2026-07-12 11:45:00 -03:00
2026-06-03 10:16:59 -03:00
2026-03-11 17:20:12 -07:00
2024-05-12 23:35:41 +08:00
2025-07-30 21:22:40 +08:00
2025-10-28 15:29:55 +08:00
2026-03-24 09:18:38 -07:00
2025-09-18 17:08:18 +08:00
2025-09-18 17:08:18 +08:00
2025-10-19 19:27:55 +08:00
2026-01-14 19:51:13 +08:00
2025-10-19 21:57:34 +08:00
2025-02-26 23:07:23 +08:00
2024-11-06 20:19:52 +08:00
2024-11-06 20:19:52 +08:00
2026-04-24 16:28:28 +08:00
2026-04-24 16:28:28 +08:00
2024-05-10 23:47:08 +08:00
2026-07-08 20:24:55 +08:00
2026-07-08 20:24:55 +08:00
2026-07-25 12:28:33 +02:00
2026-07-25 12:28:33 +02:00
2026-06-14 17:42:53 +08:00
2025-12-08 22:42:11 +08:00
2026-07-22 16:49:37 -03:00
2026-07-22 16:49:37 -03:00
2026-07-12 03:24:35 +08:00
2026-07-12 03:24:35 +08:00
2026-03-13 01:56:51 -07:00
2026-03-13 01:56:51 -07:00
2026-06-18 09:13:51 -03:00
2023-12-01 10:42:45 +00:00
2024-05-10 23:47:08 +08:00
2024-05-10 23:47:08 +08:00
2024-06-15 14:56:44 +08:00
2024-06-15 14:56:44 +08:00
2025-09-18 16:10:27 +08:00
2025-09-18 16:10:27 +08:00
2026-07-18 19:57:56 -03:00
2024-05-10 23:47:08 +08:00
2026-07-10 16:21:48 +08:00
2026-07-10 16:21:48 +08:00
2025-10-02 17:07:17 +08:00
2025-10-02 17:07:17 +08:00
2025-04-05 17:47:59 +08:00
2026-07-08 14:20:40 -03:00
2026-06-03 10:12:26 -03:00
2026-07-08 08:58:51 +08:00
2025-07-18 15:43:46 +08:00
2026-07-02 17:49:36 +08:00
2026-07-02 17:49:36 +08:00
2024-01-31 11:23:29 +00:00
2024-01-31 11:23:29 +00:00
2026-03-13 01:56:51 -07:00
2026-03-24 09:18:38 -07:00
2026-05-04 15:52:34 +08:00
2025-06-18 17:50:44 +08:00
2025-06-18 17:50:44 +08:00
2026-03-13 01:56:51 -07:00
2026-03-13 01:56:51 -07:00
2026-07-22 12:59:17 +08:00
2026-07-14 10:10:19 +08:00
2026-07-15 19:18:45 +08:00
2026-07-11 04:38:31 +08:00
2026-07-22 12:59:17 +08:00
2026-07-18 19:57:56 -03:00
2026-07-12 11:15:58 +08:00
2026-07-03 00:14:32 +08:00
2026-06-18 12:45:26 +08:00
2026-07-22 12:59:17 +08:00
2026-07-20 17:34:13 +08:00
2025-12-08 22:42:11 +08:00
2026-07-14 15:34:13 -03:00
2026-06-01 16:00:00 +08:00
2026-06-05 20:45:43 +08:00
2024-01-31 11:23:29 +00:00
2026-05-10 02:21:13 +08:00
2024-05-10 23:47:08 +08:00
2023-11-04 11:41:03 +08:00
2024-08-12 00:00:20 +08:00
2026-06-07 13:31:52 +08:00
2026-02-09 20:42:26 +01:00
2026-06-28 12:40:38 +02:00
2026-06-28 12:40:38 +02:00
2026-07-26 17:27:40 +02:00
2026-07-25 09:56:46 +02:00
2026-06-28 12:40:38 +02:00
2026-06-28 12:40:38 +02:00
2026-06-28 12:40:38 +02:00
2026-06-28 12:40:38 +02:00
2026-07-26 09:33:50 +02:00
2026-06-28 12:40:38 +02:00
2026-06-18 12:45:26 +08:00
2026-06-18 12:45:26 +08:00
2026-06-18 09:13:51 -03:00
2024-08-12 00:00:20 +08:00
2026-05-10 15:12:56 +08:00
2026-05-10 15:12:56 +08:00
2025-10-19 19:27:55 +08:00
2025-02-12 22:10:57 +08:00
2023-09-29 23:39:12 +08:00
2023-09-29 23:39:12 +08:00
2024-06-15 14:56:44 +08:00
2024-01-31 11:23:29 +00:00
2026-06-19 09:42:12 +08:00
2024-06-15 14:56:44 +08:00
2026-05-21 16:24:54 +08:00
2026-06-28 12:40:38 +02:00
2026-06-28 12:40:38 +02:00
2026-01-29 19:19:37 +08:00
2026-01-23 17:05:56 +08:00
2024-06-15 14:56:44 +08:00
2026-04-23 10:34:36 -03:00
2025-12-08 22:42:11 +08:00
2025-12-08 22:42:11 +08:00
2026-05-12 15:09:13 +08:00
2026-02-12 08:42:01 +08:00
2026-05-04 20:33:13 +08:00
2025-02-08 11:34:40 +08:00
2026-05-10 12:35:31 +08:00
2026-05-10 12:35:31 +08:00
2024-08-12 00:00:20 +08:00
2024-08-12 00:00:20 +08:00
2024-05-10 23:47:08 +08:00
2024-08-12 00:00:20 +08:00
2024-06-15 14:56:44 +08:00
2026-07-09 01:16:25 +08:00
2026-07-09 01:16:25 +08:00
2026-02-09 20:42:26 +01:00