kernel-cases: sweeps lofted tubes, blades and windows from #968-#2992

Hollow elbows lofted along a bend (Pappus), hollow bands halved and joined, a flange touching the end of a bent tapered loft, tapered and twisted lofted blades patterned round a disk, and a loft joined into a window that it overhangs, alone and mirrored on a hollow case.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Brennen Herbruck
2026-10-21 06:20:29 -04:00
committed by jyviko
parent bec9db59e6
commit 85f7200bbf
18 changed files with 4906 additions and 0 deletions
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#1093",
"tangency-labs/solidcraft#1107"
],
"what": "a tapered lofted blade (6 x 3 root embedded 2 mm into a disk, 3 x 1.5 tip) joined to a disk and patterned 9 times round the axis as joins (31 minutes with eight retries, or \"cavity ownership is ambiguous\")",
"source": "analytic",
"method": "the blade is a ruled loft of two rectangles (a prismatoid): above the disk top z = 5 its section runs from 5.838 x 2.919 to 3 x 1.5; with the section area quadratic in z, V_blade = 35/6 (A(5) + 4 A(22.5) + A(40)) = 353.464. The blades stand 40 mm out on a circle and are far apart, each embedded in the disk (pi 60^2 5 = 56548.7): V = disk + 9 V_blade = 59729.8. One body.",
"body_count": 1,
"volume_mm3": 59729.84563167252
}
@@ -0,0 +1,156 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
0.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "Disk"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 60
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 5,
"body_name": "Hub"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
3.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "Root"
}
},
{
"command": "sketch.rectangle.center",
"params": {
"center": [
40,
0
],
"corner": [
43,
1.5
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
40.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "Tip"
}
},
{
"command": "sketch.rectangle.center",
"params": {
"center": [
40,
0
],
"corner": [
41.5,
0.75
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "Root"
},
{
"sketch": "Tip"
}
],
"operation": "join",
"name": "Blade",
"targets": [
"Hub"
]
}
},
{
"command": "solid.pattern.circular",
"params": {
"features": [
"Blade"
],
"axis": "Z",
"count": 9
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#1140"
],
"what": "two hollow lofted tube bands (outer r 30, bore r 18 on R100, 5 sections each, 45 degrees each), each cut in half through its axis plane z = 0 and the halves joined into one body (\"no result\" after ten minutes of fallbacks)",
"source": "analytic",
"method": "the two bands meet on a shared section plane and together are the 90 degree wall: pi (30^2 - 18^2) * 100 * (pi/2), cut in half by the plane through the axis (the arc lies in z = 0, so the halves are equal): V = 1/2 * pi * 576 * 100 * pi/2 = 142122.3.",
"body_count": 1,
"volume_mm3": 142122.30337568675
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#1391",
"tangency-labs/solidcraft#1556"
],
"what": "a half tube (6 mm wall, inner radius tapering 60 to 75 mm) lofted through 5 sections along an R300 bend of 20 degrees, with an 8 mm half-annulus flange (inner radius +3 into the wall, outer +25 beyond it) extruded from the end plane outward and joined: the flange face lies in the end plane (\"Union: no result\")",
"source": "analytic",
"method": "each section is a half annulus in a plane through the bend axis, centred on the path, so Pappus holds with the section area A(t) = pi/2 (12 r(t) + 36), r(t) = 60 + 15 t: V_tube = R theta * pi/2 (12 * 67.5 + 36), R = 300, theta = 20 degrees = 139161.4. The flange stands outside the tube end plane and touches the tube only along the coplanar end face, so V = V_tube + V_flange, V_flange = pi/2 (106^2 - 78^2) 8 = 64741.9. One body.",
"body_count": 1,
"volume_mm3": 203903.36346053838
}
@@ -0,0 +1,599 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.0,
-1.0,
0
]
},
"name": "S0"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-66.0
],
"through": [
66.0,
0
],
"end": [
0,
66.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
66.0
],
[
0,
60.0
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
60.0
],
"through": [
60.0,
0
],
"end": [
0,
-60.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-60.0
],
[
0,
-66.0
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
26.146722824,
1.141590572,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.087155743,
-0.996194698,
0
]
},
"name": "S1"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-69.75
],
"through": [
69.75,
0
],
"end": [
0,
69.75
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
69.75
],
[
0,
63.75
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
63.75
],
"through": [
63.75,
0
],
"end": [
0,
-63.75
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-63.75
],
[
0,
-69.75
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
52.0944533,
4.557674096,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.173648178,
-0.984807753,
0
]
},
"name": "S2"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-73.5
],
"through": [
73.5,
0
],
"end": [
0,
73.5
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
73.5
],
[
0,
67.5
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
67.5
],
"through": [
67.5,
0
],
"end": [
0,
-67.5
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-67.5
],
[
0,
-73.5
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
77.645713531,
10.222252113,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.258819045,
-0.965925826,
0
]
},
"name": "S3"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-77.25
],
"through": [
77.25,
0
],
"end": [
0,
77.25
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
77.25
],
[
0,
71.25
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
71.25
],
"through": [
71.25,
0
],
"end": [
0,
-71.25
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-71.25
],
[
0,
-77.25
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
102.606042998,
18.092213764,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.342020143,
-0.939692621,
0
]
},
"name": "S4"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-81.0
],
"through": [
81.0,
0
],
"end": [
0,
81.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
81.0
],
[
0,
75.0
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
75.0
],
"through": [
75.0,
0
],
"end": [
0,
-75.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-75.0
],
[
0,
-81.0
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "S0"
},
{
"sketch": "S1"
},
{
"sketch": "S2"
},
{
"sketch": "S3"
},
{
"sketch": "S4"
}
],
"operation": "new",
"name": "TubeLoft",
"body_name": "Tube"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
102.606042998,
18.092213764,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.342020143,
-0.939692621,
0
]
},
"name": "Flange"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-106.0
],
"through": [
106.0,
0
],
"end": [
0,
106.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
106.0
],
[
0,
78.0
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
78.0
],
"through": [
78.0,
0
],
"end": [
0,
-78.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-78.0
],
[
0,
-106.0
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Flange",
"distance": 8.0,
"operation": "join",
"targets": [
"Tube"
],
"name": "JoinFlange"
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#1391",
"tangency-labs/solidcraft#1556"
],
"what": "a half tube (6 mm wall, inner radius tapering 60 to 75 mm) lofted through 5 sections along an R300 bend of 40 degrees, with an 8 mm half-annulus flange (inner radius +3 into the wall, outer +25 beyond it) extruded from the end plane outward and joined: the flange face lies in the end plane (\"Union: no result\")",
"source": "analytic",
"method": "each section is a half annulus in a plane through the bend axis, centred on the path, so Pappus holds with the section area A(t) = pi/2 (12 r(t) + 36), r(t) = 60 + 15 t: V_tube = R theta * pi/2 (12 * 67.5 + 36), R = 300, theta = 40 degrees = 278322.8. The flange stands outside the tube end plane and touches the tube only along the coplanar end face, so V = V_tube + V_flange, V_flange = pi/2 (106^2 - 78^2) 8 = 64741.9. One body.",
"body_count": 1,
"volume_mm3": 343064.7855158983
}
@@ -0,0 +1,599 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.0,
-1.0,
0
]
},
"name": "S0"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-66.0
],
"through": [
66.0,
0
],
"end": [
0,
66.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
66.0
],
[
0,
60.0
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
60.0
],
"through": [
60.0,
0
],
"end": [
0,
-60.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-60.0
],
[
0,
-66.0
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
52.0944533,
4.557674096,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.173648178,
-0.984807753,
0
]
},
"name": "S1"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-69.75
],
"through": [
69.75,
0
],
"end": [
0,
69.75
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
69.75
],
[
0,
63.75
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
63.75
],
"through": [
63.75,
0
],
"end": [
0,
-63.75
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-63.75
],
[
0,
-69.75
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
102.606042998,
18.092213764,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.342020143,
-0.939692621,
0
]
},
"name": "S2"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-73.5
],
"through": [
73.5,
0
],
"end": [
0,
73.5
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
73.5
],
[
0,
67.5
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
67.5
],
"through": [
67.5,
0
],
"end": [
0,
-67.5
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-67.5
],
[
0,
-73.5
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
150.0,
40.192378865,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.5,
-0.866025404,
0
]
},
"name": "S3"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-77.25
],
"through": [
77.25,
0
],
"end": [
0,
77.25
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
77.25
],
[
0,
71.25
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
71.25
],
"through": [
71.25,
0
],
"end": [
0,
-71.25
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-71.25
],
[
0,
-77.25
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
192.836282906,
70.186667064,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.64278761,
-0.766044443,
0
]
},
"name": "S4"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-81.0
],
"through": [
81.0,
0
],
"end": [
0,
81.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
81.0
],
[
0,
75.0
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
75.0
],
"through": [
75.0,
0
],
"end": [
0,
-75.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-75.0
],
[
0,
-81.0
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "S0"
},
{
"sketch": "S1"
},
{
"sketch": "S2"
},
{
"sketch": "S3"
},
{
"sketch": "S4"
}
],
"operation": "new",
"name": "TubeLoft",
"body_name": "Tube"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
192.836282906,
70.186667064,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.64278761,
-0.766044443,
0
]
},
"name": "Flange"
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
-106.0
],
"through": [
106.0,
0
],
"end": [
0,
106.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
106.0
],
[
0,
78.0
]
],
"infer": false
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
0,
78.0
],
"through": [
78.0,
0
],
"end": [
0,
-78.0
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
-78.0
],
[
0,
-106.0
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Flange",
"distance": 8.0,
"operation": "join",
"targets": [
"Tube"
],
"name": "JoinFlange"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#1490"
],
"what": "a wall 2.5 mm thick with a 30 x 20 window cut through it and a loft (34 x 24 growing to 38 x 28 over 3.5 mm) joined into the window so that its strips overhang the wall on both faces (\"Union: no result\" at some wall thicknesses)",
"source": "analytic",
"method": "the loft section is larger than the window at every depth inside the wall, and lies inside the wall face, so inside the 2.5 mm slab the window is filled and nothing else changes: the body is the plain 2.5 x 60 x 40 wall (6000) plus the two overhanging strips of the loft, x from -0.5 to 0 and from 2.5 to 3.0, of area w(x) h(x) with w = 34 + 4 (x + 0.5)/3.5 and h = 24 + 4 (x + 0.5)/3.5: V = 6000 + 938.966.",
"body_count": 1,
"volume_mm3": 6938.965986394556
}
@@ -0,0 +1,168 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 2.5,
"width": 60,
"height": 40,
"corner": [
0,
-30,
0
],
"body_name": "Wall"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
-1.0,
0.0,
0.0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Win"
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
-15,
10
],
"p1": [
15,
30
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Win",
"distance": 5,
"operation": "cut",
"targets": [
"Wall"
],
"name": "PleatCut"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
-0.5,
0.0,
0.0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Near"
}
},
{
"command": "sketch.rectangle.center",
"params": {
"center": [
0,
20
],
"corner": [
17,
32
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
3.0,
0.0,
0.0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Far"
}
},
{
"command": "sketch.rectangle.center",
"params": {
"center": [
0,
20
],
"corner": [
19,
34
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "Near"
},
{
"sketch": "Far"
}
],
"operation": "join",
"name": "PleatNear",
"targets": [
"Wall"
]
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#1669"
],
"what": "a closed hollow box (60 x 60 x 40, 2.5 mm walls) with a window cut in one end wall and a loft joined into it, both mirrored about the middle plane x = 30 onto the far wall (\"Union: no result\" on the mirror only)",
"source": "analytic",
"method": "as for one wall: each window is filled by its loft (the loft section is larger than the window), and what is added to the plain hollow case (60 x 60 x 40 minus the 55 x 55 x 35 cavity = 38125) is the overhanging strip of the loft outside the wall (x in [-0.5, 0]) and the strip inside the cavity (x in [2.5, 3]), 938.966 each; the mirror gives the far wall the same: V = 38125 + 2 * 938.966. The windows are filled again, so the cavity is sealed (an internal void: shell count 2, which the rig cannot grade, so valid is false).",
"valid": false,
"body_count": 1,
"volume_mm3": 40002.93197278911
}
@@ -0,0 +1,214 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 60,
"width": 60,
"height": 40,
"corner": [
0,
-30,
0
],
"body_name": "Case"
}
},
{
"command": "solid.box",
"params": {
"length": 55,
"width": 55,
"height": 35,
"corner": [
2.5,
-27.5,
2.5
],
"body_name": "Cavity"
}
},
{
"command": "solid.combine",
"params": {
"target": "Case",
"tools": [
"Cavity"
],
"operation": "cut",
"name": "Hollow"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
-1.0,
0.0,
0.0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Win"
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
-15,
10
],
"p1": [
15,
30
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Win",
"distance": 3.5,
"operation": "cut",
"targets": [
"Case"
],
"name": "PleatCut"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
-0.5,
0.0,
0.0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Near"
}
},
{
"command": "sketch.rectangle.center",
"params": {
"center": [
0,
20
],
"corner": [
17,
32
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
3.0,
0.0,
0.0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Far"
}
},
{
"command": "sketch.rectangle.center",
"params": {
"center": [
0,
20
],
"corner": [
19,
34
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "Near"
},
{
"sketch": "Far"
}
],
"operation": "join",
"name": "PleatNear",
"targets": [
"Case"
]
}
},
{
"command": "solid.mirror",
"params": {
"features": [
"PleatCut",
"PleatNear"
],
"plane": {
"origin": [
30,
0,
0
],
"normal": [
1,
0,
0
]
}
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#2992",
"tangency-labs/solidcraft#1856"
],
"what": "a disk joined to 36 patterned twisted lofted blades (each a loft of 9 rectangle sections turning 7.5 degrees apart, rooted 2 mm inside the disk): hang of minutes",
"source": "analytic",
"method": "each blade section is a 6 x 3 rectangle (area 18) turning about its own centre, which stays on the vertical line at radius 50: the section area and centre do not change, so a blade above the disk top z = 5 is 18 * (43 - 5) = 684 and its root part is inside the disk. The 36 blades (centres 8.7 apart, reach 3.4 each) do not touch each other, so V = pi 60^2 5 + 36 * 684 = 81172.7.",
"body_count": 1,
"volume_mm3": 81172.66776461627
}
@@ -0,0 +1,565 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
0.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "Disk"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 60
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 5,
"body_name": "Disk"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
3.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "B0"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
47.0,
-1.5
],
[
53.0,
-1.5
],
[
53.0,
1.5
],
[
47.0,
1.5
]
],
"infer": false,
"closed": true
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
8.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "B1"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
47.221454704,
-1.878745869
],
[
53.170123872,
-1.095588715
],
[
52.778545296,
1.878745869
],
[
46.829876128,
1.095588715
]
],
"infer": false,
"closed": true
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
13.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "B2"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
47.490451089,
-2.225345875
],
[
53.286006047,
-0.672431604
],
[
52.509548911,
2.225345875
],
[
46.713993953,
0.672431604
]
],
"infer": false,
"closed": true
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
18.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "B3"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
47.802386551,
-2.533869596
],
[
53.345663746,
-0.237769002
],
[
52.197613449,
2.533869596
],
[
46.654336254,
0.237769002
]
],
"infer": false,
"closed": true
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
23.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "B4"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
48.151923789,
-2.799038106
],
[
53.348076211,
0.200961894
],
[
51.848076211,
2.799038106
],
[
46.651923789,
-0.200961894
]
],
"infer": false,
"closed": true
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
28.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "B5"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
48.533082123,
-3.016314297
],
[
53.293202164,
0.636254277
],
[
51.466917877,
3.016314297
],
[
46.706797836,
-0.636254277
]
],
"infer": false,
"closed": true
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
33.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "B6"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
48.939339828,
-3.181980515
],
[
53.181980515,
1.060660172
],
[
51.060660172,
3.181980515
],
[
46.818019485,
-1.060660172
]
],
"infer": false,
"closed": true
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
38.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "B7"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
49.363745723,
-3.293202164
],
[
53.016314297,
1.466917877
],
[
50.636254277,
3.293202164
],
[
46.983685703,
-1.466917877
]
],
"infer": false,
"closed": true
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
43.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "B8"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
49.799038106,
-3.348076211
],
[
52.799038106,
1.848076211
],
[
50.200961894,
3.348076211
],
[
47.200961894,
-1.848076211
]
],
"infer": false,
"closed": true
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "B0"
},
{
"sketch": "B1"
},
{
"sketch": "B2"
},
{
"sketch": "B3"
},
{
"sketch": "B4"
},
{
"sketch": "B5"
},
{
"sketch": "B6"
},
{
"sketch": "B7"
},
{
"sketch": "B8"
}
],
"operation": "join",
"name": "Blade",
"targets": [
"Disk"
]
}
},
{
"command": "solid.pattern.circular",
"params": {
"features": [
"Blade"
],
"axis": "Z",
"count": 36
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#968",
"tangency-labs/solidcraft#1084"
],
"what": "a bent tube (circles r 30 lofted through 5 sections along an R100 arc turning 60 degrees) with a bore (r 18, sections running 5 mm of arc past both ends) cut out of it: a hollow elbow (\"no result\" for some section counts, not their neighbours)",
"source": "analytic",
"method": "the wall of a bent tube is a ring section turned about the bend axis, its centre at radius 100: Pappus V = pi (30^2 - 18^2) * 100 * theta with theta = 60 degrees = 189496.4. The bore overshoots both ends along the same arc, so the cut opens the ends and leaves exactly the wall.",
"body_count": 1,
"volume_mm3": 189496.40450091567
}
@@ -0,0 +1,515 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
100.0,
0.0,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
1.0,
0.0,
0
]
},
"name": "O0"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
96.59258262890683,
25.881904510252074,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.9659258262890683,
0.25881904510252074,
0
]
},
"name": "O1"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
86.60254037844388,
49.99999999999999,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.8660254037844387,
0.49999999999999994,
0
]
},
"name": "O2"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
70.71067811865476,
70.71067811865474,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.7071067811865476,
0.7071067811865475,
0
]
},
"name": "O3"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
50.000000000000014,
86.60254037844386,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.5000000000000001,
0.8660254037844386,
0
]
},
"name": "O4"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "O0"
},
{
"sketch": "O1"
},
{
"sketch": "O2"
},
{
"sketch": "O3"
},
{
"sketch": "O4"
}
],
"operation": "new",
"name": "LoftO",
"body_name": "TubeO"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
99.87502603949663,
-4.997916927067833,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.9987502603949663,
-0.04997916927067833,
0
]
},
"name": "I0"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
100.0,
0.0,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
1.0,
0.0,
0
]
},
"name": "I1"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
96.59258262890683,
25.881904510252074,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.9659258262890683,
0.25881904510252074,
0
]
},
"name": "I2"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
86.60254037844388,
49.99999999999999,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.8660254037844387,
0.49999999999999994,
0
]
},
"name": "I3"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
70.71067811865476,
70.71067811865474,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.7071067811865476,
0.7071067811865475,
0
]
},
"name": "I4"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
50.000000000000014,
86.60254037844386,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.5000000000000001,
0.8660254037844386,
0
]
},
"name": "I5"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
45.60918999490332,
88.9932682173703,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.45609189994903315,
0.889932682173703,
0
]
},
"name": "I6"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "I0"
},
{
"sketch": "I1"
},
{
"sketch": "I2"
},
{
"sketch": "I3"
},
{
"sketch": "I4"
},
{
"sketch": "I5"
},
{
"sketch": "I6"
}
],
"operation": "new",
"name": "LoftI",
"body_name": "TubeI"
}
},
{
"command": "solid.combine",
"params": {
"target": "TubeO",
"tools": [
"TubeI"
],
"operation": "cut",
"name": "Hollow"
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#968",
"tangency-labs/solidcraft#1084"
],
"what": "a bent tube (circles r 30 lofted through 10 sections along an R100 arc turning 90 degrees) with a bore (r 18, sections running 5 mm of arc past both ends) cut out of it: a hollow elbow (\"no result\" for some section counts, not their neighbours)",
"source": "analytic",
"method": "the wall of a bent tube is a ring section turned about the bend axis, its centre at radius 100: Pappus V = pi (30^2 - 18^2) * 100 * theta with theta = 90 degrees = 284244.6. The bore overshoots both ends along the same arc, so the cut opens the ends and leaves exactly the wall.",
"body_count": 1,
"volume_mm3": 284244.6067513735
}
@@ -0,0 +1,915 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
100.0,
0.0,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
1.0,
0.0,
0
]
},
"name": "O0"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
98.4807753012208,
17.364817766693033,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.984807753012208,
0.17364817766693033,
0
]
},
"name": "O1"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
93.96926207859084,
34.20201433256687,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.9396926207859084,
0.3420201433256687,
0
]
},
"name": "O2"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
86.60254037844388,
49.99999999999999,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.8660254037844387,
0.49999999999999994,
0
]
},
"name": "O3"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
76.60444431189781,
64.27876096865393,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.766044443118978,
0.6427876096865393,
0
]
},
"name": "O4"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
64.27876096865394,
76.60444431189781,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.6427876096865394,
0.766044443118978,
0
]
},
"name": "O5"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
50.000000000000014,
86.60254037844386,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.5000000000000001,
0.8660254037844386,
0
]
},
"name": "O6"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
34.20201433256688,
93.96926207859083,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.3420201433256688,
0.9396926207859083,
0
]
},
"name": "O7"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
17.36481776669304,
98.4807753012208,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.17364817766693041,
0.984807753012208,
0
]
},
"name": "O8"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
6.123233995736766e-15,
100.0,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
6.123233995736766e-17,
1.0,
0
]
},
"name": "O9"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "O0"
},
{
"sketch": "O1"
},
{
"sketch": "O2"
},
{
"sketch": "O3"
},
{
"sketch": "O4"
},
{
"sketch": "O5"
},
{
"sketch": "O6"
},
{
"sketch": "O7"
},
{
"sketch": "O8"
},
{
"sketch": "O9"
}
],
"operation": "new",
"name": "LoftO",
"body_name": "TubeO"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
99.87502603949663,
-4.997916927067833,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.9987502603949663,
-0.04997916927067833,
0
]
},
"name": "I0"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
100.0,
0.0,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
1.0,
0.0,
0
]
},
"name": "I1"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
98.4807753012208,
17.364817766693033,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.984807753012208,
0.17364817766693033,
0
]
},
"name": "I2"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
93.96926207859084,
34.20201433256687,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.9396926207859084,
0.3420201433256687,
0
]
},
"name": "I3"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
86.60254037844388,
49.99999999999999,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.8660254037844387,
0.49999999999999994,
0
]
},
"name": "I4"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
76.60444431189781,
64.27876096865393,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.766044443118978,
0.6427876096865393,
0
]
},
"name": "I5"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
64.27876096865394,
76.60444431189781,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.6427876096865394,
0.766044443118978,
0
]
},
"name": "I6"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
50.000000000000014,
86.60254037844386,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.5000000000000001,
0.8660254037844386,
0
]
},
"name": "I7"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
34.20201433256688,
93.96926207859083,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.3420201433256688,
0.9396926207859083,
0
]
},
"name": "I8"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
17.36481776669304,
98.4807753012208,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
0.17364817766693041,
0.984807753012208,
0
]
},
"name": "I9"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
6.123233995736766e-15,
100.0,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
6.123233995736766e-17,
1.0,
0
]
},
"name": "I10"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
-4.997916927067831,
99.87502603949663,
0.0
],
"x_dir": [
0,
0,
1
],
"y_dir": [
-0.04997916927067831,
0.9987502603949663,
0
]
},
"name": "I11"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "I0"
},
{
"sketch": "I1"
},
{
"sketch": "I2"
},
{
"sketch": "I3"
},
{
"sketch": "I4"
},
{
"sketch": "I5"
},
{
"sketch": "I6"
},
{
"sketch": "I7"
},
{
"sketch": "I8"
},
{
"sketch": "I9"
},
{
"sketch": "I10"
},
{
"sketch": "I11"
}
],
"operation": "new",
"name": "LoftI",
"body_name": "TubeI"
}
},
{
"command": "solid.combine",
"params": {
"target": "TubeO",
"tools": [
"TubeI"
],
"operation": "cut",
"name": "Hollow"
}
}
]
}