Files
OneCAD/examples/demo/enclosure_steps.json

266 lines
4.2 KiB
JSON

{
"description": "An electronics enclosure built over MCP, one command at a time (examples/demo/enclosure_mcp.py). Each step: an MCP `execute` call; `caption` is shown in the video, `pause` (s) is the wait after it, `view` then animates the app's camera to that view. A lip on the rim is left out until issue #29 (Lip on a rounded rim) is fixed.",
"steps": [
{
"caption": "User parameters: width, depth, height, wall",
"command": "parameters.change",
"params": {
"name": "width",
"expression": "80 mm",
"comment": "outside, X"
}
},
{
"caption": "",
"command": "parameters.change",
"params": {
"name": "depth",
"expression": "60 mm",
"comment": "outside, Y"
},
"pause": 0.6
},
{
"caption": "",
"command": "parameters.change",
"params": {
"name": "height",
"expression": "30 mm"
},
"pause": 0.6
},
{
"caption": "",
"command": "parameters.change",
"params": {
"name": "wall",
"expression": "2 mm"
},
"pause": 0.6
},
{
"caption": "Sketch on XY",
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "Outline"
}
},
{
"caption": "Center rectangle",
"command": "sketch.rectangle.center",
"params": {
"center": [
0,
0
],
"corner": [
40,
30
]
}
},
{
"caption": "Centre it on the origin",
"command": "sketch.constraint.coincident",
"params": {
"a": "p5",
"b": "origin"
}
},
{
"caption": "Dimension: width",
"command": "sketch.dimension",
"params": {
"entities": [
"l1"
],
"value": "width"
}
},
{
"caption": "Dimension: depth",
"command": "sketch.dimension",
"params": {
"entities": [
"l2"
],
"value": "depth"
}
},
{
"caption": "Finish sketch",
"command": "sketch.finish",
"params": {}
},
{
"caption": "Extrude by height",
"command": "solid.extrude",
"params": {
"distance": "height",
"body_name": "Enclosure"
},
"view": "home"
},
{
"caption": "Round the vertical edges (6 mm)",
"command": "solid.fillet",
"params": {
"edges": [
[
40,
30,
15
],
[
-40,
30,
15
],
[
-40,
-30,
15
],
[
40,
-30,
15
]
],
"radius": 6
}
},
{
"caption": "Shell it open at the top (wall)",
"command": "solid.shell",
"params": {
"faces": [
[
0,
0,
30
]
],
"thickness": "wall"
}
},
{
"caption": "Sketch on YZ for the USB port",
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "USB port"
}
},
{
"caption": "Port outline",
"command": "sketch.rectangle.center",
"params": {
"center": [
0,
12
],
"corner": [
6,
15.5
]
}
},
{
"caption": "Finish sketch",
"command": "sketch.finish",
"params": {}
},
{
"caption": "Cut through the side wall",
"command": "solid.extrude",
"params": {
"through_all": true,
"operation": "cut"
}
},
{
"caption": "Screw boss",
"command": "plastic.boss",
"params": {
"position": [
-30,
-20,
2
],
"diameter": 7,
"height": 12,
"hole_diameter": 2.5
}
},
{
"caption": "Screw boss",
"command": "plastic.boss",
"params": {
"position": [
30,
-20,
2
],
"diameter": 7,
"height": 12,
"hole_diameter": 2.5
}
},
{
"caption": "Screw boss",
"command": "plastic.boss",
"params": {
"position": [
30,
20,
2
],
"diameter": 7,
"height": 12,
"hole_diameter": 2.5
}
},
{
"caption": "Screw boss",
"command": "plastic.boss",
"params": {
"position": [
-30,
20,
2
],
"diameter": 7,
"height": 12,
"hole_diameter": 2.5
}
},
{
"caption": "Change one parameter: width 80 \u2192 100 mm",
"command": "parameters.change",
"params": {
"name": "width",
"expression": "100 mm"
},
"pause": 4
}
]
}