mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-05 11:35:55 +00:00
Kernel rig: history area, timeline cases with each part's exact answer
Suppress a hole and the block is whole again; a round moved before the notch runs the whole edge and is cut by it; deleting a sketch takes its cut and deleting the block leaves the round and cut failing; roll to the middle gives the part at that step; edits, compute all and folders, each with a refusal. The new history area has its KNOWN_FAILING (every case passes) and PATHS. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -43,6 +43,7 @@ One directory per area, one per case: `tests/kernel-cases/<area>/<id>/`.
|
||||
| `surfaces` (every `surface.*` tool: offset, ruled, untrim, unstitch, reverse normal, boundary, blend, match, fair, and a normal and an edge case of each of the others) | surfaces rig |
|
||||
| `construction` (construction planes, axes and points: `construct.*`) | tool coverage rig |
|
||||
| `inspect` (the inspect commands that return numbers) | tool coverage rig |
|
||||
| `history` (the timeline's suppress, reorder, delete, roll back, edit and folders; configuration rows, columns and rules; parameters that drive geometry) | tool coverage rig |
|
||||
|
||||
Each area also has its gate files: `KNOWN_FAILING` and `PATHS` (see [the gate](#the-kernel-rig-gate)).
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
# The history cases that fail today, one a line: `<case> <why it fails today>`. Sorted. A gate on
|
||||
# this area fails on a case that fails and is not listed here, and on a listed case that passes:
|
||||
# a fix removes its line in the same pull request.
|
||||
# Baseline: rig-cases-timeline-configurations 45f69c0e5 with SMLib 60b1c6a, aarch64 Linux.
|
||||
@@ -0,0 +1,17 @@
|
||||
# The sources whose change must rerun the history cases (git pathspec globs, one a line).
|
||||
# The timeline, configuration and parameter commands.
|
||||
crates/engine/src/cmd/edit.rs
|
||||
crates/engine/src/cmd/config.rs
|
||||
crates/engine/src/cmd/parameters.rs
|
||||
# The design's timeline (delete, folders, marker), its configuration table and rules, and its
|
||||
# parameters and expressions.
|
||||
crates/doc/src/document.rs
|
||||
crates/doc/src/config.rs
|
||||
crates/doc/src/config_rules.rs
|
||||
crates/doc/src/params.rs
|
||||
crates/doc/src/expr.rs
|
||||
# Rebuilding the timeline, and the results it keeps between rebuilds.
|
||||
crates/doc/src/eval.rs
|
||||
crates/doc/src/model_cache.rs
|
||||
# The cases themselves.
|
||||
tests/kernel-cases/history/**
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.compute_all after the block is deleted: the round and the cut fail",
|
||||
"source": "invariants",
|
||||
"method": "3 features left (Round, the sketch, Notch); Round and Notch have no body: 2 errors; no body",
|
||||
"body_count": 0,
|
||||
"results": [
|
||||
{
|
||||
"step": 8,
|
||||
"json": {
|
||||
"features": 3,
|
||||
"errors": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.delete",
|
||||
"params": {
|
||||
"feature": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.compute_all",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.compute_all rebuilds every feature from nothing to the same part",
|
||||
"method": "the notch first splits the front top edge; the round R2 on the piece at (5,0,10), x 0..15: V = 12000 - 500 - (1-pi/4) 4 15; faces 6 + 4 + 1 round = 11; 4 features, none failing",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11487.123889803846,
|
||||
"faces": 11,
|
||||
"results": [
|
||||
{
|
||||
"step": 7,
|
||||
"json": {
|
||||
"features": 4,
|
||||
"errors": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": "analytic"
|
||||
}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.compute_all",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.delete of a sketch deletes the cut made from it",
|
||||
"method": "the notch goes with its sketch: 40x30x10 block with its front top edge rounded R2 along 40 mm: V = 12000 - (1-pi/4) 4 40; faces 6 + 1 = 7",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11965.663706143592,
|
||||
"faces": 7,
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.delete",
|
||||
"params": {
|
||||
"feature": "NotchSketch"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.delete of the block the round and the notch are made on",
|
||||
"source": "invariants",
|
||||
"method": "the delete is made (only a sketch takes features with it); the round and the cut have no body now and are reported failing, in timeline order; no body is left",
|
||||
"body_count": 0,
|
||||
"results": [
|
||||
{
|
||||
"step": 7,
|
||||
"json": {
|
||||
"failing": [
|
||||
{
|
||||
"feature": "Round"
|
||||
},
|
||||
{
|
||||
"feature": "Notch"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.delete",
|
||||
"params": {
|
||||
"feature": "Block"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.edit of a cut's depth from 5 to 8",
|
||||
"method": "the 10x10 notch 8 deep: V = 12000 - 800; faces 6 + 4 = 10",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11200.0,
|
||||
"faces": 10,
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.edit",
|
||||
"params": {
|
||||
"feature": "Notch",
|
||||
"set": {
|
||||
"extent.distance": "-8"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.edit of a round's radius from 2 to 4",
|
||||
"method": "R4 along 40 mm: V = 12000 - (1-pi/4) 16 40; faces 7",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11862.654824574367,
|
||||
"faces": 7,
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.edit",
|
||||
"params": {
|
||||
"feature": "Round",
|
||||
"set": {
|
||||
"radius": "4"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.edit with a misspelt field",
|
||||
"source": "invariants",
|
||||
"method": "a field the round does not have would change nothing: refused, naming it",
|
||||
"outcome": "refused",
|
||||
"refusal": "unknown field `radus`"
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.edit",
|
||||
"params": {
|
||||
"feature": "Round",
|
||||
"set": {
|
||||
"radus": "4"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.group of a sketch and its cut into a folder changes no geometry",
|
||||
"method": "a folder is only the timeline's: round R2 on the whole 40 mm front top edge, then the 10x10x5 notch through it: V = 12000 - 500 - (1-pi/4) 4 (40-10) (the notch already holds the round's 10 mm in it); faces: 6 block + 4 notch (bottom, two sides, back) + the round in two pieces = 12",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11474.247779607695,
|
||||
"faces": 12,
|
||||
"results": [
|
||||
{
|
||||
"step": 7,
|
||||
"json": {
|
||||
"group": 5,
|
||||
"name": "Notch folder",
|
||||
"parent": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.group",
|
||||
"params": {
|
||||
"name": "Notch folder",
|
||||
"features": [
|
||||
"NotchSketch",
|
||||
"Notch"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.group of two features with others between them",
|
||||
"source": "invariants",
|
||||
"method": "a folder holds one contiguous run of features: Block and Notch have Round and the sketch between them",
|
||||
"outcome": "refused",
|
||||
"refusal": "timeline folder `Split` must contain one contiguous run of features"
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.group",
|
||||
"params": {
|
||||
"name": "Split",
|
||||
"features": [
|
||||
"Block",
|
||||
"Notch"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.move_many of a folder (a sketch and its notch) to behind the round made after it",
|
||||
"method": "the order becomes Block, Round, sketch, Notch: round R2 on the whole 40 mm front top edge, then the 10x10x5 notch through it: V = 12000 - 500 - (1-pi/4) 4 (40-10) (the notch already holds the round's 10 mm in it); faces: 6 block + 4 notch (bottom, two sides, back) + the round in two pieces = 12",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11474.247779607695,
|
||||
"faces": 12,
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.group",
|
||||
"params": {
|
||||
"name": "Notch folder",
|
||||
"features": [
|
||||
"NotchSketch",
|
||||
"Notch"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.move_many",
|
||||
"params": {
|
||||
"groups": [
|
||||
5
|
||||
],
|
||||
"position": 4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.move_many of a folder into itself",
|
||||
"source": "invariants",
|
||||
"method": "a folder cannot hold itself",
|
||||
"outcome": "refused",
|
||||
"refusal": "a folder cannot be moved into itself or one of its descendants"
|
||||
}
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.group",
|
||||
"params": {
|
||||
"name": "Notch folder",
|
||||
"features": [
|
||||
"NotchSketch",
|
||||
"Notch"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.move_many",
|
||||
"params": {
|
||||
"groups": [
|
||||
4
|
||||
],
|
||||
"group": 4,
|
||||
"position": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.move_to_group of the round into the folder right after it",
|
||||
"method": "Round, the sketch and Notch are one contiguous run; no geometry changes: round R2 on the whole 40 mm front top edge, then the 10x10x5 notch through it: V = 12000 - 500 - (1-pi/4) 4 (40-10) (the notch already holds the round's 10 mm in it); faces: 6 block + 4 notch (bottom, two sides, back) + the round in two pieces = 12",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11474.247779607695,
|
||||
"faces": 12,
|
||||
"results": [
|
||||
{
|
||||
"step": 8,
|
||||
"json": {
|
||||
"features": [
|
||||
2
|
||||
],
|
||||
"group": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.group",
|
||||
"params": {
|
||||
"name": "Notch folder",
|
||||
"features": [
|
||||
"NotchSketch",
|
||||
"Notch"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.move_to_group",
|
||||
"params": {
|
||||
"features": [
|
||||
"Round"
|
||||
],
|
||||
"group": 5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.move_to_group of a cut into a folder its sketch is outside of",
|
||||
"source": "invariants",
|
||||
"method": "folder R would hold Round and Notch with the sketch between them: not one contiguous run",
|
||||
"outcome": "refused",
|
||||
"refusal": "timeline folder `R` must contain one contiguous run of features"
|
||||
}
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.group",
|
||||
"params": {
|
||||
"name": "R",
|
||||
"features": [
|
||||
"Round"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.move_to_group",
|
||||
"params": {
|
||||
"features": [
|
||||
"Notch"
|
||||
],
|
||||
"group": 5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.reorder of a cut to before its own sketch",
|
||||
"source": "invariants",
|
||||
"method": "the cut cannot find its sketch there: the move breaks a feature that worked and is refused",
|
||||
"outcome": "refused",
|
||||
"refusal": "moving Notch there breaks Notch"
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.reorder",
|
||||
"params": {
|
||||
"feature": "Notch",
|
||||
"position": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.reorder of a round made after a notch to before it: the round now runs the whole edge and the notch cuts it",
|
||||
"method": "round R2 on the whole 40 mm front top edge, then the 10x10x5 notch through it: V = 12000 - 500 - (1-pi/4) 4 (40-10) (the notch already holds the round's 10 mm in it); faces: 6 block + 4 notch (bottom, two sides, back) + the round in two pieces = 12",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11474.247779607695,
|
||||
"faces": 12,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
40,
|
||||
30,
|
||||
10
|
||||
]
|
||||
},
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.reorder",
|
||||
"params": {
|
||||
"feature": "Round",
|
||||
"position": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.reorder_many moves a notch's sketch and cut together behind the round",
|
||||
"method": "round R2 on the whole 40 mm front top edge, then the 10x10x5 notch through it: V = 12000 - 500 - (1-pi/4) 4 (40-10) (the notch already holds the round's 10 mm in it); faces: 6 block + 4 notch (bottom, two sides, back) + the round in two pieces = 12",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11474.247779607695,
|
||||
"faces": 12,
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.reorder_many",
|
||||
"params": {
|
||||
"features": [
|
||||
"NotchSketch",
|
||||
"Notch"
|
||||
],
|
||||
"position": 4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.reorder_many of a sketch to behind the cut that uses it",
|
||||
"source": "invariants",
|
||||
"method": "the cut comes before its sketch: it breaks, so the move is refused",
|
||||
"outcome": "refused",
|
||||
"refusal": "moving the selected features there breaks Notch"
|
||||
}
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.reorder_many",
|
||||
"params": {
|
||||
"features": [
|
||||
"NotchSketch"
|
||||
],
|
||||
"position": 4
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.roll_to the block alone, then to the end: every feature again",
|
||||
"method": "round R2 on the whole 40 mm front top edge, then the 10x10x5 notch through it: V = 12000 - 500 - (1-pi/4) 4 (40-10) (the notch already holds the round's 10 mm in it); faces: 6 block + 4 notch (bottom, two sides, back) + the round in two pieces = 12",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11474.247779607695,
|
||||
"faces": 12,
|
||||
"results": [
|
||||
{
|
||||
"step": 7,
|
||||
"json": {
|
||||
"marker": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 8,
|
||||
"json": {
|
||||
"marker": 4
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.roll_to",
|
||||
"params": {
|
||||
"position": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.roll_to",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.roll_to a negative position",
|
||||
"source": "invariants",
|
||||
"method": "a position counts the features to keep active (0 to 2): -1 is refused, not read as 0",
|
||||
"outcome": "refused",
|
||||
"refusal": "`position` -1 is negative"
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.roll_to",
|
||||
"params": {
|
||||
"position": -1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.roll_to a feature in the middle: the part is the one at that step",
|
||||
"method": "marker after Round (2 of 4 features active): 40x30x10 block with its front top edge rounded R2 along 40 mm: V = 12000 - (1-pi/4) 4 40; faces 6 + 1 = 7",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11965.663706143592,
|
||||
"faces": 7,
|
||||
"results": [
|
||||
{
|
||||
"step": 7,
|
||||
"json": {
|
||||
"marker": 2,
|
||||
"features": 4
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.roll_to",
|
||||
"params": {
|
||||
"feature": "Round"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.suppress on a through hole: the block is whole again",
|
||||
"method": "40x30x10 block, the hole suppressed: V = 12000; 6 faces",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 12000.0,
|
||||
"faces": 6,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
40,
|
||||
30,
|
||||
10
|
||||
]
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"step": 3,
|
||||
"json": {
|
||||
"feature": 2,
|
||||
"suppressed": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.hole",
|
||||
"params": {
|
||||
"position": [
|
||||
20,
|
||||
15,
|
||||
10
|
||||
],
|
||||
"diameter": 10,
|
||||
"name": "Hole"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.suppress",
|
||||
"params": {
|
||||
"feature": "Hole",
|
||||
"suppressed": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.suppress of a hole and a cut together",
|
||||
"method": "both suppressed: the plain 40x30x10 block, V = 12000, 6 faces",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 12000.0,
|
||||
"faces": 6,
|
||||
"results": [
|
||||
{
|
||||
"step": 7,
|
||||
"json": {
|
||||
"suppressed": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.hole",
|
||||
"params": {
|
||||
"position": [
|
||||
32,
|
||||
20,
|
||||
10
|
||||
],
|
||||
"diameter": 10,
|
||||
"name": "Hole"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.suppress",
|
||||
"params": {
|
||||
"features": [
|
||||
"Hole",
|
||||
"Notch"
|
||||
],
|
||||
"suppressed": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.suppress with no `suppressed` flips the hole off and back on",
|
||||
"method": "two toggles leave the hole: V = 12000 - pi 5^2 10; faces 6 + 1 cylinder = 7",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11214.601836602551,
|
||||
"faces": 7,
|
||||
"results": [
|
||||
{
|
||||
"step": 3,
|
||||
"json": {
|
||||
"suppressed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"step": 4,
|
||||
"json": {
|
||||
"suppressed": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.hole",
|
||||
"params": {
|
||||
"position": [
|
||||
20,
|
||||
15,
|
||||
10
|
||||
],
|
||||
"diameter": 10,
|
||||
"name": "Hole"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.suppress",
|
||||
"params": {
|
||||
"feature": "Hole"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.suppress",
|
||||
"params": {
|
||||
"feature": "Hole"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.suppress of a feature the design does not have",
|
||||
"source": "invariants",
|
||||
"method": "no feature named Nope: a clean refusal naming it",
|
||||
"outcome": "refused",
|
||||
"refusal": "no feature `Nope`"
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.suppress",
|
||||
"params": {
|
||||
"feature": "Nope",
|
||||
"suppressed": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.ungroup of a folder leaves its features and the part",
|
||||
"method": "folders are only the timeline's: round R2 on the whole 40 mm front top edge, then the 10x10x5 notch through it: V = 12000 - 500 - (1-pi/4) 4 (40-10) (the notch already holds the round's 10 mm in it); faces: 6 block + 4 notch (bottom, two sides, back) + the round in two pieces = 12",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11474.247779607695,
|
||||
"faces": 12,
|
||||
"results": [
|
||||
{
|
||||
"step": 8,
|
||||
"json": {
|
||||
"groups": [
|
||||
5
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"source": "analytic"
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"body": "Block",
|
||||
"edges": [
|
||||
[
|
||||
5,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"radius": 2,
|
||||
"name": "Round"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 10,
|
||||
"name": "NotchSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "NotchSketch",
|
||||
"distance": -5,
|
||||
"operation": "cut",
|
||||
"name": "Notch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.group",
|
||||
"params": {
|
||||
"name": "Notch folder",
|
||||
"features": [
|
||||
"NotchSketch",
|
||||
"Notch"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.ungroup",
|
||||
"params": {
|
||||
"group": 5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "timeline.ungroup of a folder that does not exist",
|
||||
"source": "invariants",
|
||||
"method": "no folder 99: a clean refusal",
|
||||
"outcome": "refused",
|
||||
"refusal": "no timeline folder 99"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block",
|
||||
"name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.ungroup",
|
||||
"params": {
|
||||
"group": 99
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user