mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 10:35:58 +00:00
kernel-cases: fillets outline and corner cases from #237, #334, #485, #556, #851, #1207, #1213, #1262, #1557, #1667, #2498
Rounds along curved outlines, with the removed volume worked out by Pappus or by integration: merged cylinders, a D prism, a rounded rectangle with 0.02 mm end edges, a long box beside quarter turns, vertical corners after bottom rounds, a bent tube end, a boss's bottom arc, bars running into a boss, an edge ending on a curved wall, and the knife-edge arc corner. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1207"
|
||||
],
|
||||
"what": "an R2 round on the concave arc where a bar top meets a boss that only partly sits on it",
|
||||
"source": "analytic",
|
||||
"method": "bar 100x30x10 (x 0..100, y -15..15) joined with a diameter 40 boss 20 tall at the origin. Boss in bar = integral of sqrt(400-y^2) over |y|<=15 = 537.656 mm^2 x 10 high, so V0 = 30000 + 25132.74 - 5376.56. The R2 concave round along the arc (r=20, z=10, from y=-15 to y=15) adds the spandrel region 20<=r<=22, 10<=z<=12 outside the circle at (22,12) swept over the angle 2 asin(15/r) (the strip ends on the side planes y=+-15, not on radial planes): add = integral over r of [2 - sqrt(4-(r-22)^2)] r 2 asin(15/r) dr = 28.9190 (Simpson). V = V0 + add.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 49785.098450739075
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"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": [
|
||||
[
|
||||
19.3649,
|
||||
5,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1207"
|
||||
],
|
||||
"what": "an R2 round along the straight top edge of a bar that runs out against a cylindrical boss",
|
||||
"source": "analytic",
|
||||
"method": "same bar and boss as 1207-fillet-concave-arc-at-boss (V0 = 49756.179). The R2 round on the top edge at y=15 removes the quarter-circle spandrel (y 13..15, z 8..10) swept along x from the boss wall x = sqrt(400-y^2) to x=100: removed = integral over y of [2 - sqrt(4-(y-13)^2)] (100 - sqrt(400-y^2)) dy = 74.0736 (Simpson). V = V0 - removed.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 49682.10580370255
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"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
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1213",
|
||||
"tangency-labs/solidcraft#1291"
|
||||
],
|
||||
"what": "an R3 round on the end circle of a lofted tube whose axis bends (a 60 degree torus section)",
|
||||
"source": "analytic",
|
||||
"method": "five circles R20 square to a centre arc of radius 100 turning 60 degrees, lofted: the tube is a torus section, V = pi*20^2*100*(pi/3) = 131594.7. The R3 round on the start circle removes the spandrel (1-pi/4) r^2 revolved about the tube axis (the end circle is a plain circle in the plane x=0) at its centroid radius R - r (5/6-pi/4)/(1-pi/4) = 19.33 (Pappus): 234.58. V = 131360.1. The loft passes through only five sections, so the tolerance is relaxed to 5e-4.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 131360.14839866068,
|
||||
"tolerance": {
|
||||
"rel": 0.0005
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,228 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"y_dir": [
|
||||
0.0,
|
||||
-1.0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "S0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 20.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
25.881904510252074,
|
||||
3.407417371093169,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"y_dir": [
|
||||
0.25881904510252074,
|
||||
-0.9659258262890683,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "S1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 20.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
49.99999999999999,
|
||||
13.397459621556129,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"y_dir": [
|
||||
0.49999999999999994,
|
||||
-0.8660254037844387,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "S2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 20.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
70.71067811865474,
|
||||
29.28932188134524,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"y_dir": [
|
||||
0.7071067811865475,
|
||||
-0.7071067811865476,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "S3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 20.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
86.60254037844386,
|
||||
49.999999999999986,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
],
|
||||
"y_dir": [
|
||||
0.8660254037844386,
|
||||
-0.5000000000000001,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "S4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 20.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.loft",
|
||||
"params": {
|
||||
"sections": [
|
||||
{
|
||||
"sketch": "S0"
|
||||
},
|
||||
{
|
||||
"sketch": "S1"
|
||||
},
|
||||
{
|
||||
"sketch": "S2"
|
||||
},
|
||||
{
|
||||
"sketch": "S3"
|
||||
},
|
||||
{
|
||||
"sketch": "S4"
|
||||
}
|
||||
],
|
||||
"operation": "new",
|
||||
"name": "Bent",
|
||||
"body_name": "Tube"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
0.0,
|
||||
-14.1421,
|
||||
14.1421
|
||||
]
|
||||
],
|
||||
"radius": 3.0,
|
||||
"name": "EndRound"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1262"
|
||||
],
|
||||
"what": "a 0.8 mm round on the exposed half circle at the bottom of a cylindrical boss joined to a box side",
|
||||
"source": "analytic",
|
||||
"method": "box 40x40x20 joined with a cylinder R12 height 40 centred on its side face at (40,20): union = 32000 + pi*144*40 - (half of the cylinder inside the box, pi*144/2*20) = 46476.5. The R0.8 round on the exposed bottom half circle (a half revolution, ending on the plane x=40 through the axis) removes (1-pi/4) r^2 x pi x (R - 0.2232 r) = 5.1007 (Pappus on the spandrel, centroid offset r (5/6-pi/4)/(1-pi/4)). V = 45566.580.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 45566.57957588062
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 20,
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"body_name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"base": [
|
||||
40,
|
||||
20,
|
||||
0
|
||||
],
|
||||
"radius": 12,
|
||||
"height": 40,
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Block"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
52,
|
||||
20,
|
||||
0
|
||||
]
|
||||
],
|
||||
"radius": 0.8
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1557",
|
||||
"tangency-labs/solidcraft#1581"
|
||||
],
|
||||
"what": "vertical corner fillets R2 on a 25x25x10 box whose four bottom edges are already rounded R2 (the round meets the earlier mitre)",
|
||||
"source": "analytic",
|
||||
"method": "box 25x25x10 with the four bottom edges and the four vertical edges rounded R2, top edges left sharp. That is the body (inner rectangle [r,a-r]x[r,b-r] x [r, c+r] grown by a ball r) cut at z=c. Slices: for z>=r the section is the rounded rectangle, area ab - (4-pi) r^2; for 0<=z<=r it is the inner rectangle grown by a disc of radius rho(z) = sqrt(r^2-(r-z)^2): (a-2r)(b-2r) + 2 rho (a+b-4r) + pi rho^2. With the integrals of rho = pi r^2/4 and rho^2 = 2 r^3/3 over z in 0..r: V = (a-2r)(b-2r) r + (a+b-4r) pi r^2/2 + 2 pi r^3/3 + (c-r)(ab-(4-pi) r^2) = 6135.1799. Faces: top, bottom, 4 sides, 4 vertical R2 cylinders, 4 bottom R2 cylinders, 4 sphere octants = 18.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 6135.179908635561,
|
||||
"faces": 18
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
25
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"radius": 2,
|
||||
"edges": [
|
||||
[
|
||||
12.5,
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
25,
|
||||
12.5,
|
||||
0
|
||||
],
|
||||
[
|
||||
12.5,
|
||||
25,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
12.5,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"radius": 2,
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
6
|
||||
],
|
||||
[
|
||||
25,
|
||||
0,
|
||||
6
|
||||
],
|
||||
[
|
||||
25,
|
||||
25,
|
||||
6
|
||||
],
|
||||
[
|
||||
0,
|
||||
25,
|
||||
6
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1667",
|
||||
"tangency-labs/solidcraft#1702"
|
||||
],
|
||||
"what": "an R5 round of the top rim of a 297 mm long box whose corners are R5 (a 287 mm line beside 7.85 mm quarter turns)",
|
||||
"source": "analytic",
|
||||
"method": "box 297x100x60 with the four vertical edges rounded R5: area 297*100 - (4-pi)*25, 60 high. One pick on the long top edge takes the whole tangent loop (2 lines of 287, 2 of 90, 4 quarter arcs R5; perimeter P = 785.416). The R5 round (equal to the corner radius, so each corner becomes a sphere octant) removes (1-pi/4) r^2 (P - 2 pi x r), x r = r (5/6-pi/4)/(1-pi/4) the spandrel centroid offset. V = 1776536.245.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 1776536.244666527
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 297,
|
||||
"width": 100,
|
||||
"height": 60
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
30
|
||||
],
|
||||
[
|
||||
297,
|
||||
0,
|
||||
30
|
||||
],
|
||||
[
|
||||
297,
|
||||
100,
|
||||
30
|
||||
],
|
||||
[
|
||||
0,
|
||||
100,
|
||||
30
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"edges": [
|
||||
[
|
||||
148.5,
|
||||
0,
|
||||
60
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#237",
|
||||
"tangency-labs/solidcraft#238"
|
||||
],
|
||||
"what": "an R6 round on the vertical edge where two cylinder walls meet (the concave corner of two merged discs), the two walls meeting at an angle",
|
||||
"source": "analytic",
|
||||
"method": "sketch of two arcs (R1 = 17.1406 about the origin and R2 = 9.6669 about (10.7158, 13.3781), which lies on the first circle) closing at A and B: the outline of the union of the two discs, 10 high. Union area = pi R1^2 + pi R2^2 - lens(R1, R2, d) = 1087.5019. The edge at B (reflex corner) is concave: the R6 round fills the corner with the circle tangent externally to both walls (centre at distance R1+6 and R2+6 from the two centres). Area added = polygon area of the region bounded by the two wall arcs (B to the tangent points) and the R6 arc = 1.4755 (120000-point shoelace). V = 10*(union + added) = 10889.773. The round stays on the walls (the tangent points lie on the outline part of each circle).",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 10889.773289961511
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
1.7728134670876865,
|
||||
17.048669520256194
|
||||
],
|
||||
"end": [
|
||||
16.250324167975673,
|
||||
5.452243981674495
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
10.715766135516247,
|
||||
13.378055020402751
|
||||
],
|
||||
"start": [
|
||||
16.250324167975673,
|
||||
5.452243981674495
|
||||
],
|
||||
"end": [
|
||||
1.7728134670876865,
|
||||
17.048669520256194
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
16.250324167975673,
|
||||
5.452243981674495,
|
||||
5
|
||||
]
|
||||
],
|
||||
"radius": 6
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2498",
|
||||
"tangency-labs/solidcraft#2506"
|
||||
],
|
||||
"what": "an R2 round of the top loop of a 26.4x8.6x8.4 rounded rectangle whose end edges are only 0.02 mm long (corner radius 4.29)",
|
||||
"source": "analytic",
|
||||
"method": "rounded rectangle 26.4 x 8.6, corners R4.29 (the two end lines are 8.6 - 8.58 = 0.02 long), extruded 8.4: area 26.4*8.6 - (4-pi)*4.29^2, perimeter P = 2*17.82 + 2*0.02 + 2*pi*4.29 = 62.635. The R2 round of the whole top loop removes (1-pi/4) r^2 (P - 2 pi x r), x r = r (5/6-pi/4)/(1-pi/4). V = 1723.0743. Topology (all contacts tangent, nothing merges): 18 faces (top, bottom, 8 wall faces, 8 round faces), 24 vertices (8 on the bottom loop, 8 where the round meets the wall, 8 where it meets the top), 40 edges (V - E + F = 2).",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 1723.0742532035633,
|
||||
"faces": 18,
|
||||
"edges": 40,
|
||||
"vertices": 24
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.rounded",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
26.4,
|
||||
8.6
|
||||
],
|
||||
"radius": 4.29
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 8.4
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"radius": 2,
|
||||
"edges": [
|
||||
[
|
||||
13.2,
|
||||
0,
|
||||
8.4
|
||||
],
|
||||
[
|
||||
13.2,
|
||||
8.6,
|
||||
8.4
|
||||
],
|
||||
[
|
||||
0,
|
||||
4.3,
|
||||
8.4
|
||||
],
|
||||
[
|
||||
26.4,
|
||||
4.3,
|
||||
8.4
|
||||
],
|
||||
[
|
||||
1.2565119087097112,
|
||||
1.2565119087097112,
|
||||
8.4
|
||||
],
|
||||
[
|
||||
25.143488091290287,
|
||||
1.2565119087097112,
|
||||
8.4
|
||||
],
|
||||
[
|
||||
25.143488091290287,
|
||||
7.343488091290288,
|
||||
8.4
|
||||
],
|
||||
[
|
||||
1.2565119087097112,
|
||||
7.343488091290288,
|
||||
8.4
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#334",
|
||||
"tangency-labs/solidcraft#335"
|
||||
],
|
||||
"what": "an R2 round on the whole top outline of two merged cylinders after their two concave vertical edges were rounded R5",
|
||||
"source": "analytic",
|
||||
"method": "two discs R25 with centres 25 apart, extruded 10 and merged: union area 2*pi*25^2 - lens (lens = 2R^2 acos(d/2R) - d/2 sqrt(4R^2-d^2)) = 3159.260. R5 on the two concave vertical cusps adds, per cusp, the area between the two circles and the R5 circle tangent to both (centre at distance R+r = 30 from both centres, i.e. (-12.5, +-27.272)) = 0.8803 (polygon area of the region bounded by the three arcs, 120000 points). Outline after that: perimeter 208.653 (union 2*(240/360)*2*pi*25, less the arcs replaced, plus the two R5 arcs). The R2 round of the whole top outline (one closed smooth loop, total turning 2 pi) removes (1-pi/4) r^2 (P - 2 pi x r) with x r = r (5/6-pi/4)/(1-pi/4) the spandrel centroid offset (Pappus along the curved loop, ds scaled by 1 - kappa x). V = 10*(union + 2*add) - that = 31433.505.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 31433.50481953096
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 25
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
-25,
|
||||
0
|
||||
],
|
||||
"radius": 25
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 10,
|
||||
"profiles": [
|
||||
0,
|
||||
1,
|
||||
2
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
-12.5,
|
||||
21.650635,
|
||||
5
|
||||
],
|
||||
[
|
||||
-12.5,
|
||||
-21.650635,
|
||||
5
|
||||
]
|
||||
],
|
||||
"radius": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
25,
|
||||
0,
|
||||
10
|
||||
],
|
||||
[
|
||||
-50,
|
||||
0,
|
||||
10
|
||||
],
|
||||
[
|
||||
-12.5,
|
||||
22.27178,
|
||||
10
|
||||
],
|
||||
[
|
||||
-12.5,
|
||||
-22.27178,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#485",
|
||||
"tangency-labs/solidcraft#604"
|
||||
],
|
||||
"what": "an R0.5 round on both top perimeter edges (the arc and the flat) of a D-shaped prism, the two edges meeting at sharp 90 degree corners",
|
||||
"source": "analytic",
|
||||
"method": "D prism: half disc R10 (line from (-10,0) to (10,0) plus the arc), 15 tall: V0 = pi*100/2*15 = 2356.19. The R0.5 round of the top edges leaves a crease where the two rounds meet at each corner, so the top surface height at a point of the D is set by its distance d to the boundary, d = min(y, R - rho): the removed height is r - sqrt(r^2 - (r-d)^2) for d < r. Removed volume = integral over the D of that height = 2.715582 (polar integral, split where the nearest boundary changes; agrees with the 2.7155784 inward-offset value computed in the source PR to 1e-6 relative). The tolerance is tightened to 5e-5 (0.12 mm^3) so that a round that removes 0.5 mm^3 too little is caught.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 2353.478908251137,
|
||||
"tolerance": {
|
||||
"rel": 5e-05
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-10,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
10,
|
||||
0
|
||||
],
|
||||
"end": [
|
||||
-10,
|
||||
0
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 15
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"radius": 0.5,
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
15
|
||||
],
|
||||
[
|
||||
0,
|
||||
10,
|
||||
15
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#556",
|
||||
"tangency-labs/solidcraft#646"
|
||||
],
|
||||
"what": "an R0.5 round on a single straight bottom edge of a box whose end runs out against a cylindrical boss wall",
|
||||
"source": "analytic",
|
||||
"method": "box 40x40x20 joined with a cylinder R12 height 40 centred on its side at (40,20): V0 = 32000 + pi*144*40 - pi*144/2*20 = 45571.680. The edge x=40, z=0 runs from y=0 to the boss wall (y = 20 - sqrt(144-(x-40)^2), 8.000 at x=40). The R0.5 round removes the quarter-circle spandrel (x 39.5..40, z 0..0.5 under the arc) swept along y up to the wall: removed = integral over x of [0.5 - sqrt(0.25-(x-39.5)^2)] (20 - sqrt(144-(x-40)^2)) dx = 0.42925. V = V0 - removed.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 45571.25101226832
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"base": [
|
||||
40,
|
||||
20,
|
||||
0
|
||||
],
|
||||
"radius": 12,
|
||||
"height": 40,
|
||||
"operation": "join"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
40,
|
||||
4,
|
||||
0
|
||||
]
|
||||
],
|
||||
"radius": 0.5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#851",
|
||||
"tangency-labs/solidcraft#854",
|
||||
"tangency-labs/solidcraft#926",
|
||||
"tangency-labs/solidcraft#935",
|
||||
"tangency-labs/solidcraft#1294"
|
||||
],
|
||||
"what": "three edges meeting at the front corner of a plate with a concave arc wall that runs out in a knife-edge tip: top front edge, arc top edge and front upright, R2 together",
|
||||
"source": "invariants",
|
||||
"method": "plate 41.5 x 21 plus the corner that a circle of radius 21 leaves (the arc wall meets the front face square and runs out tangent into the back face at (62.1667, 0)), 10 high. The three rounds meet at the corner in a piece of sphere or a crease, and the rounding is possible (the rolling ball of R2 fits everywhere on those edges). No closed form for the corner volume: one closed valid solid is the right answer.",
|
||||
"body_count": 1
|
||||
}
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
41.5,
|
||||
-21
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.dimension",
|
||||
"params": {
|
||||
"entities": [
|
||||
"l2"
|
||||
],
|
||||
"text_at": [
|
||||
36.5,
|
||||
-8.5
|
||||
],
|
||||
"value": "21 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"infer": true,
|
||||
"points": [
|
||||
"p2",
|
||||
[
|
||||
61.5,
|
||||
-21
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.dimension",
|
||||
"params": {
|
||||
"entities": [
|
||||
"l5"
|
||||
],
|
||||
"text_at": [
|
||||
54.5,
|
||||
-26.5
|
||||
],
|
||||
"value": "21"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": "l5.end",
|
||||
"radius": 21
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"infer": true,
|
||||
"points": [
|
||||
"p3",
|
||||
[
|
||||
62.166666666666664,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.constraint.tangent",
|
||||
"params": {
|
||||
"a": "c1",
|
||||
"b": "l6"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"direction": "positive",
|
||||
"distance": "10 mm",
|
||||
"operation": "new",
|
||||
"profiles": [
|
||||
0,
|
||||
1
|
||||
],
|
||||
"sketch": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
20,
|
||||
-21,
|
||||
10
|
||||
],
|
||||
[
|
||||
47.3174,
|
||||
-6.1508,
|
||||
10
|
||||
],
|
||||
[
|
||||
41.1667,
|
||||
-21,
|
||||
5
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user