Files
solidcraft/tests/kernel-cases/threads/2038-cut-threaded-stud-from-bored-block/expected.json
T
Brennen HerbruckandClaude Sonnet 5.5 04135da965 kernel-cases: threads cases from modelled-thread reports (1 of 2)
External and internal modelled threads, tapped holes and threads beside
other features, each graded against the ISO 68-1 groove volume (Pappus)
and the part's own closed-form volume.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 02:28:45 -04:00

27 lines
1.6 KiB
JSON

{
"sources": [
"tangency-labs/solidcraft#2038"
],
"what": "cutting an externally threaded stud out of a block bored at the tap drill (to make the internal thread): the boolean found no result",
"source": "analytic",
"method": "ISO 68-1 basic profile: H = P sqrt3/2, basic depth 5H/8. External groove (the space between teeth): a trapezoid P/4 wide at the root radius d/2 - 5H/8, widening by 2 tan30 per unit of radius to 7P/8 at d/2. Internal groove: P/8 wide at the major radius d/2, widening to 3P/4 at the minor radius, cut only where there is material (r >= hole radius). Pappus: volume per turn = 2 pi A rc (A the trapezoid area, rc its centroid radius from the axis); a helical sweep of L/P turns removes exactly (L/P) x that, where each end of the thread is a free end or lies inside material. Block 40x40x14 with a 19.2 mm bore (r=9.6). Stud R=10.5, 24 long (passing through, helix runs out of both ends), M21x1.8 over its whole length. Cutting the stud from the block removes block intersect stud = the ring 9.6<=r<=10.5 over the 14 mm slab minus the stud's groove there: pi (10.5^2 - 9.6^2) 14 - (14/1.8) x V_turn_ext(clipped to r>=9.6) = 795.6398 - 7.778 x 60.41976 = 325.7083. V = 22400 - pi 9.6^2 14 - 325.7083 = 18020.8832 mm3. One body remains (the stud is consumed). Tolerance 1%: a modelled thread is a faceted helical solid (radial chord error up to 1% of the pitch on every wall, i.e. a volume deficit of about 4/3 x sag/R).",
"outcome": "solid",
"body_count": 1,
"volume_mm3": 18020.8832,
"tolerance": {
"rel": 0.003
},
"bbox": {
"min": [
-20,
-20,
0
],
"max": [
20,
20,
14
]
}
}