mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 10:35:58 +00:00
kernel rig: the owner's fillet failures of 2026-10-28 as fillet cases, with the option combinations
22 hand-written cases in tests/kernel-cases/fillets: - 1207-fillet-bar-top-edge-and-boss-arc-together (r2, r1, fit reduce, fit taper, curvature corners): a bar's top edge and the partial base arc of a boss standing out over the bar's side rounded together. The rounds' volumes away from the corner, the corner patch within (2r)^3. SMLib's 3x2 mixed corner fails here (1001) until the fork's fix. - 1207-fillet-bar-top-edge-after-boss-arc-round (r2, r0.5, no tangent chain): the edge rounded after the arc; r0.5 fails SMLib's check. - 9-fillet-corner-*: setbacks not past the radius refused (rolling and curvature corners), the curvature corner at r1, and the curvature corner with reduce and taper fits (not supported yet). - 4782-fillet-*: full rounds (two end verticals at half the width, exact, reduce, taper), a round at half the wall, radii past the full round (refused; reduce gives the full round) and a round wider than both faces (built by subtraction). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1207"
|
||||
],
|
||||
"what": "after the boss's partial base arc is rounded r2, the bar's top edge that runs into the round rounded r2 without its tangent chain",
|
||||
"source": "invariants",
|
||||
"method": "bar and boss as 1207-fillet-bar-top-edge-and-boss-arc-together; the base arc rounded r2 first (V0 + 28.9190), running out over the front face where its section is a curve on that face tangent to the bar's top edge; then that edge rounded r2 alone (tangent chain off): it ends where the section curve goes on tangentially, so a clean refusal or a valid body",
|
||||
"body_count": 1,
|
||||
"outcome": "solid_or_refused"
|
||||
}
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-15,
|
||||
0
|
||||
],
|
||||
"body_name": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": 40,
|
||||
"height": 20,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Arm"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
16,
|
||||
12,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
-15,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"tangent_chain": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1207"
|
||||
],
|
||||
"what": "after the boss's partial base arc is rounded r2, the bar's top edge that runs into the round rounded r0.5",
|
||||
"source": "invariants",
|
||||
"method": "bar and boss as 1207-fillet-bar-top-edge-and-boss-arc-together; the base arc rounded r2 first (V0 + 28.9190), running out over the front face where its section is a curve on that face tangent to the bar's top edge; then that edge rounded r0.5, the tangent chain on: the edge and the section curve it runs into. How the round runs on along the curve has no closed form: one valid closed body",
|
||||
"body_count": 1
|
||||
}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-15,
|
||||
0
|
||||
],
|
||||
"body_name": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": 40,
|
||||
"height": 20,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Arm"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
16,
|
||||
12,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
-15,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 0.5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1207"
|
||||
],
|
||||
"what": "after the boss's partial base arc is rounded r2, the bar's top edge that runs into the round rounded r2",
|
||||
"source": "invariants",
|
||||
"method": "bar and boss as 1207-fillet-bar-top-edge-and-boss-arc-together; the base arc rounded r2 first (V0 + 28.9190), running out over the front face where its section is a curve on that face tangent to the bar's top edge; then that edge rounded r2, the tangent chain on: the edge and the section curve it runs into. How the round runs on along the curve has no closed form: one valid closed body",
|
||||
"body_count": 1
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-15,
|
||||
0
|
||||
],
|
||||
"body_name": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": 40,
|
||||
"height": 20,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Arm"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
16,
|
||||
12,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
-15,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1207"
|
||||
],
|
||||
"what": "the bar's top edge and the partial base arc of a boss standing out over the bar's side, rounded r2 together (corner g2 acts where three or more rounded edges meet: none here, so the rounds are as rolling): they meet at a vertex whose third edge (the boss's line on the side face) is concave",
|
||||
"source": "analytic",
|
||||
"method": "bar 100x30x10 (y -15..15) joined with a diameter 40 boss 20 tall at the origin, standing out over both sides (V0 = 49756.1794, as 1207-fillet-concave-arc-at-boss). The bar's front top edge (y=-15, z=10) and the boss's base arc over the bar (its two edges, split at the cylinder's seam: the tangent chain) rounded r2 together meet at (13.229, -15, 10), where the third edge, the boss's line on the front face, is concave and runs down. Away from that corner the body is V0 plus the arc round's spandrel strip ending on y=+-15 (integral over rho of [r - sqrt(r^2-(20+r-rho)^2)] rho 2 asin(15/rho) = 28.9190, Simpson) less the front round's spandrel out to the boss wall (integral over y of [r - sqrt(r^2-(y+15-r)^2)] (100 - sqrt(400-y^2)) = 74.0736); the corner patch lies within the cube of side 2r about the vertex, so V is graded as V0 + add - removed with (2r)^3 as its tolerance (corner g2 acts where three or more rounded edges meet: none here, so the rounds are as rolling)",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 49711.02481940043,
|
||||
"tolerance": {
|
||||
"rel": 0.0012874407685721878
|
||||
}
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-15,
|
||||
0
|
||||
],
|
||||
"body_name": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": 40,
|
||||
"height": 20,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Arm"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
-15,
|
||||
10
|
||||
],
|
||||
[
|
||||
16,
|
||||
12,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"corner": "g2"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1207"
|
||||
],
|
||||
"what": "the bar's top edge and the partial base arc of a boss standing out over the bar's side, rounded r1 together: they meet at a vertex whose third edge (the boss's line on the side face) is concave",
|
||||
"source": "analytic",
|
||||
"method": "bar 100x30x10 (y -15..15) joined with a diameter 40 boss 20 tall at the origin, standing out over both sides (V0 = 49756.1794, as 1207-fillet-concave-arc-at-boss). The bar's front top edge (y=-15, z=10) and the boss's base arc over the bar (its two edges, split at the cylinder's seam: the tangent chain) rounded r1 together meet at (13.229, -15, 10), where the third edge, the boss's line on the front face, is concave and runs down. Away from that corner the body is V0 plus the arc round's spandrel strip ending on y=+-15 (integral over rho of [r - sqrt(r^2-(20+r-rho)^2)] rho 2 asin(15/rho) = 7.2537, Simpson) less the front round's spandrel out to the boss wall (integral over y of [r - sqrt(r^2-(y+15-r)^2)] (100 - sqrt(400-y^2)) = 18.5684); the corner patch lies within the cube of side 2r about the vertex, so V is graded as V0 + add - removed with (2r)^3 as its tolerance",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 49744.864673399745,
|
||||
"tolerance": {
|
||||
"rel": 0.00016082062043035108
|
||||
}
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-15,
|
||||
0
|
||||
],
|
||||
"body_name": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": 40,
|
||||
"height": 20,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Arm"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
-15,
|
||||
10
|
||||
],
|
||||
[
|
||||
16,
|
||||
12,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1207"
|
||||
],
|
||||
"what": "the bar's top edge and the partial base arc of a boss standing out over the bar's side, rounded r2 together (the radius fits: fit reduce keeps it): they meet at a vertex whose third edge (the boss's line on the side face) is concave",
|
||||
"source": "analytic",
|
||||
"method": "bar 100x30x10 (y -15..15) joined with a diameter 40 boss 20 tall at the origin, standing out over both sides (V0 = 49756.1794, as 1207-fillet-concave-arc-at-boss). The bar's front top edge (y=-15, z=10) and the boss's base arc over the bar (its two edges, split at the cylinder's seam: the tangent chain) rounded r2 together meet at (13.229, -15, 10), where the third edge, the boss's line on the front face, is concave and runs down. Away from that corner the body is V0 plus the arc round's spandrel strip ending on y=+-15 (integral over rho of [r - sqrt(r^2-(20+r-rho)^2)] rho 2 asin(15/rho) = 28.9190, Simpson) less the front round's spandrel out to the boss wall (integral over y of [r - sqrt(r^2-(y+15-r)^2)] (100 - sqrt(400-y^2)) = 74.0736); the corner patch lies within the cube of side 2r about the vertex, so V is graded as V0 + add - removed with (2r)^3 as its tolerance (the radius fits: fit reduce keeps it)",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 49711.02481940043,
|
||||
"tolerance": {
|
||||
"rel": 0.0012874407685721878
|
||||
}
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-15,
|
||||
0
|
||||
],
|
||||
"body_name": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": 40,
|
||||
"height": 20,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Arm"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
-15,
|
||||
10
|
||||
],
|
||||
[
|
||||
16,
|
||||
12,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"fit": "reduce"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1207"
|
||||
],
|
||||
"what": "the bar's top edge and the partial base arc of a boss standing out over the bar's side, rounded r2 together (the radius fits: fit taper keeps it): they meet at a vertex whose third edge (the boss's line on the side face) is concave",
|
||||
"source": "analytic",
|
||||
"method": "bar 100x30x10 (y -15..15) joined with a diameter 40 boss 20 tall at the origin, standing out over both sides (V0 = 49756.1794, as 1207-fillet-concave-arc-at-boss). The bar's front top edge (y=-15, z=10) and the boss's base arc over the bar (its two edges, split at the cylinder's seam: the tangent chain) rounded r2 together meet at (13.229, -15, 10), where the third edge, the boss's line on the front face, is concave and runs down. Away from that corner the body is V0 plus the arc round's spandrel strip ending on y=+-15 (integral over rho of [r - sqrt(r^2-(20+r-rho)^2)] rho 2 asin(15/rho) = 28.9190, Simpson) less the front round's spandrel out to the boss wall (integral over y of [r - sqrt(r^2-(y+15-r)^2)] (100 - sqrt(400-y^2)) = 74.0736); the corner patch lies within the cube of side 2r about the vertex, so V is graded as V0 + add - removed with (2r)^3 as its tolerance (the radius fits: fit taper keeps it)",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 49711.02481940043,
|
||||
"tolerance": {
|
||||
"rel": 0.0012874407685721878
|
||||
}
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-15,
|
||||
0
|
||||
],
|
||||
"body_name": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": 40,
|
||||
"height": 20,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Arm"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
-15,
|
||||
10
|
||||
],
|
||||
[
|
||||
16,
|
||||
12,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"fit": "taper"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1207"
|
||||
],
|
||||
"what": "the bar's top edge and the partial base arc of a boss standing out over the bar's side, rounded r2 together: they meet at a vertex whose third edge (the boss's line on the side face) is concave",
|
||||
"source": "analytic",
|
||||
"method": "bar 100x30x10 (y -15..15) joined with a diameter 40 boss 20 tall at the origin, standing out over both sides (V0 = 49756.1794, as 1207-fillet-concave-arc-at-boss). The bar's front top edge (y=-15, z=10) and the boss's base arc over the bar (its two edges, split at the cylinder's seam: the tangent chain) rounded r2 together meet at (13.229, -15, 10), where the third edge, the boss's line on the front face, is concave and runs down. Away from that corner the body is V0 plus the arc round's spandrel strip ending on y=+-15 (integral over rho of [r - sqrt(r^2-(20+r-rho)^2)] rho 2 asin(15/rho) = 28.9190, Simpson) less the front round's spandrel out to the boss wall (integral over y of [r - sqrt(r^2-(y+15-r)^2)] (100 - sqrt(400-y^2)) = 74.0736); the corner patch lies within the cube of side 2r about the vertex, so V is graded as V0 + add - removed with (2r)^3 as its tolerance",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 49711.02481940043,
|
||||
"tolerance": {
|
||||
"rel": 0.0012874407685721878
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
-15,
|
||||
0
|
||||
],
|
||||
"body_name": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": 40,
|
||||
"height": 20,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Arm"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
-15,
|
||||
10
|
||||
],
|
||||
[
|
||||
16,
|
||||
12,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4782"
|
||||
],
|
||||
"what": "the long top edge of a 5x5 bar rounded r10, wider than both faces it rounds",
|
||||
"source": "analytic",
|
||||
"method": "a convex round past its faces' far edges is built on the faces continued and its removal subtracted (smlib_fillet): the section keeps the bar's 5x5 square within the round's circle, centre (y,z) = (10,-5), radius 10: area 7.87866 (grid quadrature 4000^2); V = 80 area",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 630.293125
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 80,
|
||||
"width": 5,
|
||||
"height": 5,
|
||||
"body_name": "Box"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
40,
|
||||
0,
|
||||
5
|
||||
]
|
||||
],
|
||||
"radius": 10
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4782"
|
||||
],
|
||||
"what": "the top edge of a 10x10 box end rounded r5, half the wall",
|
||||
"source": "analytic",
|
||||
"method": "removed (1-pi/4) r^2 W",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 7946.349540849362,
|
||||
"faces": 7
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 80,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"body_name": "Box"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
80,
|
||||
5,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4782"
|
||||
],
|
||||
"what": "both vertical edges of a 20 mm wide box end rounded r10, half the width: the rounds meet tangent and use up the end face (a full round), fit reduce",
|
||||
"source": "analytic",
|
||||
"method": "box 80x20x20, the end x=80 rounded r10 on both vertical edges: removed 2 (1-pi/4) r^2 H; the end face is used up, the rounds meet along x=70..80's middle line tangentially: 4 planes + 2 rounds",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 31141.592653589792,
|
||||
"faces": 6
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 80,
|
||||
"width": 20,
|
||||
"height": 20,
|
||||
"body_name": "Box"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
80,
|
||||
0,
|
||||
10
|
||||
],
|
||||
[
|
||||
80,
|
||||
20,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 10,
|
||||
"fit": "reduce"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4782"
|
||||
],
|
||||
"what": "both vertical edges of a 20 mm wide box end rounded r10, half the width: the rounds meet tangent and use up the end face (a full round), fit taper",
|
||||
"source": "analytic",
|
||||
"method": "box 80x20x20, the end x=80 rounded r10 on both vertical edges: removed 2 (1-pi/4) r^2 H; the end face is used up, the rounds meet along x=70..80's middle line tangentially: 4 planes + 2 rounds",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 31141.592653589792,
|
||||
"faces": 6
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 80,
|
||||
"width": 20,
|
||||
"height": 20,
|
||||
"body_name": "Box"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
80,
|
||||
0,
|
||||
10
|
||||
],
|
||||
[
|
||||
80,
|
||||
20,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 10,
|
||||
"fit": "taper"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4782"
|
||||
],
|
||||
"what": "both vertical edges of a 20 mm wide box end rounded r10, half the width: the rounds meet tangent and use up the end face (a full round)",
|
||||
"source": "analytic",
|
||||
"method": "box 80x20x20, the end x=80 rounded r10 on both vertical edges: removed 2 (1-pi/4) r^2 H; the end face is used up, the rounds meet along x=70..80's middle line tangentially: 4 planes + 2 rounds",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 31141.592653589792,
|
||||
"faces": 6
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 80,
|
||||
"width": 20,
|
||||
"height": 20,
|
||||
"body_name": "Box"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
80,
|
||||
0,
|
||||
10
|
||||
],
|
||||
[
|
||||
80,
|
||||
20,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 10
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4782"
|
||||
],
|
||||
"what": "both vertical edges of a 15 mm wide box end rounded r10 with fit reduce: reduced to the full round, 7.5",
|
||||
"source": "analytic",
|
||||
"method": "reduced to 7.5 (half the width, the largest that fits): removed 2 (1-pi/4) 7.5^2 20",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 23517.14586764426,
|
||||
"faces": 6
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 80,
|
||||
"width": 15,
|
||||
"height": 20,
|
||||
"body_name": "Box"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
80,
|
||||
0,
|
||||
10
|
||||
],
|
||||
[
|
||||
80,
|
||||
15,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 10,
|
||||
"fit": "reduce"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4782"
|
||||
],
|
||||
"what": "both vertical edges of a 15 mm wide box end rounded r10, past the full round (7.5): refused",
|
||||
"source": "invariants",
|
||||
"method": "each round's rail on the end face lies 10 from its edge, past the other's (15 - 10 = 5): the rounds would cross on the face; the largest that fits is the full round, 7.5",
|
||||
"outcome": "refused"
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 80,
|
||||
"width": 15,
|
||||
"height": 20,
|
||||
"body_name": "Box"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
80,
|
||||
0,
|
||||
10
|
||||
],
|
||||
[
|
||||
80,
|
||||
15,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 10
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#9"
|
||||
],
|
||||
"what": "three r2 rounds at a box corner, curvature (g2) corner, fit reduce (the radius fits)",
|
||||
"source": "invariants",
|
||||
"method": "the radius fits, so fit reduce would keep r2 and the corner is 07-fillets/015's at r2: one valid body, 10 faces",
|
||||
"missing": "solid.fillet builds `corner: g2` with `fit: exact` only",
|
||||
"body_count": 1,
|
||||
"faces": 10
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 40,
|
||||
"height": 20,
|
||||
"body_name": "Part"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
20,
|
||||
20
|
||||
],
|
||||
[
|
||||
30,
|
||||
40,
|
||||
20
|
||||
],
|
||||
[
|
||||
60,
|
||||
40,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"corner": "g2",
|
||||
"fit": "reduce"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#9"
|
||||
],
|
||||
"what": "three r2 rounds at a box corner, curvature (g2) corner, fit taper (the radius fits)",
|
||||
"source": "invariants",
|
||||
"method": "the radius fits, so fit taper would keep r2 and the corner is 07-fillets/015's at r2: one valid body, 10 faces",
|
||||
"missing": "solid.fillet builds `corner: g2` with `fit: exact` only",
|
||||
"body_count": 1,
|
||||
"faces": 10
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 40,
|
||||
"height": 20,
|
||||
"body_name": "Part"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
20,
|
||||
20
|
||||
],
|
||||
[
|
||||
30,
|
||||
40,
|
||||
20
|
||||
],
|
||||
[
|
||||
60,
|
||||
40,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"corner": "g2",
|
||||
"fit": "taper"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#9"
|
||||
],
|
||||
"what": "three r1 rounds at a box corner with the curvature (g2) corner at its default setback 1.5 r",
|
||||
"source": "invariants",
|
||||
"method": "as ladder 07-fillets/015 at r1: the corner set back 1.5 and filled with one patch; no closed-form volume: one valid body, 6 faces + 3 rounds + the patch, within the box",
|
||||
"body_count": 1,
|
||||
"faces": 10,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
60,
|
||||
40,
|
||||
20
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 40,
|
||||
"height": 20,
|
||||
"body_name": "Part"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
20,
|
||||
20
|
||||
],
|
||||
[
|
||||
30,
|
||||
40,
|
||||
20
|
||||
],
|
||||
[
|
||||
60,
|
||||
40,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 1,
|
||||
"corner": "g2",
|
||||
"tangent_chain": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#9"
|
||||
],
|
||||
"what": "three r2 rounds at a box corner, curvature (g2) corner, set back 1.5: not past where the rounds meet (r): refused",
|
||||
"source": "invariants",
|
||||
"method": "a setback must reach past where the corner's rounds meet without one, past r = 2 on a corner of faces square to each other (smlib_blend_setback, solid.fillet `setbacks`); 1.5 is not, so the right answer is a clean refusal",
|
||||
"outcome": "refused"
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 40,
|
||||
"height": 20,
|
||||
"body_name": "Part"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
20,
|
||||
20
|
||||
],
|
||||
[
|
||||
30,
|
||||
40,
|
||||
20
|
||||
],
|
||||
[
|
||||
60,
|
||||
40,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"corner": "g2",
|
||||
"setbacks": [
|
||||
{
|
||||
"vertex": [
|
||||
60,
|
||||
40,
|
||||
20
|
||||
],
|
||||
"distance": 1.5
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#9"
|
||||
],
|
||||
"what": "three r2 rounds at a box corner, rolling-ball corner, set back 1.5: not past where the rounds meet (r): refused",
|
||||
"source": "invariants",
|
||||
"method": "a setback must reach past where the corner's rounds meet without one, past r = 2 on a corner of faces square to each other (smlib_blend_setback, solid.fillet `setbacks`); 1.5 is not, so the right answer is a clean refusal",
|
||||
"outcome": "refused"
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 40,
|
||||
"height": 20,
|
||||
"body_name": "Part"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
20,
|
||||
20
|
||||
],
|
||||
[
|
||||
30,
|
||||
40,
|
||||
20
|
||||
],
|
||||
[
|
||||
60,
|
||||
40,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"corner": "rolling",
|
||||
"setbacks": [
|
||||
{
|
||||
"vertex": [
|
||||
60,
|
||||
40,
|
||||
20
|
||||
],
|
||||
"distance": 1.5
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#9"
|
||||
],
|
||||
"what": "three r2 rounds at a box corner, curvature (g2) corner, set back 2: not past where the rounds meet (r): refused",
|
||||
"source": "invariants",
|
||||
"method": "a setback must reach past where the corner's rounds meet without one, past r = 2 on a corner of faces square to each other (smlib_blend_setback, solid.fillet `setbacks`); 2 is not, so the right answer is a clean refusal",
|
||||
"outcome": "refused"
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 40,
|
||||
"height": 20,
|
||||
"body_name": "Part"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
20,
|
||||
20
|
||||
],
|
||||
[
|
||||
30,
|
||||
40,
|
||||
20
|
||||
],
|
||||
[
|
||||
60,
|
||||
40,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"corner": "g2",
|
||||
"setbacks": [
|
||||
{
|
||||
"vertex": [
|
||||
60,
|
||||
40,
|
||||
20
|
||||
],
|
||||
"distance": 2
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#9"
|
||||
],
|
||||
"what": "three r2 rounds at a box corner, rolling-ball corner, set back 2: not past where the rounds meet (r): refused",
|
||||
"source": "invariants",
|
||||
"method": "a setback must reach past where the corner's rounds meet without one, past r = 2 on a corner of faces square to each other (smlib_blend_setback, solid.fillet `setbacks`); 2 is not, so the right answer is a clean refusal",
|
||||
"outcome": "refused"
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 40,
|
||||
"height": 20,
|
||||
"body_name": "Part"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
20,
|
||||
20
|
||||
],
|
||||
[
|
||||
30,
|
||||
40,
|
||||
20
|
||||
],
|
||||
[
|
||||
60,
|
||||
40,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"corner": "rolling",
|
||||
"setbacks": [
|
||||
{
|
||||
"vertex": [
|
||||
60,
|
||||
40,
|
||||
20
|
||||
],
|
||||
"distance": 2
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user