mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 02:25:55 +00:00
kernel-cases: sweeps revolve cases from #2183-#4008 (refusals, flush ends, dome seam, primitives)
Refusals for a profile across the axis and an axis outside the sketch plane, a construction axis picked by name, a cone left by a revolve cut, revolve joins and cuts whose end faces lie in a face of the target, a dome cut by a ball on its seam, a horn-torus turn, and half-disc revolves with a refused hostile sweep scale. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2453",
|
||||
"tangency-labs/solidcraft#2183"
|
||||
],
|
||||
"what": "a rectangle that straddles the revolve axis (x from -5 to 15 about the sketch y axis)",
|
||||
"source": "invariants",
|
||||
"method": "a profile on both sides of the axis would sweep over itself, so no solid exists: the right behaviour is a clean refusal (invalid input), with no body made.",
|
||||
"outcome": "refused"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "P"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
15,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "y",
|
||||
"angle": "360 deg",
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3796",
|
||||
"tangency-labs/solidcraft#3619",
|
||||
"tangency-labs/solidcraft#2516"
|
||||
],
|
||||
"what": "a rectangle revolved about a construction axis picked by name (\"unknown sketch line `Axis1`\")",
|
||||
"source": "analytic",
|
||||
"method": "axis through (5,0,0) parallel to Z; the 10 x 15 rectangle at x 10..20 is 5..15 from it: a tube, V = pi (15^2 - 5^2) 15 = 9424.8; faces: outer wall, bore, two annular ends.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 9424.77796076938,
|
||||
"area_mm2": 3141.5926535897934,
|
||||
"faces": 4
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "construct.axis.two_points",
|
||||
"params": {
|
||||
"a": {
|
||||
"point": [
|
||||
5,
|
||||
0,
|
||||
0
|
||||
]
|
||||
},
|
||||
"b": {
|
||||
"point": [
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
},
|
||||
"name": "Axis1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "P"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
10,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
20,
|
||||
15
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "Axis1",
|
||||
"angle": "360 deg",
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3736",
|
||||
"tangency-labs/solidcraft#2607"
|
||||
],
|
||||
"what": "a profile on the XZ plane revolved about the world Y axis, which does not lie in the sketch plane",
|
||||
"source": "invariants",
|
||||
"method": "the revolve axis must lie in the profile plane (the Y axis is perpendicular to the XZ plane): the right behaviour is a clean refusal, with no body made.",
|
||||
"outcome": "refused"
|
||||
}
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "P"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
10,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
15,
|
||||
5
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "Y",
|
||||
"angle": "45 deg",
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2667"
|
||||
],
|
||||
"what": "a half disc of radius 6 on the axis revolved a full turn (mutation survivor: half_disc area factor)",
|
||||
"source": "analytic",
|
||||
"method": "a ball: V = 4/3 pi 6^3 = 904.78, A = 4 pi 36 = 452.39; one spherical face.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 904.7786842338603,
|
||||
"area_mm2": 452.3893421169302,
|
||||
"faces": 1,
|
||||
"bbox": {
|
||||
"min": [
|
||||
-6,
|
||||
-6,
|
||||
-6
|
||||
],
|
||||
"max": [
|
||||
6,
|
||||
6,
|
||||
6
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "P"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
0,
|
||||
-6
|
||||
],
|
||||
"through": [
|
||||
6,
|
||||
0
|
||||
],
|
||||
"end": [
|
||||
0,
|
||||
6
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
6
|
||||
],
|
||||
[
|
||||
0,
|
||||
-6
|
||||
]
|
||||
],
|
||||
"infer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "y",
|
||||
"angle": "360 deg",
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2667"
|
||||
],
|
||||
"what": "the same half disc revolved 270 degrees (mutation survivor: full_circle test of the sweep angle)",
|
||||
"source": "analytic",
|
||||
"method": "three quarters of the ball: V = 3/4 * 4/3 pi 6^3 = 678.58. Area: 3/4 of the sphere, 3/4 * 4 pi 36 = 339.29, plus two half-disc end faces (the planes at 0 and 270 degrees are perpendicular, so two faces) of pi 36 / 2 each, 113.10 together: A = 452.39. Faces: the spherical part and the two flat ends = 3.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 678.5840131753953,
|
||||
"area_mm2": 452.3893421169302,
|
||||
"faces": 3
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "P"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
0,
|
||||
-6
|
||||
],
|
||||
"through": [
|
||||
6,
|
||||
0
|
||||
],
|
||||
"end": [
|
||||
0,
|
||||
6
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
6
|
||||
],
|
||||
[
|
||||
0,
|
||||
-6
|
||||
]
|
||||
],
|
||||
"infer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "y",
|
||||
"angle": "270 deg",
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2667"
|
||||
],
|
||||
"what": "a sweep with an end scale of 500 (the engine allows 0.01 to 100): the option check (SweepControl::check) must refuse it",
|
||||
"source": "invariants",
|
||||
"method": "a scale outside 0.01..100 is a hostile value for the sweep options: the right behaviour is a clean refusal with no body made.",
|
||||
"outcome": "refused"
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "Path"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
20
|
||||
]
|
||||
],
|
||||
"infer": false,
|
||||
"ids": [
|
||||
"p1"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "Sec"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.sweep",
|
||||
"params": {
|
||||
"sketch": "Sec",
|
||||
"path_sketch": "Path",
|
||||
"path": [
|
||||
"p1"
|
||||
],
|
||||
"scale": 500,
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3156",
|
||||
"tangency-labs/solidcraft#3224"
|
||||
],
|
||||
"what": "a rectangle revolved plus and minus 90 degrees about an axis in a plate top face: both planar end faces lie in that face and the join needed a tool nudge",
|
||||
"source": "analytic",
|
||||
"method": "plate 10 x 100 x 6 (z 41..47). The 4 mm wide ring (radii 30..37 about the axis y = 0, z = 47) spans -90..+90 degrees below the axis; its end faces lie in z = 47. Overlap with the plate: z >= 41 means r cos(phi) <= 6, i.e. phi from acos(6/r) to 90 degrees on each side: 4 * 2 * integral over r in [30,37] of r asin(6/r) dr, with antiderivative r^2/2 asin(6/r) + 3 sqrt(r^2 - 36). V = 6000 + 4 pi (37^2 - 30^2)/2 - overlap.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 8608.970248730224
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 10,
|
||||
"width": 100,
|
||||
"height": 6,
|
||||
"corner": [
|
||||
-50,
|
||||
-50,
|
||||
41
|
||||
],
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "Prof"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-47,
|
||||
10
|
||||
],
|
||||
[
|
||||
-43,
|
||||
10
|
||||
],
|
||||
[
|
||||
-43,
|
||||
17
|
||||
],
|
||||
[
|
||||
-47,
|
||||
17
|
||||
]
|
||||
],
|
||||
"infer": false,
|
||||
"closed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-60,
|
||||
47
|
||||
],
|
||||
[
|
||||
-30,
|
||||
47
|
||||
]
|
||||
],
|
||||
"infer": false,
|
||||
"construction": true,
|
||||
"ids": [
|
||||
"ax"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "ax",
|
||||
"angle": "90 deg",
|
||||
"angle2": "90 deg",
|
||||
"operation": "join",
|
||||
"profiles": [
|
||||
{
|
||||
"point": [
|
||||
-45,
|
||||
13.5
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3911",
|
||||
"tangency-labs/solidcraft#3191"
|
||||
],
|
||||
"what": "a triangle sharing the cylinder side and top rim revolved as a cut to leave a cone (the cut never completed)",
|
||||
"source": "analytic",
|
||||
"method": "the triangle (20,0) (20,30) (0,30) revolved about the cylinder axis removes everything outside the cone from the apex (0,0,30) to the base rim r 20 at z = 0: V = pi 20^2 30 / 3, A = base pi 20^2 + lateral pi 20 sqrt(20^2 + 30^2); faces: cone and base disc.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 12566.370614359172,
|
||||
"area_mm2": 3522.0717412637123,
|
||||
"faces": 2,
|
||||
"bbox": {
|
||||
"min": [
|
||||
-20,
|
||||
-20,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
20,
|
||||
20,
|
||||
30
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 20,
|
||||
"height": 30,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"axis": "Z",
|
||||
"body_name": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "Cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
20,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
30
|
||||
],
|
||||
[
|
||||
0,
|
||||
30
|
||||
]
|
||||
],
|
||||
"infer": false,
|
||||
"closed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "y",
|
||||
"angle": "360 deg",
|
||||
"operation": "cut"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3528"
|
||||
],
|
||||
"what": "a ball of radius 4 centred on the dome of a revolved mushroom cap (azimuth 15 degrees, across an internal seam of the revolved faces), cut from it: removed nearly the whole ball",
|
||||
"source": "analytic",
|
||||
"method": "the cap is the revolution of the profile (0,0) (7,0) (7,20) (26,39), arc about (0,32.1) r 26.9 to (0,59), back: V = pi [49*20 + (26^3 - 7^3)/3 + 26.9^2 * 20 - (26.9^3 - 6.9^3)/3] = 46551.0. The ball centre is on the dome sphere (r 26.9), so the cut removes the lens of two spheres, radii 4 and 26.9 at distance 26.9: V = pi (R + r - d)^2 (d^2 + 2 d r - 3 r^2 + 2 d R + 6 r R - 3 R^2) / (12 d) = 126.5. The tool is consumed (keep_tools false): one body.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 46424.50587797245
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "Mushroom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
7,
|
||||
0
|
||||
]
|
||||
],
|
||||
"infer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
7,
|
||||
0
|
||||
],
|
||||
[
|
||||
7,
|
||||
20
|
||||
]
|
||||
],
|
||||
"infer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
7,
|
||||
20
|
||||
],
|
||||
[
|
||||
26,
|
||||
39
|
||||
]
|
||||
],
|
||||
"infer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
32.1
|
||||
],
|
||||
"start": [
|
||||
26,
|
||||
39
|
||||
],
|
||||
"end": [
|
||||
0,
|
||||
59
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
59
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
]
|
||||
],
|
||||
"infer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "y",
|
||||
"angle": "360 deg",
|
||||
"operation": "new",
|
||||
"body_name": "Cap"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.sphere",
|
||||
"params": {
|
||||
"diameter": 8,
|
||||
"center": [
|
||||
17.38629136,
|
||||
4.658642729,
|
||||
52.090595805
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Ball"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"target": "Cap",
|
||||
"tools": [
|
||||
"Ball"
|
||||
],
|
||||
"operation": "cut"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4007"
|
||||
],
|
||||
"what": "the half disc of radius 14 on the far side of a diameter 14 mm from the axis (the full circle would touch the axis: a horn torus) revolved 270 degrees",
|
||||
"source": "analytic",
|
||||
"method": "Pappus: the half disc (the side away from the axis) has area pi 14^2 / 2 and centroid at 14 + 4 * 14 / (3 pi) from the axis: V = (270/360) 2 pi (14 + 4*14/(3 pi)) pi 14^2 / 2 = 28932.2 (the design measures 28930.7).",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 28932.17609889229
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "P"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
14,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
14,
|
||||
-14
|
||||
],
|
||||
"end": [
|
||||
14,
|
||||
14
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
14,
|
||||
14
|
||||
],
|
||||
[
|
||||
14,
|
||||
-14
|
||||
]
|
||||
],
|
||||
"infer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "Z",
|
||||
"angle": "270 deg",
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4008"
|
||||
],
|
||||
"what": "a 7 x 21 rectangle 2.6 mm from a block vertical edge revolved as a symmetric 180 degree cut about that edge: both end faces of the tool lie in the block left face (refused as \"could not be computed reliably\")",
|
||||
"source": "analytic",
|
||||
"method": "block 60 x 20 x 25 (x 0..60, y 0..20); the ring (radii 2.6..9.6, height 21 inside the 25) turns +-90 degrees about the edge x = 0, y = 20; only the quarter with y < 20 lies in the block: V = 30000 - pi (9.6^2 - 2.6^2) 21 / 4 = 28591.467.",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 28591.466933763015
|
||||
}
|
||||
+95
@@ -0,0 +1,95 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 60,
|
||||
"width": 20,
|
||||
"height": 25,
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"body_name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
20.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "Tool"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
2.6,
|
||||
2
|
||||
],
|
||||
"p1": [
|
||||
9.6,
|
||||
23
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
25
|
||||
]
|
||||
],
|
||||
"infer": false,
|
||||
"construction": true,
|
||||
"ids": [
|
||||
"ax"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "ax",
|
||||
"angle": "180 deg",
|
||||
"direction": "symmetric",
|
||||
"operation": "cut",
|
||||
"profiles": [
|
||||
{
|
||||
"point": [
|
||||
6,
|
||||
10
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user