mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-04 02:55:54 +00:00
Kernel rig: everyday rounds and chamfers of a hole through a plate
Top and both rims rounded r1 and chamfered 1; the top rim rounded r10 (as deep as the plate), r12 (past it on its tangent side: built by subtraction, fails today with status 1001) and Type: Curvature; chamfered 9.9 (fits) and 10 (the full depth: refused by the owner's rule, built today). Volumes by Pappus. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,8 @@
|
||||
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-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
|
||||
every-pocket-rim-edges-r2 a corner patch where two rim rounds meet at each concave pocket corner (19 faces, not 15) instead of the mitre the rounds make running into each other
|
||||
every-pocket-rim-edges-r5-as-deep-as-pocket a corner patch where two rim rounds meet at each concave pocket corner (15 faces, not 11) instead of the mitre the rounds make running into each other
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "both rims of a hole through a plate chamfered 1 in one chamfer",
|
||||
"source": "analytic",
|
||||
"method": "plate 40x40x10 with a through hole R5 at (20, 20): V0 = 16000 - 250 pi = 15214.6018. Each rim's chamfer removes 2 pi (5 + 1/3) 0.5 = 16.7552 (every-hole-top-rim-chamfer-1): V = 15181.0915. Faces 9.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 15181.09151496426,
|
||||
"faces": 9,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
40,
|
||||
40,
|
||||
10
|
||||
]
|
||||
},
|
||||
"continuity": {
|
||||
"order": "g0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 10,
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"height": 12,
|
||||
"base": [
|
||||
20,
|
||||
20,
|
||||
-1
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
25,
|
||||
20,
|
||||
10
|
||||
],
|
||||
[
|
||||
25,
|
||||
20,
|
||||
0
|
||||
]
|
||||
],
|
||||
"distance": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "both rims of a hole through a plate rounded r1 in one fillet",
|
||||
"source": "analytic",
|
||||
"method": "plate 40x40x10 with a through hole R5 at (20, 20): V0 = 16000 - 250 pi = 15214.6018. Each rim's r1 round removes 2 pi (5 A + M) = 7.0431 (every-hole-top-rim-r1), the two far apart (1 + 1 < 10): V = 15200.5156. Faces 9.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 15200.515634425325,
|
||||
"faces": 9,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
40,
|
||||
40,
|
||||
10
|
||||
]
|
||||
},
|
||||
"continuity": {
|
||||
"order": "g1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 10,
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"height": 12,
|
||||
"base": [
|
||||
20,
|
||||
20,
|
||||
-1
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
25,
|
||||
20,
|
||||
10
|
||||
],
|
||||
[
|
||||
25,
|
||||
20,
|
||||
0
|
||||
]
|
||||
],
|
||||
"radius": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "the top rim of a hole through a plate chamfered 1 (a cone frustum)",
|
||||
"source": "analytic",
|
||||
"method": "plate 40x40x10 with a through hole R5 at (20, 20): V0 = 16000 - 250 pi = 15214.6018. The chamfer removes the right triangle of legs 1 and 1 (area 0.5) beside the rim, its centroid at rho = 5 + 1/3, revolved once (Pappus): 2 pi (16/3) 0.5 = 16.7552. V = 15197.8467. Faces 8; the cone meets the faces at creases (G0).",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 15197.846675783405,
|
||||
"faces": 8,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
40,
|
||||
40,
|
||||
10
|
||||
]
|
||||
},
|
||||
"continuity": {
|
||||
"order": "g0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 10,
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"height": 12,
|
||||
"base": [
|
||||
20,
|
||||
20,
|
||||
-1
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
25,
|
||||
20,
|
||||
10
|
||||
]
|
||||
],
|
||||
"distance": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "the top rim of a hole through a 10 mm plate chamfered 10: its leg would use the hole's whole wall: refused, naming the largest distance that fits",
|
||||
"source": "invariants",
|
||||
"method": "owner rule: a chamfer whose leg runs off the face beside its edge is refused, and a full-width chamfer stays refused (it would replace the wall and turn the bottom rim into the chamfer's edge, changing the user's geometry). The wall is 10 tall, so every distance below 10 fits; the search names the largest at the request's three significant digits (step 0.01): 9.99.",
|
||||
"outcome": "refused",
|
||||
"refusal": "the largest distance that fits is 9.99 mm"
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 10,
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"height": 12,
|
||||
"base": [
|
||||
20,
|
||||
20,
|
||||
-1
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
25,
|
||||
20,
|
||||
10
|
||||
]
|
||||
],
|
||||
"distance": 10
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "the top rim of a hole through a 10 mm plate chamfered 9.9: its leg down the hole's wall stops 0.1 short of the bottom, so it fits",
|
||||
"source": "analytic",
|
||||
"method": "plate 40x40x10 with a through hole R5 at (20, 20): V0 = 16000 - 250 pi = 15214.6018. The chamfer's legs are 9.9 along the top face (to rho = 14.9, inside the plate's 20 to its sides) and 9.9 down the wall (0.1 of wall left): the triangle 9.9^2/2 at centroid rho = 5 + 3.3, revolved once: 2555.6322. V = 12658.9696. Faces 8.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 12658.969619982365,
|
||||
"faces": 8,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
40,
|
||||
40,
|
||||
10
|
||||
]
|
||||
},
|
||||
"continuity": {
|
||||
"order": "g0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 10,
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"height": 12,
|
||||
"base": [
|
||||
20,
|
||||
20,
|
||||
-1
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
25,
|
||||
20,
|
||||
10
|
||||
]
|
||||
],
|
||||
"distance": 9.9
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "the top rim of a hole through a plate rounded curvature-continuous (Type: Curvature) size 1",
|
||||
"source": "analytic",
|
||||
"method": "plate 40x40x10 with a through hole R5 at (20, 20): V0 = 16000 - 250 pi = 15214.6018. In every meridian plane the top face and the hole's wall are two lines square to each other, so the section is the quintic Bezier of setback 1 (fillets/862): area 113/756 = 0.149471, first moment about the wall 0.028184 (Green on the Bezier), revolved once: 2 pi (5 A + M) = 4.8729. V = 15209.7290. Faces 8; both seams of the round G2.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 15209.728986079066,
|
||||
"faces": 8,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
40,
|
||||
40,
|
||||
10
|
||||
]
|
||||
},
|
||||
"continuity": {
|
||||
"order": "g2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 10,
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"height": 12,
|
||||
"base": [
|
||||
20,
|
||||
20,
|
||||
-1
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
25,
|
||||
20,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 1,
|
||||
"type": "curvature"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "the top rim of a hole through a plate rounded r1",
|
||||
"source": "analytic",
|
||||
"method": "plate 40x40x10 with a through hole R5 at (20, 20): V0 = 16000 - 250 pi = 15214.6018. The rim (rho = 5, z = 10) is convex with the material outside it: the r1 round removes the spandrel (1-pi/4) = 0.214602 whose centroid lies outside rho = 5 (first moment 5/6-pi/4 = 0.047935), revolved once (a torus, Pappus): 2 pi (5 A + M) = 7.0431. V = 15207.5587. Faces 8.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 15207.558735513938,
|
||||
"faces": 8,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
40,
|
||||
40,
|
||||
10
|
||||
]
|
||||
},
|
||||
"continuity": {
|
||||
"order": "g1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 10,
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"height": 12,
|
||||
"base": [
|
||||
20,
|
||||
20,
|
||||
-1
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
25,
|
||||
20,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "the top rim of a hole through a 10 mm plate rounded r10: the round uses up the hole's wall and meets the bottom face at the bottom rim",
|
||||
"source": "analytic",
|
||||
"method": "plate 40x40x10 with a through hole R5 at (20, 20): V0 = 16000 - 250 pi = 15214.6018. The r10 round is tangent to the wall at z = 0, its bottom rim, and to the top at rho = 15 (inside the plate's 20): the wall is used up. It removes the spandrel (1-pi/4) 100 = 21.460184, first moment 1000 (5/6-pi/4) = 47.935170 outside rho = 5, revolved once: 2 pi (5 A + M) = 975.3771. V = 14239.2247. Faces 6 + round = 7.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 14239.224727846788,
|
||||
"faces": 7,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
40,
|
||||
40,
|
||||
10
|
||||
]
|
||||
},
|
||||
"continuity": {
|
||||
"order": "g1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 10,
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"height": 12,
|
||||
"base": [
|
||||
20,
|
||||
20,
|
||||
-1
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
25,
|
||||
20,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 10
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "the top rim of a hole through a 10 mm plate rounded r12: the round runs past the wall on its tangent side, so it is built by subtraction and trims the bottom face round the hole",
|
||||
"source": "analytic",
|
||||
"method": "plate 40x40x10 with a through hole R5 at (20, 20): V0 = 16000 - 250 pi = 15214.6018. Owner rule: a round past a face on its tangent side is built (the blend on the extended faces, its removal region subtracted). The r12 round's circle (centre rho = 17, z = -2) would touch the wall 2 below the plate; what it removes is the spandrel clipped to the plate: at t = rho - 5 the depth min(12 - sqrt(144 - (12-t)^2), 10) (reaching the bottom for t < 12 - sqrt 140 = 0.1678, where the bottom face is trimmed back to rho = 5.1678). Removed = 2 pi int (5 + t) min(L(t), 10) dt (t = 12 (1 - cos th), Gauss-Legendre) = 1487.7439. V = 13726.8580. Faces 6 + round = 7.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 13726.857966844447,
|
||||
"faces": 7,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
40,
|
||||
40,
|
||||
10
|
||||
]
|
||||
},
|
||||
"continuity": {
|
||||
"order": "g1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 10,
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"height": 12,
|
||||
"base": [
|
||||
20,
|
||||
20,
|
||||
-1
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
25,
|
||||
20,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 12
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user