mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-06 20:02:16 +00:00
Kernel rig: a blend between coplanar sheets is flat, a step blend meets both sheets at the order asked, and unchained edges are refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "a G1 blend across the 10 mm gap between two coplanar sheets, stitched to both: flat, filling the gap exactly",
|
||||
"source": "analytic",
|
||||
"method": "both ends' tangent planes are z = 0 and the edges face each other along x: every cross-section's Hermite lies in z = 0 from x = 10 to x = 20, so the blend is the 10 x 20 strip; stitched: one body, area 200 + 200 + 200 = 600, 6 free edges round the 30 x 20 outline (the blend's own sides counted, [6, 8]); seams at x = 10 and 20 at least G1",
|
||||
"valid": false,
|
||||
"body_count": 1,
|
||||
"area_mm2": 600.0,
|
||||
"boundary_edges": [
|
||||
6,
|
||||
8
|
||||
],
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
30,
|
||||
20,
|
||||
0
|
||||
]
|
||||
},
|
||||
"continuity": {
|
||||
"order": "g1",
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
10,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "A sketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
10,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "surface.patch",
|
||||
"params": {
|
||||
"sketch": "A sketch",
|
||||
"body_name": "A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "B sketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
20,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
30,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "surface.patch",
|
||||
"params": {
|
||||
"sketch": "B sketch",
|
||||
"body_name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "surface.blend",
|
||||
"params": {
|
||||
"from": {
|
||||
"body": "A",
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
},
|
||||
"to": {
|
||||
"body": "B",
|
||||
"edges": [
|
||||
[
|
||||
20,
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
},
|
||||
"stitch": true,
|
||||
"body_name": "Bridge"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "a blend from two opposite sides of a sheet: they share no vertex, so they are no chain; refused",
|
||||
"source": "invariants",
|
||||
"method": "an end of a blend is one chain of edges, each running on from the last",
|
||||
"outcome": "refused",
|
||||
"refusal": "the picked edges do not run on from one another"
|
||||
}
|
||||
+128
@@ -0,0 +1,128 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "A sketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
10,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "surface.patch",
|
||||
"params": {
|
||||
"sketch": "A sketch",
|
||||
"body_name": "A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "B sketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
20,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
30,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "surface.patch",
|
||||
"params": {
|
||||
"sketch": "B sketch",
|
||||
"body_name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "surface.blend",
|
||||
"params": {
|
||||
"from": {
|
||||
"body": "A",
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
10,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
},
|
||||
"to": {
|
||||
"body": "B",
|
||||
"edges": [
|
||||
[
|
||||
20,
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "a G1 blend bridging a 10 mm step between two parallel sheets (z = 0 and z = 10), stitched to both: it meets each at G1",
|
||||
"source": "invariants",
|
||||
"method": "sheets x 0..10 at z = 0 and x 20..30 at z = 10, 20 wide; the blend leaves each edge in its sheet's tangent plane (and curvature, rate) as asked. Graded: the order at both seams as Continuity Analysis measures it, one body of 3 faces (each a different surface, so none merge)",
|
||||
"valid": false,
|
||||
"body_count": 1,
|
||||
"faces": 3,
|
||||
"continuity": {
|
||||
"order": "g1",
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
10,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
10,
|
||||
10
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "A sketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
10,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "surface.patch",
|
||||
"params": {
|
||||
"sketch": "A sketch",
|
||||
"body_name": "A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "Bs"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
20,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
30,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "surface.patch",
|
||||
"params": {
|
||||
"sketch": "Bs",
|
||||
"body_name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "surface.blend",
|
||||
"params": {
|
||||
"from": {
|
||||
"body": "A",
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
},
|
||||
"to": {
|
||||
"body": "B",
|
||||
"edges": [
|
||||
[
|
||||
20,
|
||||
10,
|
||||
10
|
||||
]
|
||||
]
|
||||
},
|
||||
"continuity": [
|
||||
"g1",
|
||||
"g1"
|
||||
],
|
||||
"stitch": true,
|
||||
"body_name": "Bridge"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "a G2 blend bridging a 10 mm step between two parallel sheets (z = 0 and z = 10), stitched to both: it meets each at G2",
|
||||
"source": "invariants",
|
||||
"method": "sheets x 0..10 at z = 0 and x 20..30 at z = 10, 20 wide; the blend leaves each edge in its sheet's tangent plane (and curvature, rate) as asked. Graded: the order at both seams as Continuity Analysis measures it, one body of 3 faces (each a different surface, so none merge)",
|
||||
"valid": false,
|
||||
"body_count": 1,
|
||||
"faces": 3,
|
||||
"continuity": {
|
||||
"order": "g2",
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
10,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
10,
|
||||
10
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "A sketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
10,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "surface.patch",
|
||||
"params": {
|
||||
"sketch": "A sketch",
|
||||
"body_name": "A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "Bs"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
20,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
30,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "surface.patch",
|
||||
"params": {
|
||||
"sketch": "Bs",
|
||||
"body_name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "surface.blend",
|
||||
"params": {
|
||||
"from": {
|
||||
"body": "A",
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
},
|
||||
"to": {
|
||||
"body": "B",
|
||||
"edges": [
|
||||
[
|
||||
20,
|
||||
10,
|
||||
10
|
||||
]
|
||||
]
|
||||
},
|
||||
"continuity": [
|
||||
"g2",
|
||||
"g2"
|
||||
],
|
||||
"stitch": true,
|
||||
"body_name": "Bridge"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "a G3 blend bridging a 10 mm step between two parallel sheets (z = 0 and z = 10), stitched to both: it meets each at G3",
|
||||
"source": "invariants",
|
||||
"method": "sheets x 0..10 at z = 0 and x 20..30 at z = 10, 20 wide; the blend leaves each edge in its sheet's tangent plane (and curvature, rate) as asked. Graded: the order at both seams as Continuity Analysis measures it, one body of 3 faces (each a different surface, so none merge)",
|
||||
"valid": false,
|
||||
"body_count": 1,
|
||||
"faces": 3,
|
||||
"continuity": {
|
||||
"order": "g3",
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
10,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
10,
|
||||
10
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "A sketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
10,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "surface.patch",
|
||||
"params": {
|
||||
"sketch": "A sketch",
|
||||
"body_name": "A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "Bs"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
20,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
30,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "surface.patch",
|
||||
"params": {
|
||||
"sketch": "Bs",
|
||||
"body_name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "surface.blend",
|
||||
"params": {
|
||||
"from": {
|
||||
"body": "A",
|
||||
"edges": [
|
||||
[
|
||||
10,
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
},
|
||||
"to": {
|
||||
"body": "B",
|
||||
"edges": [
|
||||
[
|
||||
20,
|
||||
10,
|
||||
10
|
||||
]
|
||||
]
|
||||
},
|
||||
"continuity": [
|
||||
"g3",
|
||||
"g3"
|
||||
],
|
||||
"stitch": true,
|
||||
"body_name": "Bridge"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user