mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 18:45:55 +00:00
kernel-cases: fillets chamfer cases from #814, #1080, #1390, #1986, #2672, #2719, #2797, #2907, #3655, #3779, #3868, #4055, #4101
Chamfers on boxes, plates, discs and sectors with closed-form volumes: all twelve edges in the order that was refused, a concave chamfer that adds material, a chamfer next to square openings and one that runs into them, a hole rim tangent to the bottom face, a hex hole's corner bevels, a one-pick chain on a large part, a bottom loop as wide as the corner round, two distances on a circular rim, the end outlines of a rounded prism, a chamfer over a joined pin, and the equal chamfer of a slanted plug. Spline-sided pillar (invariants only) for chamfer and fillet. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1080",
|
||||
"tangency-labs/solidcraft#1124"
|
||||
],
|
||||
"what": "a 4 mm chamfer on the top front edge of a cube with three square openings stays clear of the openings (they start 5 mm in)",
|
||||
"source": "analytic",
|
||||
"method": "cube 20 with three orthogonal 10x10 through openings (cross): union of the three bars 3*2000 - 3*1000 + 1000 = 4000, so V0 = 8000 - 4000 = 4000. The top front edge (y=0,z=20, length 20) is intact (the openings span 5..15 in the other axes), and a 4 mm setback stays inside the 5 mm between the edge and the openings: it removes 4^2/2 x 20 = 160, V = 3840.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 3840.0
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
-1,
|
||||
5,
|
||||
5
|
||||
],
|
||||
"length": 22,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
5,
|
||||
-1,
|
||||
5
|
||||
],
|
||||
"length": 10,
|
||||
"width": 22,
|
||||
"height": 10,
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
5,
|
||||
5,
|
||||
-1
|
||||
],
|
||||
"length": 10,
|
||||
"width": 10,
|
||||
"height": 22,
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"distance": 4,
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
0,
|
||||
20
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1080",
|
||||
"tangency-labs/solidcraft#1124"
|
||||
],
|
||||
"what": "a 9 mm chamfer on the top front edge of a cube with square openings 5 mm in must be refused: it would cut through the rims of the openings",
|
||||
"source": "invariants",
|
||||
"method": "cube 20 with three orthogonal 10x10 through openings; the top face opening starts 5 mm from the front edge and the front opening 5 mm below the top edge, so a 9 mm setback runs past the face between the edge and the openings and the chamfer plane would cross the openings and leave slivers. The right answer is a clean refusal; nothing is built.",
|
||||
"outcome": "refused"
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
-1,
|
||||
5,
|
||||
5
|
||||
],
|
||||
"length": 22,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
5,
|
||||
-1,
|
||||
5
|
||||
],
|
||||
"length": 10,
|
||||
"width": 22,
|
||||
"height": 10,
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
5,
|
||||
5,
|
||||
-1
|
||||
],
|
||||
"length": 10,
|
||||
"width": 10,
|
||||
"height": 22,
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"distance": 9,
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
0,
|
||||
20
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1390",
|
||||
"tangency-labs/solidcraft#1574",
|
||||
"tangency-labs/solidcraft#1428"
|
||||
],
|
||||
"what": "a 3 mm chamfer on the rim of a hole that is tangent to the bottom face runs off that face and must not add material below the part",
|
||||
"source": "invariants",
|
||||
"method": "cube 20 with a diameter 10 hole along -Y from the back face, its axis at z=5 so the hole wall touches the bottom face z=0 along one line. The hole rim on the back face has no face material between it and the bottom edge there, so a 3 mm setback cannot lie on the face: no chamfer of that size exists. The right answer is a clean refusal (a chamfer of a convex edge only ever removes material; building it grew the part by 1067 mm3 below the bottom face).",
|
||||
"outcome": "refused"
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"base": [
|
||||
10,
|
||||
20,
|
||||
5
|
||||
],
|
||||
"axis": [
|
||||
0,
|
||||
-1,
|
||||
0
|
||||
],
|
||||
"radius": 5,
|
||||
"height": 20,
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"distance": 3,
|
||||
"edges": [
|
||||
[
|
||||
15,
|
||||
20,
|
||||
5
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1986"
|
||||
],
|
||||
"what": "a 3 mm chamfer on the outer top arc of a 120 degree annular sector joined to a lower inner sector (the joined outer wall must not limit the chamfer)",
|
||||
"source": "analytic",
|
||||
"method": "sector r6..10 (120 degrees) 20 tall joined with sector r3..6 18 tall: V0 = 1/2 (2 pi/3) (100-36) 20 + 1/2 (2 pi/3) (36-9) 18. The chamfer c=3 of the top outer arc (top face ring is 4 wide, wall 20 tall) removes the triangle (c^2/2) revolved over 120 degrees at its centroid radius R - c/3 = 9 (Pappus): 4.5 * (2 pi/3) * 9 = 84.82. It ends on the two radial end planes. V = V0 - 84.82 = 1764.528. The pick is the arc midpoint (5, 8.660, 20).",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 1764.5278737662668
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
10,
|
||||
0
|
||||
],
|
||||
"end": [
|
||||
-4.999999999999998,
|
||||
8.660254037844387
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-4.999999999999998,
|
||||
8.660254037844387
|
||||
],
|
||||
[
|
||||
-2.9999999999999987,
|
||||
5.196152422706632
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
6,
|
||||
0
|
||||
],
|
||||
"end": [
|
||||
-2.9999999999999987,
|
||||
5.196152422706632
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
6,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 20,
|
||||
"body_name": "Sector"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
6,
|
||||
0
|
||||
],
|
||||
"end": [
|
||||
-2.9999999999999987,
|
||||
5.196152422706632
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-2.9999999999999987,
|
||||
5.196152422706632
|
||||
],
|
||||
[
|
||||
-1.4999999999999993,
|
||||
2.598076211353316
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
3,
|
||||
0
|
||||
],
|
||||
"end": [
|
||||
-1.4999999999999993,
|
||||
2.598076211353316
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
3,
|
||||
0
|
||||
],
|
||||
[
|
||||
6,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 18,
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Sector"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
8.660254037844386,
|
||||
20
|
||||
]
|
||||
],
|
||||
"distance": 3
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2672",
|
||||
"tangency-labs/solidcraft#3295"
|
||||
],
|
||||
"what": "one pick on a stadium boss top rim chamfers the whole tangent loop, also when the part is more than 200 mm across",
|
||||
"source": "analytic",
|
||||
"method": "plate 145x145x10 + stadium boss (straights 40, end arcs R5) 10 tall = 145^2*10 + 10*(40*10 + pi*25). One pick takes the whole tangent chain: 2 straight edges of c^2/2*40 = 20 each, plus the two end half-arcs, one full revolution of the triangle (c^2/2) about the boss axis at its centroid radius R - c/3 (Pappus): c^2/2*2*pi*(R - c/3) = 14.66, with c=1, R=5. Removed 54.66 in all. The tolerance is tightened to 5e-6 because the whole-rim result differs from the one-edge result (21.5) by 0.015% of the part volume. Faces: plate 6 (the top with the boss footprint cut out stays one face) + boss walls 4 + boss top 1 + 4 chamfer faces = 15.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 214980.7373976807,
|
||||
"faces": 15,
|
||||
"tolerance": {
|
||||
"rel": 5e-06
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 145,
|
||||
"width": 145,
|
||||
"height": 10,
|
||||
"center": [
|
||||
0,
|
||||
0,
|
||||
5
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.slot.overall",
|
||||
"params": {
|
||||
"p0": [
|
||||
-25,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
0
|
||||
],
|
||||
"width": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 10,
|
||||
"operation": "join"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
5,
|
||||
20
|
||||
]
|
||||
],
|
||||
"distance": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2719"
|
||||
],
|
||||
"what": "a 1 mm chamfer round a bottom loop whose corners are R1 rounds: each corner cone closes to a point on the bottom face",
|
||||
"source": "analytic",
|
||||
"method": "block 40x40x20 with the four vertical edges rounded R1: V0 = 32000 - 4*(1-pi/4)*20. A 1 mm chamfer on the bottom loop (4 straights of 38 mm and 4 quarter arcs R1): straights 4 * 1/2 * 38 = 76; each quarter arc is a quarter revolution of the 1 mm right triangle about the corner axis, centroid radius R - c/3 = 2/3 (Pappus): 1/2 * (pi/2) * (2/3) = pi/6 each. Because c = R the chamfer cone has its apex on the axis at z=0. V = V0 - 76 - 4*pi/6 = 31904.738. Faces: top, bottom, 4 sides, 4 R1 cylinders, 4 chamfer planes, 4 chamfer cones = 18.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 31904.7374579694,
|
||||
"faces": 18
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 20,
|
||||
"center": [
|
||||
0,
|
||||
0,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
20,
|
||||
20,
|
||||
10
|
||||
],
|
||||
[
|
||||
-20,
|
||||
20,
|
||||
10
|
||||
],
|
||||
[
|
||||
20,
|
||||
-20,
|
||||
10
|
||||
],
|
||||
[
|
||||
-20,
|
||||
-20,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"distance": 1,
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
20,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
-20,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
-20,
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
19.7071,
|
||||
19.7071,
|
||||
0
|
||||
],
|
||||
[
|
||||
-19.7071,
|
||||
19.7071,
|
||||
0
|
||||
],
|
||||
[
|
||||
19.7071,
|
||||
-19.7071,
|
||||
0
|
||||
],
|
||||
[
|
||||
-19.7071,
|
||||
-19.7071,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2797",
|
||||
"tangency-labs/solidcraft#3300",
|
||||
"tangency-labs/solidcraft#2893"
|
||||
],
|
||||
"what": "a Two Distances chamfer (1 mm on the top face, 0.5 mm down the wall) on the circular rim between a plane and a cylinder",
|
||||
"source": "analytic",
|
||||
"method": "cylinder R3 height 2; chamfer of the top rim with distance 1 along the first face (the top face, the one facing up) and distance2 0.5 along the wall. Both legs lie in the meridian plane (the wall generatrix is straight), so the removed ring is the right triangle (legs 1 and 0.5) revolved once about the axis at its centroid radius R - d1/3 (Pappus): V = pi*9*2 - 0.5*1*0.5*2*pi*(3 - 1/3) = 52.3599.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 52.35987755982988,
|
||||
"faces": 4
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 3,
|
||||
"height": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
3,
|
||||
0,
|
||||
2
|
||||
]
|
||||
],
|
||||
"distance": 1,
|
||||
"distance2": 0.5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2907",
|
||||
"tangency-labs/solidcraft#3861"
|
||||
],
|
||||
"what": "a 1.5 mm chamfer of both end outlines (sides, top and the two top arcs) of a prism with rounded top corners, bottom edges left alone",
|
||||
"source": "analytic",
|
||||
"method": "prism: 30 wide x 20 high section with the two top corners rounded R4 (area 600 - 2 (1-pi/4) 16), 40 long: V0 = 23725.310. Each end outline is an open chain: side 16 + arc (pi/2 R4 = 6.283) + top 22 + arc + side 16 = 66.566, total turning pi. Chamfer c=1.5 removes the triangle (c^2/2) along the chain at its centroid line, whose length is the chain length less (c/3) x turning (Pappus on the arcs): c^2/2 (66.566 - 0.5 pi) per end, and the chain ends on the bottom plane at both sides. Both ends: 146.2400. V = 23579.0696.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 23579.069607001715
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "YZ"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
16
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
30,
|
||||
0
|
||||
],
|
||||
[
|
||||
30,
|
||||
16
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
26,
|
||||
16
|
||||
],
|
||||
"start": [
|
||||
30,
|
||||
16
|
||||
],
|
||||
"end": [
|
||||
26,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
26,
|
||||
20
|
||||
],
|
||||
[
|
||||
4,
|
||||
20
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
4,
|
||||
16
|
||||
],
|
||||
"start": [
|
||||
4,
|
||||
20
|
||||
],
|
||||
"end": [
|
||||
0,
|
||||
16
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 40
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"distance": 1.5,
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
8
|
||||
],
|
||||
[
|
||||
0,
|
||||
15,
|
||||
20
|
||||
],
|
||||
[
|
||||
0,
|
||||
30,
|
||||
8
|
||||
],
|
||||
[
|
||||
0,
|
||||
28.82842712474619,
|
||||
18.82842712474619
|
||||
],
|
||||
[
|
||||
0,
|
||||
1.1715728752538102,
|
||||
18.82842712474619
|
||||
],
|
||||
[
|
||||
40,
|
||||
0,
|
||||
8
|
||||
],
|
||||
[
|
||||
40,
|
||||
15,
|
||||
20
|
||||
],
|
||||
[
|
||||
40,
|
||||
30,
|
||||
8
|
||||
],
|
||||
[
|
||||
40,
|
||||
28.82842712474619,
|
||||
18.82842712474619
|
||||
],
|
||||
[
|
||||
40,
|
||||
1.1715728752538102,
|
||||
18.82842712474619
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3655",
|
||||
"tangency-labs/solidcraft#3660"
|
||||
],
|
||||
"what": "a plain box with all 12 edges chamfered, the edges listed in an order that was refused",
|
||||
"source": "analytic",
|
||||
"method": "box 40x30x12.5, equal chamfer d=2.5 on all 12 edges. Each edge prism removes d^2/2 x L, summed over L = 4(40+30+12.5) = 330. At each of the 8 corners the three prisms overlap: pairwise overlaps d^3/3 each (x3), triple overlap d^3/4, so the prisms count d^3 - ... = 0.75 d^3 too much per corner. V = 15000 - 3.125*330 + 8*0.75*2.5^3 = 14062.5. The result does not depend on the order the edges are listed. Faces: 6 box faces + 12 chamfer faces (each corner has no extra facet: the three chamfer planes meet in one point).",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 14062.5,
|
||||
"faces": 18
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
40,
|
||||
30
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 12.5,
|
||||
"operation": "new"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
40,
|
||||
15,
|
||||
12.5
|
||||
],
|
||||
[
|
||||
20,
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
30,
|
||||
6
|
||||
],
|
||||
[
|
||||
0,
|
||||
15,
|
||||
12.5
|
||||
],
|
||||
[
|
||||
40,
|
||||
30,
|
||||
6
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
6
|
||||
],
|
||||
[
|
||||
40,
|
||||
15,
|
||||
0
|
||||
],
|
||||
[
|
||||
40,
|
||||
0,
|
||||
6
|
||||
],
|
||||
[
|
||||
20,
|
||||
30,
|
||||
12.5
|
||||
],
|
||||
[
|
||||
0,
|
||||
15,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
0,
|
||||
12.5
|
||||
],
|
||||
[
|
||||
20,
|
||||
30,
|
||||
0
|
||||
]
|
||||
],
|
||||
"distance": 2.5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3779",
|
||||
"tangency-labs/solidcraft#3804"
|
||||
],
|
||||
"what": "a 0.1 mm chamfer on all eight top-rim spans of a 20 x 20 pillow whose four sides are fit splines (two cubic spans each)",
|
||||
"source": "invariants",
|
||||
"method": "closed profile of four fit-point splines, each through (0,0), (10,-3), (20,0) and its quarter-turn rotations about (10,10), extruded 10: the rim is a smooth chain of eight spline spans meeting at the four corners. A 0.1 mm equal setback is tiny against every face (10 mm tall walls, a 20 mm top), so it must build, and the body stays one closed valid solid. The area inside the splines has no closed form here (the spline end conditions are not fixed by the construction), so only validity is graded.",
|
||||
"body_count": 1
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.spline.fit_point",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
-3
|
||||
],
|
||||
[
|
||||
20,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.spline.fit_point",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
20,
|
||||
0
|
||||
],
|
||||
[
|
||||
23,
|
||||
10
|
||||
],
|
||||
[
|
||||
20,
|
||||
20
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.spline.fit_point",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
20,
|
||||
20
|
||||
],
|
||||
[
|
||||
10,
|
||||
23
|
||||
],
|
||||
[
|
||||
0,
|
||||
20
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.spline.fit_point",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
20
|
||||
],
|
||||
[
|
||||
-3,
|
||||
10
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 10,
|
||||
"body_name": "Pillow"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
4.8592,
|
||||
-2.0044,
|
||||
10
|
||||
],
|
||||
[
|
||||
15.1408,
|
||||
-2.0044,
|
||||
10
|
||||
],
|
||||
[
|
||||
22.0044,
|
||||
4.8592,
|
||||
10
|
||||
],
|
||||
[
|
||||
22.0044,
|
||||
15.1408,
|
||||
10
|
||||
],
|
||||
[
|
||||
15.1408,
|
||||
22.0044,
|
||||
10
|
||||
],
|
||||
[
|
||||
4.8592,
|
||||
22.0044,
|
||||
10
|
||||
],
|
||||
[
|
||||
-2.0044,
|
||||
15.1408,
|
||||
10
|
||||
],
|
||||
[
|
||||
-2.0044,
|
||||
4.8592,
|
||||
10
|
||||
]
|
||||
],
|
||||
"distance": 0.1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3868"
|
||||
],
|
||||
"what": "a chamfer of an inside (concave) edge fills the corner and adds material, one on the outside edge removes it",
|
||||
"source": "analytic",
|
||||
"method": "box 20^3 shelled to a 2 mm wall, open top: cavity 16x16x18, V0 = 8000 - 4608 = 3392. 1 mm chamfer on the inside bottom edge (concave, 16 mm long): adds the triangle 1^2/2 x 16 = +8. 1 mm chamfer on the outside bottom edge (convex, 20 mm long): removes 1^2/2 x 20 = 10. V = 3392 + 8 - 10 = 3390. Each chamfer ends on planes (the side walls), so no corner overlaps.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 3390.0
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.shell",
|
||||
"params": {
|
||||
"faces": [
|
||||
[
|
||||
10,
|
||||
10,
|
||||
20
|
||||
]
|
||||
],
|
||||
"thickness": 2,
|
||||
"direction": "inside"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"distance": 1,
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
2,
|
||||
2
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"distance": 1,
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
0,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4055"
|
||||
],
|
||||
"what": "a 3 mm chamfer on the bottom long edge of a bar joined on top of a pin, where the chamfer is wider than the 2 mm gap between that edge and the pin",
|
||||
"source": "analytic",
|
||||
"method": "pin R8 x 30 (z 0..30) under a bar 100x20x15 (x -50..50, y -10..10, z 30..45). The chamfer of the bar bottom long edge (y=-10, z=30) removes the triangle 3 x 3 along the whole 100 mm: 450. All of it is inside the bar (z>=30); the pin lies below z=30, so it is untouched and only uncovers a strip of its top: V = pi*64*30 + 30000 - 450 = 35581.858. The result must be a closed solid (the strip of the pin top becomes a face).",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 35581.857894892404
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 8,
|
||||
"height": 30
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 20,
|
||||
"height": 15,
|
||||
"corner": [
|
||||
-50,
|
||||
-10,
|
||||
30
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Body1"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
-30,
|
||||
-10,
|
||||
30
|
||||
]
|
||||
],
|
||||
"distance": 3
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4101"
|
||||
],
|
||||
"what": "the four edges of a block end face chamfered where the block sides are 1 degree off square: exact volume of the plane-clipped prism (the corner edges of about 0.0001 mm are real geometry)",
|
||||
"source": "analytic",
|
||||
"method": "prism over the quadrilateral (0,0),(14.8,0),(14.6,12),(0.2,12), height 6.5, convex. The chamfered body is the prism cut by 4 half-spaces, one per chamfered edge of the y=12 face: each plane passes through the edge direction and the points at distance 0.8 from the edge along each adjacent face (along the slanted side faces for the two slanted edges). V = convex polytope volume of the prism clipped by those 4 planes (exact clipping, no kernel). Faces: 6 + 4 = 10. The exact polytope has four extra edges about 0.0001 mm long, one per corner (the chamfer along a slanted side is 0.8 along that side, and 0.8 along the end face, so the neighbouring chamfers meet the bottom face at points 0.00011 mm apart): they are real geometry, so vertex and edge counts are not graded.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 1126.1015080310985,
|
||||
"faces": 10
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Plan"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"closed": true,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
14.8,
|
||||
0
|
||||
],
|
||||
[
|
||||
14.6,
|
||||
12
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
12
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 6.5,
|
||||
"body_name": "Plug"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"body": "Plug",
|
||||
"edges": [
|
||||
[
|
||||
7.4,
|
||||
12,
|
||||
6.5
|
||||
],
|
||||
[
|
||||
7.4,
|
||||
12,
|
||||
0
|
||||
],
|
||||
[
|
||||
0.2,
|
||||
12,
|
||||
3.25
|
||||
],
|
||||
[
|
||||
14.6,
|
||||
12,
|
||||
3.25
|
||||
]
|
||||
],
|
||||
"distance": 0.8
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#814",
|
||||
"tangency-labs/solidcraft#1067"
|
||||
],
|
||||
"what": "a 2 mm chamfer on the six vertical corners of a hexagonal hole: one bevel each, not a notch",
|
||||
"source": "analytic",
|
||||
"method": "disc diameter 55 x 10 with a regular hexagonal hole of circumradius 25: V0 = pi 27.5^2 10 - 10 (3 sqrt(3)/2) 625 = 7520.3. Each hole corner is a 120 degree concave edge: the equal chamfer 2 fills the triangle with two sides 2 and the included 120 degrees, area 0.5 2 2 sin(120) = 1.732, x 10 high x 6 corners = +103.92. V = 7624.241. Faces: disc top, bottom, outer cylinder, 6 walls, 6 bevels = 15.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 7624.241170268724,
|
||||
"faces": 15
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"diameter": 55
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.polygon.inscribed",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 25,
|
||||
"sides": 6,
|
||||
"angle": 90
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 10,
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"distance": 2,
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
25,
|
||||
5
|
||||
],
|
||||
[
|
||||
-21.650635,
|
||||
12.5,
|
||||
5
|
||||
],
|
||||
[
|
||||
-21.650635,
|
||||
-12.5,
|
||||
5
|
||||
],
|
||||
[
|
||||
0,
|
||||
-25,
|
||||
5
|
||||
],
|
||||
[
|
||||
21.650635,
|
||||
-12.5,
|
||||
5
|
||||
],
|
||||
[
|
||||
21.650635,
|
||||
12.5,
|
||||
5
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user