kernel-cases: threads cases from #1995 and #3368 (finely faceted booleans), skipped #987 #3130 #3824

An M8x1 thread in a 7 mm hole, and three booleans of finely faceted
prisms (1000 and 1200 flat faces) with planar and curved partners, each
with a closed-form volume. Three auto-reports without geometry are
listed in skipped.json.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Brennen Herbruck
2026-10-21 06:52:51 -04:00
committed by jyviko
parent c24b066d25
commit 8764a76ff8
9 changed files with 156 additions and 0 deletions
@@ -0,0 +1,31 @@
{
"sources": [
"tangency-labs/solidcraft#1995"
],
"what": "an M8x1 modelled thread in a 7 mm hole through a block (the report: the thread also changed the block's outer surface and made too many faces)",
"source": "analytic",
"method": "ISO 68-1 basic profile: H = P sqrt3/2, basic depth 5H/8. Internal groove: P/8 wide at the major radius d/2, widening by 2 tan30 per unit of radius toward the axis (3P/4 at the minor radius d/2 - 5H/8 = 3.4587), cut only where there is material (r >= hole radius 3.5). Volume per turn = 2 pi * integral from 3.5 to 4 of (P/8 + 2 tan30 (4 - r)) r dr = 4.79792 mm3 for P=1. Block 20x20x10 with a 7 mm through hole (rho=3.5), M8x1 over the full 10 mm (10 turns, both ends free): V = 4000 - pi 3.5^2 10 - 10 x 4.79792 = 3567.1757 mm3. The outer surface is untouched: the bbox stays the block's 20x20x10 and COM stays on the axis at z=5. Tolerance 1%: a modelled thread is a faceted helical solid (radial chord error up to 1% of the pitch on every wall).",
"outcome": "solid",
"body_count": 1,
"volume_mm3": 3567.1757,
"center_of_mass": [
0,
0,
5.0
],
"tolerance": {
"rel": 0.01
},
"bbox": {
"min": [
-10,
-10,
0
],
"max": [
10,
10,
10
]
}
}
@@ -0,0 +1,41 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
-10,
-10,
0
],
"length": 20,
"width": 20,
"height": 10,
"body_name": "Block"
}
},
{
"command": "solid.hole",
"params": {
"position": [
0,
0,
10
],
"diameter": 7
}
},
{
"command": "solid.thread",
"params": {
"face": [
3.5,
0,
5.0
],
"designation": "M8x1",
"modeled": true
}
}
]
}
@@ -0,0 +1,23 @@
{
"sources": [
"tangency-labs/solidcraft#3368"
],
"what": "booleans of a finely faceted body (a 1200-sided prism, 1202 flat faces, the kind of body a modelled thread leaves) with box tools: they must finish in bounded time with the exact result, not run for minutes",
"source": "analytic",
"method": "A regular N-gon of circumradius R (one vertex on +x) has area N/2 R^2 sin(2 pi/N). Plate: 1200-gon R=30, h=10: V0 = 600 * 900 * sin(0.3 deg) * 10 = 28274.2047. Cut: a 10x10 square pocket through the full thickness, entirely inside the plate: -10*10*10 = -1000. Join: a 12x12x5 box standing on the top face (z 10 to 15, x and y 8 to 20, inside the outline, touching the top face only in its base): +720. V = 27994.2047 mm3.",
"outcome": "solid",
"body_count": 1,
"volume_mm3": 27994.2047,
"bbox": {
"min": [
-30,
-30,
0
],
"max": [
30,
30,
15
]
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,23 @@
{
"sources": [
"tangency-labs/solidcraft#3368"
],
"what": "a finely faceted body (a 1200-sided prism) with a curved partner: a vertical bore and a horizontal cross hole drilled through it (the case where the B-rep ladder is bounded but must still decide)",
"source": "analytic",
"method": "A regular N-gon of circumradius R (one vertex on +x) has area N/2 R^2 sin(2 pi/N). Plate: 1200-gon R=30, h=10: V0 = 28274.2047. Vertical bore R=5 at (-15,12), through the whole thickness, inside the outline: -pi*25*10 = -785.3982. Cross hole R=3 along x at y=0, z=5 (z 2..8, inside the thickness): it spans the polygon's full chord on the x axis, which is 2R = 60 because vertices sit at angles 0 and 180 deg: -pi*9*60 = -1696.4600 (the hole is clear of the bore: bore y 7..17, hole y -3..3). V = 25792.3465 mm3.",
"outcome": "solid",
"body_count": 1,
"volume_mm3": 25792.3465,
"bbox": {
"min": [
-30,
-30,
0
],
"max": [
30,
30,
10
]
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,23 @@
{
"sources": [
"tangency-labs/solidcraft#3368"
],
"what": "two finely faceted bodies (1000-sided prisms, flat faces only): a faceted stud cut out of a faceted disc, then a faceted cap joined on top touching in a plane; both booleans must finish in bounded time with the exact result",
"source": "analytic",
"method": "A regular N-gon of circumradius R (one vertex on +x) has area N/2 R^2 sin(2 pi/N). Disc: 1000-gon R=30, h=10 (z 0..10). Stud: 1000-gon R=6, z -2..12, coaxial with the same vertex angles, so it removes its 10 mm inside the disc: -A6*10. Cap: 1000-gon R=20, z 10..14, touching the disc's top face in a plane and covering the hole's top (the hole stays open at the bottom, no sealed void): +A20*4. V = 500*sin(0.36 deg)*(900*10 - 36*10 + 400*4) = 32169.6971 mm3.",
"outcome": "solid",
"body_count": 1,
"volume_mm3": 32169.6971,
"bbox": {
"min": [
-30,
-30,
0
],
"max": [
30,
30,
14
]
}
}
File diff suppressed because one or more lines are too long
+12
View File
@@ -226,5 +226,17 @@
{
"source": "tangency-labs/solidcraft#1020",
"why": "CPU or window threads (off-thread evaluation, freezes), not modelled threads: no geometry"
},
{
"source": "tangency-labs/solidcraft#987",
"why": "auto-report with a fillet's four edge picks and a screenshot only ('a ghost in the thread creation'): no design, no thread parameters, nothing to rebuild or compute"
},
{
"source": "tangency-labs/solidcraft#3130",
"why": "auto-report with command parameters only (an M5 drilled hole at a point the comment reads as off the part): no design; a drilled M5 hole in a block works, so there is no geometry to grade"
},
{
"source": "tangency-labs/solidcraft#3824",
"why": "auto-report with command parameters only (an M5 drilled hole from sketch point 8, failing 'no cylindrical face there to thread'): the sketch's face is not in the report, and a drilled M5 hole from a point on a flat block face works"
}
]