Kernel rig: everyday fillets after fillets

A box edge rounded, then the edge meeting it at the corner, in both orders (both the
three-edge rolling-ball corner); r3 then r2 (the r2 round's torus about the r3 round's
axis, by Pappus); an L-bracket's front inner outline after its bend round; a block's
top edge after the arc round at the cylinder (fails today: G0 at the round's end on the
crease); a curvature round after a curvature round with Tangent chain off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
jyviko
2026-10-30 06:07:18 -04:00
committed by Irakli Kourtis
parent 06e802ffee
commit fd571d076a
13 changed files with 399 additions and 0 deletions
+1
View File
@@ -7,6 +7,7 @@
5158-fillet-round-just-past-a-10mm-face SMLib status 1001: a convex round 0.01 past its face is not yet built by subtraction (10.0001-10.04 open)
9-fillet-corner-curvature-with-reduce-fit not supported yet: solid.fillet builds corner g2 with the exact fit only
9-fillet-corner-curvature-with-taper-fit not supported yet: solid.fillet builds corner g2 with the exact fit only
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-chamfer-10-full-depth-refused the full-width chamfer (leg as deep as the 10 mm plate) builds instead of being refused
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
every-pocket-floor-and-rim-edges-r2 a corner patch where two rim rounds meet at each concave pocket corner (23 faces, not 19) instead of the mitre the rounds make running into each other
@@ -0,0 +1,10 @@
{
"sources": [],
"what": "a block's concave arc at the cylinder it is joined to rounded r2, then the block's long top edge rounded r1, which ends on the arc's round",
"source": "invariants",
"method": "block 40x10x15 (x 0..40, y -5..5) joined to the cylinder R10 x 30 on the z axis, the block's end on the cylinder's diameter x = 0 so its sides y = +-5 meet the wall at vertical creases: V0 = 6000 + 3000 pi - 15 * (the disc's part with x > 0, |y| <= 5: 2 (y/2 sqrt(100-y^2) + 50 asin(y/10)) at y=5 = 95.661148) = 13989.8607 and the arc rounded r2 (every-block-cylinder-crease-concave-arc-r2). The top edge y = 5, z = 15 now ends where the top face meets the arc round (x = sqrt(144-25)); its tangent chain goes on up the edge between the side face and the arc round (the round's end, a curve on the plane y = 5 tangent to the top edge there) to the cylinder's crease. The r1 round along that curve has no closed-form volume (the curve is a torus cut by a plane): one valid body, blend seams G1.",
"body_count": 1,
"continuity": {
"order": "g1"
}
}
@@ -0,0 +1,60 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 40,
"width": 10,
"height": 15,
"corner": [
0,
-5,
0
],
"body_name": "Block"
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 10,
"height": 30,
"base": [
0,
0,
0
],
"operation": "join",
"targets": [
"Block"
]
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
10,
0,
15
]
],
"radius": 2
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
30,
5,
15
]
],
"radius": 1
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [],
"what": "a box's top front edge rounded curvature-continuous size 3, then the top side edge meeting it at the corner rounded the same way alone (Tangent chain off)",
"source": "invariants",
"method": "box 40x30x20; the edge y=0, z=20 rounded type curvature 3 (every-box-edge-r3-curvature's section), then the edge x=40, z=20 (now y 3..30) rounded type curvature 3 alone: at y = 3 it runs on tangentially into the first round's end curve on x = 40 (the quintic, tangent to the top there), so the second round ends on a curved round, not a planar end face: no closed form. A valid body with every blend seam G2, or a refusal saying the edge continues tangentially (the 1207 precedent).",
"body_count": 1,
"outcome": "solid_or_refused",
"refusal": "continues tangentially",
"continuity": {
"order": "g2"
}
}
@@ -0,0 +1,42 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 40,
"width": 30,
"height": 20,
"body_name": "Part"
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
20,
0,
20
]
],
"radius": 3,
"type": "curvature"
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
40,
15,
20
]
],
"radius": 3,
"type": "curvature",
"tangent_chain": false
}
}
]
}
@@ -0,0 +1,24 @@
{
"sources": [],
"what": "a box's top front edge rounded r3, then the vertical edge meeting it rounded r2: the smaller round runs on round the bigger round's end and along the top side edge",
"source": "analytic",
"method": "box 40x30x20; the edge y=0, z=20 rounded r3 removes 40 (1-pi/4) 9 = 77.2567. The edge x=40, y=0 (now z 0..17) rounded r2 with its tangent chain: the end arc of the r3 round on x = 40 and the edge x=40, z=20 (y 3..30). Along the arc the r2 ball rolls between the plane x = 40 and the r3 cylinder: its section in each half-plane through that cylinder's axis is the square-corner spandrel with its corner 3 from the axis, the material towards it, turned a quarter turn (Pappus): (pi/2)(3 A2 - M2), A2 = (1-pi/4) 4 = 0.858407, M2 = 8 (5/6-pi/4) = 0.383481. Removed = 40 A3 + 17 A2 + (pi/2)(3 A2 - M2) + 27 A2 = 118.4694. V = 23881.5306. Faces 6 + 3 rounds + the torus piece = 10.",
"body_count": 1,
"volume_mm3": 23881.530637372005,
"faces": 10,
"bbox": {
"min": [
0,
0,
0
],
"max": [
40,
30,
20
]
},
"continuity": {
"order": "g1"
}
}
@@ -0,0 +1,39 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 40,
"width": 30,
"height": 20,
"body_name": "Part"
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
20,
0,
20
]
],
"radius": 3
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
40,
0,
10
]
],
"radius": 2
}
}
]
}
@@ -0,0 +1,24 @@
{
"sources": [],
"what": "a box's top front edge rounded r2, then the vertical edge meeting it at the corner rounded r2 (Tangent chain on)",
"source": "analytic",
"method": "box 40x30x20; the edge y=0, z=20 rounded r2, then the edge x=40, y=0: rounding the second edge after the first, its tangent chain (the default) runs on along the first round's end arc (on the end face, tangent to it) and the third edge at the corner; the rolling ball along that arc, between the end face and the first round of the same radius, is the corner's sphere, so the result is the three-edge rolling-ball corner: V = 24000 - (1-pi/4) 4 (40+20+30-6) - 8 (1-pi/6) = 23924.0826 (every-box-corner-three-edges-r1-tangent's formula at r2). Faces 10. The same as every-fillet-after-fillet-vertical-then-front-r2: the order does not matter.",
"body_count": 1,
"volume_mm3": 23924.08257310633,
"faces": 10,
"bbox": {
"min": [
0,
0,
0
],
"max": [
40,
30,
20
]
},
"continuity": {
"order": "g1"
}
}
@@ -0,0 +1,39 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 40,
"width": 30,
"height": 20,
"body_name": "Part"
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
20,
0,
20
]
],
"radius": 2
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
40,
0,
10
]
],
"radius": 2
}
}
]
}
@@ -0,0 +1,24 @@
{
"sources": [],
"what": "a box's vertical edge rounded r2, then the top front edge meeting it at the corner rounded r2 (Tangent chain on)",
"source": "analytic",
"method": "box 40x30x20; the edge x=40, y=0 rounded r2, then the edge y=0, z=20: rounding the second edge after the first, its tangent chain (the default) runs on along the first round's end arc (on the end face, tangent to it) and the third edge at the corner; the rolling ball along that arc, between the end face and the first round of the same radius, is the corner's sphere, so the result is the three-edge rolling-ball corner: V = 23924.0826, as every-fillet-after-fillet-front-then-vertical-r2. Faces 10.",
"body_count": 1,
"volume_mm3": 23924.08257310633,
"faces": 10,
"bbox": {
"min": [
0,
0,
0
],
"max": [
40,
30,
20
]
},
"continuity": {
"order": "g1"
}
}
@@ -0,0 +1,39 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 40,
"width": 30,
"height": 20,
"body_name": "Part"
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
40,
0,
10
]
],
"radius": 2
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
20,
0,
20
]
],
"radius": 2
}
}
]
}
@@ -0,0 +1,24 @@
{
"sources": [],
"what": "an L-bracket's inside bend rounded r3, then the front edge of its upright's inner face rounded r1: the round runs on along the bend round's front arc and the foot's front top edge",
"source": "analytic",
"method": "L-bracket: the legs 40x20x5 (x 0..40, z 0..5) and 5x20x40 (x 0..5, z 0..40) joined, 20 deep in y: V0 = 4000 + 4000 - 500 = 7500, 8 faces. The bend r3 adds 20 (1-pi/4) 9 = 38.6283. The edge x = 5, y = 0 (z 8..40) rounded r1 with its tangent chain: the bend round's arc on y = 0 and the edge y = 0, z = 5 (x 8..40). Straight parts 32 + 32 remove (1-pi/4) each mm; along the arc the ball rolls between y = 0 and the concave r3 cylinder (axis (8, y, 8)), the material away from the axis: the spandrel with its corner 3 from the axis turned a quarter turn, (pi/2)(3 A1 + M1), M1 = 5/6 - pi/4. V = 7500 + 20 A3 - 64 A1 - (pi/2)(3 A1 + M1) = 7523.8072. Faces 9 + 3 = 12.",
"body_count": 1,
"volume_mm3": 7523.80722932706,
"faces": 12,
"bbox": {
"min": [
0,
0,
0
],
"max": [
40,
20,
40
]
},
"continuity": {
"order": "g1"
}
}
@@ -0,0 +1,61 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 40,
"width": 20,
"height": 5,
"corner": [
0,
0,
0
],
"body_name": "Bracket"
}
},
{
"command": "solid.box",
"params": {
"length": 5,
"width": 20,
"height": 40,
"corner": [
0,
0,
0
],
"operation": "join",
"targets": [
"Bracket"
]
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
5,
10,
5
]
],
"radius": 3
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
5,
0,
25
]
],
"radius": 1
}
}
]
}